技术与架构之微服务框架对比(spring cloud ,dubbo)

前言

微服务很红,一段时间有人吹捧spring cloud的神话,一段时间吹捧grpc的要拯救世界,永远有人哀唱 dubbo(现在好一些了,)。目前也没有人比较全面认真仔细的对比过。鸟菜啊这次就解决大家技术选型的问题

spring cloud的组件

要弄明白,搞清楚spring cloud 的神话,就得搞清楚spring cloud所有的组件

Spring Cloud Config

spring cloud的默认配置中心,基于git实现。

Spring Cloud Netflix

spring cloud 支持 netflix公司开源的组件的一个模块。netfilx开源组件有Eureka, Hystrix, Zuul, Archaius。

Spring Cloud Bus

spring cloud的事件总线,负责整个微服务建构的事件(事件注册,触发,传播)。比如配置发生改变(这个有用吗?)

Spring Cloud Open Service Broker

Spring Cloud Open Service Broker是一个用于构建实现Open Service Broker API的Spring Boot应用程序的框架。 Open Service Broker API项目允许开发人员为云本地平台(如Cloud Foundry,Kubernetes和OpenShift)中运行的应用程序提供服务。 Spring Cloud Open Service Broker提供了一个基于Spring Boot的框架,使您能够在支持Open Service Broker API的平台上为您自己的托管服务快速创建服务代理。

Spring Cloud Cluster

spring cloud cluster作用是基于Zookeeper, Redis, Hazelcast实现选举功能。分布式组件都有这个自带这个功能吧

Spring Cloud Consul

spring cloud consul作用是基于 Hashicorp Consul实现服务注册与发现。不是跟Eureka的功能重合了吗?

Spring Cloud Security

Spring Cloud Security作用是基于OAuth2 与 zuul实现用户与资源权限

Spring Cloud Sleuth

spring cloud sleuth是基于Zipkin实现链路跟踪

Spring Cloud Data Flow

spring cloud data flow 作用是提供一套标准从不同的数据源里面读取数据,对数据进行处理。有点想kafka... 与RocketMQ commn

Spring Cloud Stream

spring cloud stream 作用是统一了大部分消息中间件的行为。用 spring cloud stream可以操作很多消息中间件。比如activeMQ,RibbtMQ,kafka,RocketMQ。(一定用都没有)

Spring Cloud Stream App Starters

spring cloud stream app starters 作用是可以把 spring cloud stream 进行独立部署。部署后可以提供服务,加入Spring Cloud Data Flow

Spring Cloud Task

spring cloud task 作用是 定时任务

Spring Cloud Task App Starters

spring cloud task app starters 作用是可以把 spring cloud task 进行独立部署。部署后可以提供服务

Spring Cloud Zookeeper

spring cloud zookeeper 作用是对zookeeper client 进行封装

Spring Cloud AWS

spring cloud aws 模块可以把spring cloud应用直接部署到AWS服务上

Spring Cloud Connectors

spring cloud connector 作用是负责链接jvm获得jvm运行期信息。比如bean。

Spring Cloud Starters

spring cloud starters 是spring cloud 支持maven的模块,引入spring cloud starters 会引入把所有子模块都默认加载。

Spring Cloud CLI

spring cloud cli 可以让你以命令行方式快速建立云组件。

Spring Cloud Contract

spring cloud contract 作用是契约测试。

Spring Cloud Gateway

spring cloud gateway 作用是网管

Spring Cloud OpenFeign

spring cloud openFeign 作用是基于feing实现http的rpc功能

总结

这么多组件,在实际使用中大家能用到多少个组件。我列了列我用过的。

  1. Spring Cloud OpenFeign
  2. Spring Cloud Netflix
  3. Spring Cloud Gateway
  4. Spring Cloud Sleuth
  5. Spring Cloud Task

比如没有买AWS服务无法使用Spring Cloud AWS 组件等等

国内体系与springcloud体系的对比

dubbo 与 Spring Cloud OpenFeign 对比
功能dubboOpenFeign胜者
网络传输tcp,http(1,1,1,2.0)http1.1dubbo
支持多协议dubbo
多序列支持是(json,heesin等)否(json)dubbo
资源隔离是 (通过线程池隔离服务)dubbo

在功能层面 dubbo 实在完爆 openFeian。dubbo还多功能都没列出来了,实在不忍了。多注册中心,异步调用等等。

性能dubboOpenFeign理由胜者
网络传输tcphttp1.1tcp的性能至少是http1.1的5倍dubbo
序列化性能hessionjsonhession比json搞4倍dubbo
方法调用方式字节码动态代理性能相差1.5倍dubbo

在性能方法 dubbo 完爆 openFeian。

总结

不知道为什么用 spring cloud

其他组件对比
组件国内spring cloudNetflix理由胜者
注册中心nacosConsul(推荐使用eureka)Eureka(不维护)nacos
配置中间nacos/apolloConfigarchaiusnacos/apollo实在太强大了nacos/apolle
限流sentryHystrix(不维护了)sentry
分布式定时任务ejobtaskejob
链路跟踪skykingZipkinskyking是apache顶级项目skyking
网关Gatewayzuulzuul
spring cloud 优势组件
spring cloud国内解读
Securitysecurity 实在太庞大了,小公司简单写一个aop,大公司自己写。
Bus无用的组件,nacos/apollo就可以实现传播了
Cluster只是做了封装而已,业务系统基本用不到
Data FlowRocketMQ-connect最全面的是kafka的
Stream除了RocketMQ,鸟菜啊不会使用其他消息中间件,其他的实在太恶心了
Connectors其实是有是各个库自己实现了,比如dubbo,driud。

spring cloud 的优势组件,对于大部分公司来说基本是鸡肋。

总结

  1. spring cloud就是一个组装货,组件极度不稳定
  2. spring cloud的性能相对比较差
  3. spring cloud的基础功能比较弱
  4. spring cloud 优势组件,大部分公司无法使用
  5. spring cloud组件在高性能面前直接跪,因为组件内部设计的问题。

使用dubbo,使用国内的组件吧

转载于:https://my.oschina.net/u/1261452/blog/3099372

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值