zoukankan      html  css  js  c++  java
  • 一起玩转微服务(4)——如何实施微服务

    一、如何实施微服务

    微服务是一种架构的理念,提出了微服务的设计原则,从理论为具体的技术落地提供了指导思想。
    实施微服务需要具备以下条件:

    • 计算和存储资源能否快速的分配
    • 是否具备快速部署的能力,因为微服务每个服务都比较微小,所以不管是测试环境还是生产环境都需要快速部署的能力
    • 基本的监控,包括CPU、内存、网络等
    • 标准化的RPC

    Spring Boot 是一套快速配置脚手架,可以基于 Spring Boot 快速开发单个微服务。
    Spring Cloud 是一个基于 Spring Boot 实现的服务治理工具包;Spring Boot 专注于快速、方便集成的单个微服务个体;Spring Cloud 关注全局的服务治理框架。
    Spring Boot / Cloud 是微服务实践的最佳落地方案。
    当然,微服务的设计还对运维提出了更高的要求,如何进行自动构建,如何进行自动发布,对于应用程序的质量管理以及遇到峰值时如何通过横向扩展、弹性伸缩对于整个技术团队都提出了更高的要求。

    二、最流行6种微服务RPC技术

     

    开源 RPC 框架有哪些呢?

    一类是跟某种特定语言平台绑定的,另一类是与语言无关即跨语言平台的。
    跟语言平台绑定的开源 RPC 框架主要有下面几种。

    • Dubbo:国内最早开源的 RPC 框架,由阿里巴巴公司开发并于 2011 年末对外开源,仅支持 Java 语言。
    • Motan:微博内部使用的 RPC 框架,于 2016 年对外开源,仅支持 Java 语言。
    • Tars:腾讯内部使用的 RPC 框架,于 2017 年对外开源,仅支持 C++ 语言。
    • Spring Cloud:国外 Pivotal 公司 2014 年对外开源的 RPC 框架,仅支持 Java 语言

    而跨语言平台的开源 RPC 框架主要有以下几种。

    • gRPC:Google 于 2015 年对外开源的跨语言 RPC 框架,支持多种语言。
    • Thrift:最初是由 Facebook 开发的内部系统跨语言的 RPC 框架,2007 年贡献给了 Apache 基金,成为 Apache 开源项目之一,支持多种语言。

    三、rest

    1. 什么是REST

    REST是一种架构风格,指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。REST规范把所有内容都视为资源,网络上一切皆资源。

    REST并没有创造新的技术,组件或服务,只是使用Web的现有特征和能力。 可以完全通过HTTP协议实现,使用 HTTP 协议处理数据通信。REST架构对资源的操作包括获取、创建、修改和删除资源的操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。

    REST与RPC比较

    比较项        规范 REST RPC
    通信协议 HTTP 一般使用TCP
    性能
    灵活度

    高与低是对实现两种规范框架的相对比较,但也不是绝对的,需要根据实际情况而定。

    都是网络交互的协议规范。通常用于多个微服务之间的通信协议。

    2. REST与RPC应用场景

    REST和RPC都常用于微服务架构中。

    • HTTP相对更规范,更标准,更通用,无论哪种语言都支持http协议。如果你是对外开放API,例如开放平台,外部的编程语言多种多样,你无法拒绝对每种语言的支持,现在开源中间件,基本最先支持的几个协议都包含RESTful。

    RPC在微服务中的作用,RPC 框架作为架构微服务化的基础组件,它能大大降低架构微服务化的成本,提高调用方与服务提供方的研发效率,屏蔽跨进程调用函数(服务)的各类复杂细节。让调用方感觉就像调用本地函数一样调用远端函数、让服务提供方感觉就像实现一个本地函数一样来实现服务。

  • 相关阅读:
    1144 The Missing Number (20分)
    1145 Hashing
    1146 Topological Order (25分)
    1147 Heaps (30分)
    1148 Werewolf
    1149 Dangerous Goods Packaging (25分)
    TypeReference
    Supervisor安装与配置()二
    谷粒商城ES调用(十九)
    Found interface org.elasticsearch.common.bytes.BytesReference, but class was expected
  • 原文地址:https://www.cnblogs.com/skyme/p/13156700.html
Copyright © 2011-2022 走看看