微服务spring cloud及Dubbo
Dubbo、Spring Cloud是当前开源上可选用的微服务框架
微服务的核心要素在于服务的发现、注册、路由、熔断、降级、分布式配置
比较spring cloud和dubbo,各自的优缺点是什么
Dubbo
下图中的每个组件都是需要部署在单独的服务器上,Gateway 用来接受前端请求、聚合服务,并批量调用后台原子服务。每个 Service 层和单独的 DB 交互。
Dubbo 组件运行:
- Gateway:前置网关,具体业务操作,Gateway 通过 Dubbo 提供的负载均衡机制自动完成。
- Service:原子服务,只提供该业务相关的原子服务。
- Zookeeper:原子服务注册到 ZK 上。
Spring Cloud
Eureka:微服务治理,服务注册和发现
ribbon:负载均衡、请求重试
hystrix:断路器,服务降级、熔断
feignribbon + hystrix :集成,并提供声明式客户端
hystrix dashboard 和 turbinehystrix:数据监控
zuulAPI :网关,提供微服务的统一入口,并提供统一的权限验证
config:配置中心
bus:消息总线, 配置刷新
sleuth+zipkin:链路跟踪
Spring Cloud组件运行:
- 所有请求都统一通过 API 网关(Zuul)来访问内部服务。
- 网关接收到请求后,从注册中心(Eureka)获取可用服务。
- 由 Ribbon 进行均衡负载后,分发到后端的具体实例。
- 微服务之间通过 Feign 进行通信处理业务。
点评:业务部署方式相同,都需要前置一个网关来隔绝外部直接调用原子服务的风险。
Dubbo 需要自己开发一套 API 网关,而 Spring Cloud 则可以通过 Zuul 配置即可完成网关定制。使用方式上 Spring Cloud 略胜一筹。