微服务架构 与 Dubbo 微服务框架、SpringCloud 微服务框架 详解

  • Post author:
  • Post category:其他




微服务架构 与 Dubbo 微服务框架、SpringCloud 微服务框架 详解



什么是微服务架构?

  • 微服务架构就是

    将单体的应用程序分成多个应用程序

    ,这

    一个应用程序就组成一个服务



    这多个应用程序就组成服务体系(微服务)

    ,这种这种方式组成的服务架构称为

    微服务架构

  • 每个微服务

    运行在自己的进程中

    ,并使用轻量级的机制

    通信

  • 这些服务

    围绕业务能力来划分

    ,并通过自动化部署机制来

    独立部署

  • 这些服务

    可以使用不同的编程语言



    不同数据库

    ,以保证

    最低限度的集中式管理

  • 提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。


  • 每个服务都有自己的堆载、数据库和数据模型

    。松散耦合。


  • 通过 Rest API、事件流和消息代理的组合相互通信



微服务框架有哪些?微服务组件又有哪些,用来干什么的?

  • 微服务组件主要有 9 种:

    服务注册中心、服务调用、服务网关、熔断器、分布式配置、服务跟踪、数据流、批量任务

  • 常用的 微服务框架 有 Dubbo 和 SpringCloud,其中,

    SpringCloud 框架中微服务组件丰富、版本更新快



    Dubbo 框架只提供服务远程调用、负载均衡、服务注册三个功能组件,同时方便其他的组件接入



Dubbo 微服务框架

  • 是一个

    高性能、轻量级的开源 Java RPC 框架

    ,阿里巴巴开发,后捐赠给 Apache。

  • 提供

    服务远程调用、负载均衡、服务自动注册

    三个核心功能组件。


  • Dubbo 官网



Dubbo 微服务框架 结构图

在这里插入图片描述

  • init(初始化)、async(异步)、sync(同步)。

  • Dubbo 的模块对象及其功能:


    • Registry(服务注册中心):负责服务注册与发现


    • Consumer(服务消费者):就是使用服务的程序


    • Provider(服务提供者):将注册中心中的服务暴露出来,使其可以被调用


    • Container(服务运行容器):服务的提供在此实现


    • Monitor(服务监控中心):统计服务的调用次数和调用时间

  • 流程 说明:

    • 0.start:

      服务运行容器(Container)运行起来并提供服务

    • 1.register:

      服务提供商(Provider)将服务注册到 服务注册中心(Registry)

    • 2.subscribe:

      服务消费者(Consumer)从服务注册中心(Registry)获取服务

    • 3.notify:

      服务注册中心(Registry)将最新的服务信息推送给服务消费者(Consumer)

    • 4.invoke:

      保证服务的供给、不中断

    • 5.count:

      为服务消费者(Consumer)和服务提供商(Provider) 提供数据统计服务



特点

  • 提供高性能的

    远程调用功能

    ,以接口粒度提供服务,屏蔽远程调用底层相关细节。


  • 自动的负载均衡功能

    ,通过各种负载均衡策略,自动调节资源使用情况。

  • 服务自动注册与发现∶支持

    多种注册中心服务

    ,服务实例上下线

    实时感知


  • 高度可扩展能力

    :遵循微「内核+插件」的设计原则,所有核心能力(如 Protocol、Transport、Serialization)被设计为扩展点,平等对待内置实现和第三方实现。


  • 运行期流量调度

    :内置条件、脚本等路由策略,配置不同的路由规则,可以轻松实现灰度发布,以及同一机房服务优先调用等功能。

  • 可视化的服务治理与运维:提供

    丰富的服务治理和运维工具

    ,如 随时查询服务元数据、服务健康状态及调用统计,以及实时下发路由策略、调整配置参数。



SpringCloud 微服务框架



SpringCloud 是什么?

  • Spring Cloud 是

    一系列微服务开发框架的有序集合

  • 这一系列微服务开发框架有:

    服务发现注册、配置中心、智能路由、消息总线、负载均衡、断路器、数据监控

    等等。

  • SpringCloud 就是基于 SpringBoot 把市场上优秀的服务框架组合起来,再进行封装屏蔽掉了复杂的配置和实现原理。

  • Spring Cloud

    保留了 SpringBoot 的开发风格

    ,做到可以直接用 SpringBoot 风格

    一键式开发部署


  • Spring Cloud 官网



