sofa-rpc和dubbo2.x对比

2020-11-10 23:26:03 浏览数 (1)

去年得知蚂蚁金服放出SOFA的部分开源项目, RPC部分号称源于阿里内部的HSF, HSF当年可是把dubbo 1.x踢出局的, 只是没想到京东改造dubbo为JSF, 当当改为dubbox。国内蛮多电商公司实施服务化就直接上dubbo 1.x或dubbox。这应该是阿里没想到的, 所以现在dubbo 2.x又回笼为apache的顶级项目, 把dubbox合并还继续完善。

朋友说他们公司花了千万买了SOFA的商业版, 那么值钱的东西今天抽空过了一下开源部分的SOFAStack和dubbo2.x文档, 简单做了个对比。

Feature

sofa-rpc

Dubbo2.x

运行环境

Java app或sofa-boot/spring-boot

依赖spring容器

通信协议

Bolt, REST,Dubbo,H2C,Http

Dubbo,Rmi,Hessian,http,Webservice,Thrift,Redis,Memcached,rest

注册中心

SOFARegistry,Zookeeper,Local文件注册表,Consul,Nacos

Multicast广播注册,Zookeeper,Redis,Simple register server单点

直连调用

支持

支持

均衡负载

Random,LocalPref,roundRobin,consistentHash,weightRoundRobin

Random,roundRobin,LeastActive,consistentHash

过滤拦截

自定义Filter

SPI Filter自定义Event Notify,CallbackService

路由规则

自定义Router

自定义routing-rule

调用重试

FailOver模式下支持retry

FailOver retry

链路追踪

Sofa-tracer,skywalking

支持monitor,全链路需整合第三方或待加强

自定义线程池

支持

支持

数据链路透传

RpcInvokeContext支持

支持RpcContext

预热权重

支持

未知

容灾恢复

单机故障剔除,Hystrix熔断

与容错策略有关,应该也可整合Hystrix

优雅关闭

支持

支持

异步调用

支持

支持

参数验证

未知

JSR 303支持

调用身份验证

好像支持,一下没找到

token验证

串行化

protostuff等

Kryo,FST等等

分布式事务

依赖于JTA或XA,需自行整合第三方组件

依赖于JTA或XA,需自行整合

服务治理

整合SOFAMesh, SOFAMosn, SOFALookout , SOFADashboard等工具

Dubbo ops工具操作

总体而已, SOFA只是开源一部分组件,一些分布式事务DTA,分布式调度,分布式锁,服务编排等中间件估计都放阿里云卖也一时半会不会放出来,dubbo 2.x也正在追赶越来越完善。

同时阿里的spring-cloud-alibaba也在孵化中,貌似认识的一位同事小马哥也在疯狂提交。所以现在服务化,微服务这些现成好用的东西是越来越多。

不过就开源项目而言,spring cloud的组件应该是最完备的,想要的中间件基本都有,

走HTTP REST慢是慢点, 但有时比给出接口jar好好些些, 维护起来 (虽然有部分不是太好用,例如分布式调度组件)。

走微服务在技术层面已不是什么难事了,开源够丰富,重要的是业务的梳理和拆分,依赖,开发运维的难度。而SOFA开源的mesh, 引入ISTIO的service mesh是走在前沿的。有空我们继续深入。

0 人点赞