微服务选型

一、 什么是微服务
所谓的微服务是SOA架构下的最终产物,该架构的设计目标是为了肢解业务,使得服务能够独立运行。

二、 背景
随着Internet的快速发展,Web应用程序的规模不断扩大,最终我们发现传统的垂直架构(单片机)无法再处理这个问题。分布式服务架构和流量计算架构势在必行,迫切需要一个治理系统来确保架构的有序演进。
微服务选型_第1张图片

  • 单片架构
    当流量非常低时,只有一个应用程序,所有功能都部署在一起,以减少部署节点和成本。此时,数据访问框架(ORM)是简化CRUD工作负载的关键。
  • 垂直结构
    当流量变大时,添加单片应用程序实例无法很好地加速访问,提高效率的一种方法是将单片机拆分为离散应用程序。此时,用于加速前端页面开发的Web框架(MVC)是关键。
  • 分布式服务架构
    当越来越多的垂直应用程序,应用程序之间的交互是不可避免的,一些核心业务被提取并作为独立服务,逐步形成一个稳定的服务中心,这样前端应用程序可以很快地响应市场需求的变化。此时,用于业务重用和集成的分布式服务框架(RPC)是关键。
  • 流量计算架构
    当服务越来越多时,容量评估变得困难,小规模的服务也经常导致资源浪费。为了解决这些问题,应该添加一个调度中心来管理基于流量的集群容量,并提高集群的利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。
    三、 优点和缺点
    优点:
  • 按照业务划分子系统,避免单个系统过于庞大,降低更新和修复的困难度
  • 各个子系统松耦合,独立提供服务,避免单功能故障影响整个系统
  • 支持业务横向扩充,可充分利用机器资源,扩展服务集群数量
  • 可以通过虚拟化工具,快速部署,增强持续交付能力
  • 结合云平台物理资源,不降低性能的前提下,降低企业硬件成本
    缺点:
  • 服务整体架构复杂,拆分能力面临挑战
  • 独立系统众多,增加运维难度
  • 各个子系统调用复杂,排查问题难度增加
    四、 应用场景
    面临复杂众多的功能模块,有高可用、易拓展、快速交付的需求。
    应用行业包括金融、电商、安全等
    五、 开源主流框架对比
  1. dubbo
    微服务选型_第2张图片
     Provider: 暴露服务的服务提供方。
     Consumer: 调用远程服务的服务消费方。
     Registry: 服务注册与发现的注册中心。
     Monitor: 统计服务的调用次调和调用时间的监控中心。
     Container: 服务运行容器。
  2. spring cloud
    微服务选型_第3张图片
     Service Provider: 暴露服务的提供方。
     Service Consumer:调用远程服务的服务消费方。
     EureKa Server: 服务注册中心和服务发现中心。
    从整体架构上来看,二者模式接近,都需要需要服务提供方,注册中心,服务消费方。
    六、 技术选型
  • 两者服务组件对比:
    -
    Dubbo Spring cloud -
    务注册中心 Zookeeper Nacos Eureka\Nacos(alibaba)
    务网关 Gateway Zuul\Gateway
    息总线 Bus
    路器 Hystrix
    务跟踪 Sleuth
    务调用方式 RPC Restful API
  • 两者支持协议对比:
    -
    - rmi hession http webservicer redis
    -spring Cloud
    -dubbo
  • 选型依据:
    Dubbo 默认采用dubbo协议,采用单一长连接和 NIO 异步通讯(保持连接/轮询处理),使用自定义报文的 TCP 协议,并且序列化使用定制 Hessian2 框架,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况,但不适用于传输大数据的服务调用。
    Spring Cloud 直接使用 HTTP 协议(但也不是强绑定,也可以使用 RPC 库,或者采用 HTTP 2.0 + 长链接方式(Fegin 可以灵活设置))

你可能感兴趣的:(学习)