SpringCloud 微服务框架 组件



核心组件:EureKa,服务注册中心
  • 是微服务架构中的

    注册中心

  • 专门负责

    服务的注册与发现

  • Eureka Server:注册中心,里面有一个

    注册表,保存了各服务所在的机器和端口号

  • Eureka Client:注册负责器,负责将这个服务的信息注册到 Eureka Server 中。



核心组件:Feign,服务调用
  • 传统的服务调用是:直接通过 HTTP URL 生成请求,添加参数、设置请求头,然后获得发送状态。

  • Feign 的一个关键机制就是使用了

    动态代理

  • 用注解定义一个 FeignClient 接口,然后调用那个接口就可以了。

  • Feign Client 会在底层根据你的注解,跟你指定的服务

    建立连接、构造请求、发起靕求、获取响应、解析响应

    ,等等

  • Feign是一个使用起来更加方便的 HTTP 客户端,采用接口的方式,只需要创建一个接口,然后在上面添加注解即可,将需要调用的其他服务的方法定义成抽象方法即可,不需要自己构建 HTTP 请求。



核心组件:Ribbon,负载均衡
  • 作用:在每次请求时选择一台机器,

    均匀的把请求分发到各个机器上

  • Ribbon 的负载均衡默认使用的最经典的

    Round Robin 轮询算法(就是每个机器都处理请求一次,然后循环)



核心组件:Hystrix,隔离、熔断以及降级
  • 服务雪崩问题:当一个服务(服务 A)崩溃后,在高并发场景下,大量的请求进入,其他线程因为要访问服务 A,也进入阻塞状态,无响应,这就是服务雪崩。

  • Hystrix 是

    隔离、熔断以及降级

    的一个框架。

  • 根据服务的分类,

    创建多个线程池,每个线程池只负责一项单独的服务(隔离)

    。某个

    服务崩溃后,会在一定时间后直接跳出该服务的调用(熔断

    ),并

    添加服务调用失败记录(降级)

    ,后续用来手动调用完成服务。



核心组件:Zuul,网关
  • 负责网络路由的,

    统一请求的入口,Zuul 根据请求中的特征,将请求转发给后端的各个服务

  • 请求

    不用去关心后端有几百个服务,就知道有一个网关

    ,所有请求都往网关走。

  • 网关记录了:服务名称、服务所在的机器的位置(地址,URL)。



SpringCloud 微服务框架 结构图

在这里插入图片描述


  • 所有的服务都要注册到 EureKa Server 中


  • 服务的调用统一使用 Feign


  • Ribbon 均衡服务的调用


  • 前端的请求统一走 Zull 网关


  • Monitor 监控所有服务



Spring Cloud 和 Spring Boot 版本对应关系

Spring Cloud Version SpringBoot Version
Hoxton 版本 兼容 Spring Boot 2.2.x
Greenwich 版本 兼容 Spring Boot 2.1.x,不兼容 Spring Boot 2.0.x
Finchley 版本 兼容 Spring Boot 2.0.x,不兼容 Spring Boot 1.5.x
Edgware 版本、Dalston 版本 兼容 Spring Boot 1.5.x,不兼容 Spring Boot 2.0.x
Camden 版本 兼容 Spring Boot 1.4.x,也兼容 Spring Boot 1.5.x
Brixton 版本 兼容 Spring Boot 1.3.x,也兼容 Spring Boot 1.4.x
Angel 版本 兼容 Spring Boot 1.2.x



特点

  • 约定优于配置

  • 开箱即用、快速启动

  • 适用于各种环境

  • 轻量级的组件

  • 组件支持丰富,功能齐全



Dubbo 微服务框架 和 SpringCloud 微服务框架的 对比

组件 Dubbo 微服务框架 SpringCloud 微服务框架
服务注册中心 ZooKeeper Spring Cloud Neiflix Eureka
服务调用方式 RPC REST FUL API
服务网关 无,需要外接 Spring Cloud Netflix Zuul
熔断器 不完善,建议外接 Spring Cloud Netflix Hystrix
分布式配置 无,需要外接 Spring Cloud Config
服务跟踪 无,需要外接 Spring Cloud Sleuth
消息总线 无,需要外接 Spring Cloud Bus
数据流 无,需要外接 Spring Cloud Stream
批量任务 无,需要外接 Spring Cloud Task



版权声明:本文为weixin_46766584原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。