微服务-Springcloud-dubbo

dubbo是spring cloud的两大微服务架构之一,按照微服务部署,其结构如下:


image.png

对比于Netflix,sentinel处理了熔断,增加了seata处理事务。

Spring Cloud Netflex vs Spring Cloud Dubbo

组成部分 Spring Cloud Netflex Spring Cloud Dubbo
组成风格 和Spring boot脚手架风格一致,由多个组件完成各自独立的功能,由注解或配置组装成新组件 dubbo一个组件实现了绝大部分功能
rpc 直接由http作为rpc调用,使用tomcat完成通信,数据采用http协议、spring mvc完成了方法查找,jacson进行序列化和反序列化, dubbo提供了丰富的rpc调用,包括调用协议、序列化反序列化协议,由netty作为通信层
注册中心 支持多种注册中心 支持多注册中心,如同时配置nacos和zookeeper
配置中心 支持多种配置中心,如spring cloud config 支持多种配置中心,与nacos、zookeeper等配套比较好
网关 使用常用网关接入,默认Spring Cloud Config 使用常用网关接入
MQ 支持多种MQ 一般使用阿里RocketMQ
数据库 支持多种数据库 知此恨多种数据库
接口调用 使用openfeign组件,支持http调用 支持多种协调调用,dubbo默认支持
负载均衡 使用rabbon组件支持负载均衡 dubbo默认支持
限流降级 使用hystrix组件支持熔断限流降级 使用sentinal支持熔断

dubbo的扩展点

dubbo的整体架构图设计如下:


image.png

重点要看明白的是所有绿色的地方都是接口定义,都是用扩展点实现的。
在dubbo的META-INF/dubbo.internal下定义了dubbo所有的扩展点:


image.png

这些扩展点就是绿色接口的实现。此时思考一个问题,有这么多扩展点,是什么时候加载的呢?
通过url实现,dubbo有很多自定以的url,通过url中的关键字控制使用那种扩展点。

dubbo的优势

看了如上扩展点图列,就很容易明白dubbo的强大之处。

  • rpc通信,spring cloud netflex默认支持的是http作为rpc。而dubbo可以从扩展点看到,从传输协议、序列化等支持的种类非常多,可以适用于多种场景。
  • dubbo支持多注册中心,注意不是多种注册中心,即同时可以使用多个注册中心。

在扩展点框架下,dubbo的优势确实非常明显。

小结

对于Spring Cloud Netflix和Spring Cloud Dubbo,你喜欢哪个呢?这恐怕要仁者见仁,智者见智。
从设计风格上来讲:

  • Spring boot是脚手架,是一种组合风格,Spring Cloud Netflex的设计哲学更加是一种组合风格,整体设计功能模块分解清晰,设计让人感觉优美。
  • 而Dubbo呢,通过一套扩展点框架,基本可以完成所有功能,这种设计让人感觉功能强大。特别是底层的通信设计

对于我来讲,我比较认同Spring boot的设计风格。那么对于你呢,萝卜青菜,你最爱哪个?如果是你设计,你倾向于那种设计?我在想,如果一开始就是netflex的设计师来设计dubbo,会设计成什么样?

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容