去年得知蚂蚁金服放出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是走在前沿的。有空我们继续深入。