实现微服务的首要条件是选择适合团队的微服务框架。目前市面上的微服务框架有很多,无论是开源的还是收费的,比如Dubbo、SpringCloud、Tars、Helidon、SOFAStack、gRPC、Thrift、Brpc、Motan等,需要掌握以下技术点选择框架时考虑。◎服务发布与订阅:自动发现与注册,或手动在线注册。◎服务路由形式:框架支持的服务路由(比如常用的随机路由)是否满足我们的需求,或者是否支持自定义路由。◎集群容错:集群容错支持的方法,如快速故障、自动故障转移等常见的容错方法。◎调用方式:服务调用方式是否支持同步、异步、并行调用。◎通信协议:通信协议是否满足业务需求,是否支持自定义协议。◎序列化方式:框架支持的序列化方式是二进制序列化还是文本序列化。所以在框架选择上纠结是用Dubbo还是SpringCloud?Dubbo是阿里巴巴(即阿里巴巴集团)开源的一个高性能、轻量级的开源优秀Java版RPC框架,让应用通过高性能RPC实现服务输出/输入功能,并可以与Spring框架集成。Dubbo具有三大核心能力:(1)面向接口的远程方法调用(2)提供容错和多种负载均衡策略(3)服务自动注册和发现功能SpringCloud是Spring家族的产物,专注于企业级开源框架SpringBoot的研发利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发。比如服务发现注册、配置中心、消息总线、负载均衡、熔断器、数据监控等特性,都可以通过SpringBoot风格一键部署启动。下面我们就Dubbo和SpringCloud在整体架构和编程方式上做一个详细的比较,从而确定使用哪个框架。总体架构对比Dubbo架构Dubbo的架构概览如图1-7所示,由Consumer、Provider、Registry、Container和Monitor五部分组成。◎Consumer:调用远程服务的服务消费者(或服务消费者)。◎Provider:暴露服务的服务提供者(或服务提供者),可以通过jar或容器来启动服务。◎Registry:服务注册中心和发现中心。◎Container:运行服务的容器。◎监控:呼叫时间监控中心,统计服务和呼叫次数。SpringCloud架构SpringCloud架构概览如图1-8所示,由三部分组成:Consumer、Provider、EurekaServer。◎Provider:暴露服务的提供者。◎Consumer:调用远程服务的服务消费者。◎EurekaServer:服务注册中心和服务发现中心。编程方式对比Dubbo的服务发布和调用流程如下。(1)先定义接口和DTO参数对象。(2)实现接口中定义的方法。(3)通过XML或者注解的方式发布Dubbo服务。(4)服务消费者依赖Maven中接口的jar包,通过接口调用服务。SpringCloud的服务发布和调用流程如下。(1)定义API接口文档和Feign接口。(2)服务提供者发布Rest接口。(3)服务消费者组织接口文档中的参数,通过Feign完成接口调用。
