微服务spring cloud及Dubbo

Dubbo、Spring Cloud是当前开源上可选用的微服务框架

微服务的核心要素在于服务的发现、注册、路由、熔断、降级、分布式配置

比较spring cloud和dubbo,各自的优缺点是什么

网易考拉海购Dubbok框架优化详解 

微服务spring cloud及Dubbo

Dubbo

下图中的每个组件都是需要部署在单独的服务器上,Gateway 用来接受前端请求、聚合服务,并批量调用后台原子服务。每个 Service 层和单独的 DB 交互。

Dubbo 组件运行:

  • Gateway:前置网关,具体业务操作,Gateway 通过 Dubbo 提供的负载均衡机制自动完成。
  • Service:原子服务,只提供该业务相关的原子服务。
  • Zookeeper:原子服务注册到 ZK 上。

微服务spring cloud及Dubbo

Spring Cloud

微服务spring cloud及Dubbo

Eureka:微服务治理,服务注册和发现

ribbon:负载均衡、请求重试  

hystrix:断路器,服务降级、熔断  

feignribbon + hystrix :集成,并提供声明式客户端  

hystrix dashboard 和 turbinehystrix:数据监控  

zuulAPI :网关,提供微服务的统一入口,并提供统一的权限验证  

config:配置中心  

bus:消息总线, 配置刷新  

sleuth+zipkin:链路跟踪

微服务spring cloud及Dubbo

Spring Cloud组件运行:

  • 所有请求都统一通过 API 网关(Zuul)来访问内部服务。
  • 网关接收到请求后,从注册中心(Eureka)获取可用服务。
  • 由 Ribbon 进行均衡负载后,分发到后端的具体实例。
  • 微服务之间通过 Feign 进行通信处理业务。

点评:业务部署方式相同,都需要前置一个网关来隔绝外部直接调用原子服务的风险。

Dubbo 需要自己开发一套 API 网关,而 Spring Cloud 则可以通过 Zuul 配置即可完成网关定制。使用方式上 Spring Cloud 略胜一筹。