转载

微服务架构

一、单体架构

1. 单体架构的简介

微服务架构

2. 单体架构的架构图

微服务架构

3. 单体架构的优点

微服务架构

4. 单体架构的缺点

微服务架构

二、微服务架构

1. 微服务架构的简介

  • 微服务是指开发一个单个小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上。
  • 微服务也指一种种松耦合的、有一定的有界上下文的面向服务架构,如果每个服务都要同时修改,那么它们就不是微服务,因为它们紧耦合在一起;如果你需要掌握一个服务太多的上下文场景使用条件,那么它就是一个有上下文边界的服务。

2. 微服务架构的架构图

微服务架构

微服务架构

3. 微服务架构的设计原则

  • 拆分足够小
  • 服务与服务之间轻量级通信

4. 微服务架构的优点

  • 相对于单体架构,它的主要特点是组件化、松耦合、自治、去中心化。
  • 一组小的服务其服务粒度要小,而每个服务是针对一个单一职责的业务能力的封装,专注做好一件事情。
  • 独立部署运行和扩展 :每个服务能够独立被部署并运行在一个进程内。这种运行和部署方式能够赋予系统灵活的代码组织方式和发布节奏,使得快速交付和应对变化成为可能。
  • 独立开发和演化:技术选型灵活,不受遗留系统技术约束。合适的业务问题选择合适的技术可以独立演化。服务与服务之间采取与语言无关的API进行集成。相对单体架构,微服务架构是更面向业务创新的一种架构模式。
  • 独立团队和自治 :团队对服务的整个生命周期负责,工作在独立的上下文中,自己决策自己治理,而不需要统一的指挥中心。团队和团队之间通过松散的社区部落进行衔接。

5. 微服务架构的缺点

  • 服务拆分微服务架构可能带来过多的操作
  • 分布式系统可能复杂难以管理,因为分布部署跟踪问题难。
  • 分布式事务比较难处理
  • 当服务数量增加,管理复杂性增加。

6. 微服务架构的拆分思路

6.1 横向拆分:根据业务来拆分

微服务架构

6.2 纵向拆分:根据层次来拆分

微服务架构

7. 微服务架构的选择

7.1 Dubbo(RPC)

7.1.1 Dubbo

  • Dubbo是阿里集团开源的一个极为出名的RPC框架,在很多互联网公司和企业应用中广泛使用。
  • 协议和序列化框架都可以插拔是及其鲜明的特色。
  • 远程接口是基于Java Interface,并且依托于Spring框架方便开发。
  • 可以方便的打包成单一文件,独立进程运行,和现在的微服务概念一致。
  • Dubbo目前是一种广泛使用的微服务架构框架。

7.1.2 RPC

  • RPC,Remote Process Call ,即跨进程调用
  • RPC的本质是提供了一种轻量无感知的跨进程通信的方式,在分布式机器上调用其他方法与本地调用无异(远程调用的过程是透明的,你并不知道这个调用的方法是部署在哪里,通过PRC能够解耦服务)
  • RPC是根据语言的API来定义的,而不是基于网络的应用来定义的,调用更方便,协议私密更安全、内容更小效率更高。

微服务架构

  • 客户端(Client),服务的调用方。
  • 服务端(Server),真正的服务提供者。
  • 客户端存根,存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后通过网络远程发送给服务方。
  • 服务端存根,接收客户端发送过来的消息,将消息解包,并调用本地的方法。
  • 基于TCP/IP协议。速度快。

微服务架构

7.2 SpringCloud(HTTP)

7.2.1 SpringCloud

  • Spring Cloud来源于Spring,利用Spring Boot进行快捷开发。
  • Spring Cloud基本上都是使用了现有的开源框架进行的集成,学习的难度和部署的门槛就比较低,对于中小型企业来说,更易于使用和落地。
  • Spring Cloud 核心组件Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现,这也是Spring Cloud体系中最重要最核心的组件之一。

7.2.2 HTTP

  • 应用层协议,简单。
  • HTTP接口是在接口不多、系统与系统交互较少的情况下,解决信息孤岛初期常使用的一种通信手段;优点就是简单、直接、开发方便。利用现成的HTTP协议 进行传输。

    • 使用HTTP协议的微服务,通常返回JSON数据,然后把JSON转换为对象。

7.3 小结

  • RPC服务和HTTP服务还是存在很多的不同点的:

    • 一般来说,RPC服务主要是针对大型企业的,而HTTP服务主要是针对小企业的
    • 因为RPC效率更高,而HTTP服务开发迭代会更快。
  • 选用什么样的框架不是按照市场上流行什么而决定的,而是要对整个项目进行完整地评估。

8. 微服务架构的基本概念

8.1 服务提供者(Provider)

  • 提供服务的具体实现
  • 同一个微服务,既可以是provider,也可以是consumer。

8.2 服务调用者(Consumer)

  • 通过一些框架来调用服务提供者提供的服务
  • 同一个微服务,既可以是provider,也可以是consumer。
原文  https://segmentfault.com/a/1190000020184127
正文到此结束
Loading...