SpringCloud基础组件总结与Dubbo框架SpringBoot框架对比分析

28次阅读

共计 2186 个字符,预计需要花费 6 分钟才能阅读完成。

一、基础组件总结

1、文章阅读目录

1)、基础组件

Eureka 组件,服务注册与发现

Ribbon 和 Feign 组件,实现负载均衡

Hystrix 组件,实现服务熔断

Turbine 组件,实现微服务集群监控

Zuul 组件,实现路由网关控制

Config 组件,实现配置统一管理

Zipkin 组件,实现请求链路追踪

2)、应用案例

基于 Shard-Jdbc 分库分表,数据库扩容方案

基于 SpringCloud 实现 Shard-Jdbc 的分库分表扩容

3)、后续更新

该案例主要基于 SpringCloud2 版本,演示微服务在实际开发中的应用。

<modules>
    <!-- 客户端接口层 -->
    <module>storey-client-web</module>
    <!-- 公共代码块层 -->
    <module>storey-block-code</module>
    <!-- 中间件管理层 -->
    <module>storey-middle-soft</module>
    <!-- 数据 中 心层 -->
    <module>storey-data-center</module>
    <!-- 微服务组件层 -->
    <module>storey-cloud-ware</module>
</modules>

采用版本

  • Spring:5.0+
  • SpringBoot:2.0+
  • SpringCloud: 2.0+

2、常用组件概念

  • Eureka 组件

Eureka 是一种基于 REST 的服务,主要用于 AWS 云,用于定位服务,以实现中间层服务器的负载平衡和故障转移。此服务称为 EurekaServer。客户端组件 EurekaClient,它使与服务的交互变得更加容易。

  • Ribbon 和 Feign 组件

Ribbon 是一个客户端的负载均衡(Load Balancer,简称 LB)器,它提供对大量的 HTTP 和 TCP 客户端的访问控制。

Feign 是一个声明式的 Web Service 客户端。它的出现使开发 Web Service 客户端变得很简单。使用 Feign 只需要创建一个接口加上对应的注解,比如:@FeignClient 接口类注解。

  • Hystrix 组件

微服务架构中某个微服务发生故障时,要快速切断服务,提示用户,后续请求,不调用该服务,直接返回,释放资源,这就是服务熔断。

  • Turbine 组件

微服务架构中为了保证程序的可用性,防止程序出错导致网络阻塞,出现了断路器模型。断路器的状况反应程序的可用性和健壮性,它是一个重要指标。HystrixDashboard 是作为断路器状态的一个组件,提供了数据监控和直观的图形化界面。

  • Zuul 组件

Zuul 网关主要提供动态路由,监控,弹性,安全管控等功能。在分布式的微服务系统中,系统被拆为了多个微服务模块,通过 zuul 网关对用户的请求进行路由,转发到具体的后微服务模块中。

  • Config 组件

在微服务系统中,服务较多,相同的配置:如数据库信息、缓存、参数等,会出现在不同的服务上,如果一个配置发生变化,需要修改很多的服务配置。spring cloud 提供配置中心,来解决这个场景问题。

  • Zipkin 组件

Zipkin 是 SpringCloud 微服务系统中的一个组件,实现了链路追踪解决方案。可以定位一个请求到底请求了哪些具体的服务。在复杂的微服务系统中,如果请求发生了异常,可以快速捕获问题所在的服务。

二、Boot 对比 Cloud

SpringBoot 专注于快速开发单个微服务。SpringCloud 是关注全局的微服务协调框架,它将 SpringBoot 开发的单个微服务整合管理,并为微服务之间提供,配置管理、服务发现、断路器、路由网关等集成服务,SpringCloud 依赖 SpringBoot。

三、Dubbo 对比 Cloud

1、调用方式对比

服务调用方式是 Dubbo 和 Spring Cloud 重要不同点, 熟悉 RPC/HTTP/REST 概念,有助对比 Dubbo 和 SpringCloud。RPC 是远端过程调用,其调用协议通常包含传输协议和编码协议。RPC 调用是面向服务的封装,针对服务的可用性和效率等都做了优化。http 是超文本传输协议,RPC 也可以用 http 作为传输协议,但一般是用 tcp 作为传输协议。

2、执行性能对比

Dubbo 采用单一长连接和 NIO 异步通讯(保持连接 / 轮询处理),使用自定义报文的 TCP 协议,并且序列化使用定制 Hessian2 框架,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况,但不适用于传输大数据的服务调用。Spring Cloud 直接使用 HTTP 协议,在性能上弱于 Dubbo。

3、注册中心对比

这里通常指 ZooKeeper(Dubbo 注册中心) 和 Eureka(Cloud 注册中心) 的对比。分布式领域著名的 CAP 理论(C:数据一致性,A:服务可用性,P:分区故障的容错性),Zookeeper 保证的是 CP,但对于服务发现而言,可用性比数据一致性更加重要,AP 胜过 CP,而 Eureka 设计则遵循 AP 原则。

4、框架生态对比

Dubbo 专注 RPC 和服务治理,Spring Cloud 则是一个微服务架构生态。

四、源代码地址

GitHub 地址:知了一笑
https://github.com/cicadasmile/spring-cloud-base
GitEE 地址:知了一笑
https://gitee.com/cicadasmile/spring-cloud-base

正文完
 0