给你一个理由放弃dubbo和spring cloud,拥抱华为全栈微服务解决方案servicecomb
1.RPC框架的评测
Martin Flower定义的微服务是基于REST,Spring cloud就是其标准的实现,通用但HTTP协议比较冗余,短连接建立也较耗时,消息体一般基于JSON串行化反串行化, 性能肯定一般。
而Dubbo默认是用netty长连接,和hession lite二进制串行化, 按理说应该比spring cloud性能要好些。
参考下turbo-rpc作者的测评 https://www.jianshu.com/p/cdd94d0853c3
结果傻眼了,阿里系的dubbo和sofa好弱,微博的motan, springwebflux都稳赢。评测都预热的了,dubbo应该是2.7,sofa是5.5都比较新的版本,不过基本都是默认配置, 但是也基本反映dubbo, sofa的RPC是改进空间的, 在阿里内部应该属于上一代的架构了。
而让人意外的是出自华为之手的servicecomb(配置hightway私有串行化协议), 稳在第一阶梯。
2.Dubbo为什么会慢?
dubbo客户端调用需要传递过多信息给服务提供方,带类名的methodName加上参数类型,参数值等,和http+json的方式比起来没好多少。
public class RpcInvocation implements Invocation, Serializable {
private static final long serialVersionUID = -4355285085441097045L; private String methodName;
private Class<?>[] parameterTypes;
private Object[] arguments;
private Map<String, String> attachments;
private transient Invoker<?> invoker;
}
还有一些点可能就是反串行化,入参拷贝损耗, 反射调用服务等细节问题, turbo-rpc的作者也提到这些改进点,如果有时间,笔者后面再跟进源码解读。
3.为什么推荐使用servicecomb?
servicecomb实际不单单是一个RPC框架, 它定位为全栈式的微服务解决方案。dubbo其实只是一个RPC框架, 和servicecomb对等的应该是spring cloud, sofastack和spring cloud for alibaba。
如果从稳定,性能来说,servicecomb应该是首选, 分布式事务saga和tcc都支持而且都经过华为实际场景验证过的, etcd based service center, circuit breaker, edge service基本想要都优化了一套,pom.xml引入对应的handler,micorservice.yaml配置下基本就能用了,蛮傻瓜。sofastack其实也蛮稳,不过开源出来的算是HSF Lite版本,dubbo或spring cloud for alibaba还是尚待稳定和优化。
尚且不说阿里开源这些是不是KPI项目, 但后劲还是很足的, 例如新的注册和配置中心Nacos, dubbo3.x持续改进, Seata分布式事务框架等。
servicecomb蛮好, 但推广得确实比较差, 刚出来的时候还有个污点, 它的go版本涉及抄袭go micro, 具体见 https://mp.weixin.qq.com/s?__biz=MjM5MzM3NjM4MA==&mid=2654688638&idx=1&sn=ac267eeabd5e5992f203bde4b5b06dbf&chksm=bd58046d8a2f8d7b86dcd26a798ef80a290ee66bba7b8eb24b794b9c894a30fa1ba431c984f2&mpshare=1&scene=23&srcid=0209MWU5zk5rmTwJGgjpNXyr#rd
老外比较在意那些公司资助的开源, 借鉴也好参考也罢, 遵守游戏规则就好。
不过每个公司选择服务化框架也有自己的考虑,有点规模的公司有时不想依赖阿里的技术栈,可能有时就直接用中立些的spring cloud,或者自造适合自己体系的框架或组件。利益相关不大的金融公司为了稳定甚至购买阿里稳定些的商用版sofastack, 毕竟蚂蚁金服实践过。开源有时也是一个造势和影响力了。
4. 有没更猛的框架?
有的, https://www.techempower.com/benchmarks/#section=data-r18&hw=ph&test=db 这个评测网算是权威, rust写的actix网络框架常年刷榜, rust真会有一席之地。
- 原文作者:Zealot
- 原文链接:https://www.51discuss.com/posts/servicecomb-introduction/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。