微服务框架Dubbo与SpringCloud的区别
微服务主要的优点以下:
一、下降复杂度
将原来偶合在一块儿的复杂业务拆分为单个服务,规避了本来复杂度无止境的积累。每个微服务专一于单一功能,并经过定义良好的接口清晰表述服务边界。redis
每一个服务开发者只专一服务自己,经过使用缓存、DAL等各类技术手段来提高系统的性能,而对于消费方来讲彻底透明。缓存
二、可独立部署
因为微服务具有独立的运行进程,因此每一个微服务能够独立部署。当业务迭代时只须要发布相关服务的迭代便可,下降了测试的工做量同时也下降了服务发布的风险。网络
三、容错
在微服务架构下,当某一组件发生故障时,故障会被隔离在单个服务中。 经过限流、熔断等方式下降错误致使的危害,保障核心业务正常运行。架构
四、扩展
单块架构应用也能够实现横向扩展,就是将整个应用完整的复制到不一样的节点。当应用的不一样组件在扩展需求上存在差别时,微服务架构便体现出其灵活性,由于每一个服务能够根据实际需求独立进行扩展。负载均衡
Dubbo
Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可经过高性能的 RPC 实现服务的输出和输入功能,能够和Spring框架无缝集成。框架
Dubbo 核心部件(以下图):分布式
Provider: 暴露服务的提供方,能够经过jar或者容器的方式启动服务ide
Consumer:调用远程服务的服务消费方。微服务
Registry: 服务注册中心和发现中心。工具
Monitor: 统计服务和调用次数,调用时间监控中心。(dubbo的控制台页面中能够显示,目前只有一个简单版本)
Container:服务运行的容器。
SpringCloud
Spring Cloud是一系列框架的有序集合,是构建分布式系统的工具集。开发者全家桶,把业界主流最好技术整合起来集中利用这些方便工具构建业务系统。
Spring Cloud整体架构以下图
Service Provider: 暴露服务的提供方。
Service Consumer:调用远程服务的服务消费方。
EureKa Server: 服务注册中心和服务发现中心。
Dubbo与SpringCloud二者的区别
最大的区别:Spring Cloud抛弃了Dubbo 的RPC通讯,采用的是基于HTTP的REST方式。
性能比较
使用一个Pojo对象包含10个属性,请求10万次,Dubbo和Spring Cloud在不一样的线程数量下,每次请求耗时(ms)以下:
来源(背景):
Dubbo,是阿里巴巴服务化治理的核心框架,并被普遍应用于阿里巴巴集团的各成员站点。
Spring Cloud,从命名咱们就能够知道,它是Spring Source的产物,Spring社区的强大背书能够说是Java企业界最有影响力的组织了,除了Spring Source以外,还有Pivotal和Netfix是其强大的后盾与技术输出。
其中Netflix开源的整套微服务架构套件是Spring Cloud的核心。
传输:
Dubbo因为是二进制的传输,占用带宽会更少;
Spring Cloud是http协议传输,带宽会比较多,同时使用http协议通常会使用JSON报文,消耗会更大。可是在国内95%的公司内,网络消耗不是什么太大问题,
若是真的成了问题,经过压缩、二进制、高速缓存、分段降级等方法,很容易解。
开发难度:
Dubbo的开发难度较大,缘由是dubbo的jar包依赖问题不少大型工程没法解决;
Spring Cloud的接口协议约定比较自由且松散,须要有强有力的行政措施来限制接口无序升级
后续改进:
Dubbo经过dubbofilter,不少东西没有,须要本身继承,如监控,如日志,如限流,如追踪
Spring Cloud本身带了不少监控、限流措施,可是功能可能和欧美习惯相同,国内须要进行适当改造,但更简单,就是ServletFilter而已,可是总归比dubbo多一些东西老是好的;
注册中心:
Dubbo的注册中心能够选择zk,redis等多种;
Spring Cloud:的注册中心只能用eureka或者自研;
配置中心:
dubbo:若是咱们使用配置中心、分布式跟踪这些内容都须要本身去集成,无形中增长了使用难度。
Spring Cloud:提供了微服务的一整套解决方案:服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等