最近看了很多微服务开源的几个平台,目前我看到的项目里面开源的基本上分为两类(不包括各个公司内部研发和一些我并没有看到的开源组件):
一:springcloud 全家桶系列,,主要依赖Netflix、alibaba、springboot的各种组件,例如:eureka 、feign、Ribbon、gateway、config、zuul、bus、admin、hystrix、oauth2、nacos、skywalking、sentinel、seata等等。
二:dubbo+zookeeper系列,阿里开源,其他公司有再此基础上的封装,例如当当的dubbox。
两者区别:
dubbo系列的经历过开源-> 无维护 -> 再次维护 的经历,而且阿里内部其实放弃dubbo了的,可以参考HSF:https://www.alibabacloud.com/help/zh/doc-detail/100087.htm
这里我个人也不建议研发团队实力、精力、财力不充足的情况使用dubbo,主要是因为zk的问题和边缘组件缺失等。
zk问题:
1)当注册中心的服务规模超过一定数量的时候,zk不能很好的工作,不能支持很高的tps和TCP长连接。
2)zk的写请求是不是可扩展的。
3)zk提供的Service Health Check功能很弱,基于zk的session活性检查和临时节点监听机制上,不能真正反应服务的健康状态。
4)zk原生客户端没有提供数据缓存机制,当注册中心宕机的时候,会造成服务不可用。
5)zk原生客户端不好用,难以掌握Client/Session状态机,zk的客户端和服务端交互协议不简单,比如:TCP长连接Session管理,Ephemeral Znode(临时节点),Event&Notification(事件订阅通知),ping(心跳检测)。
6)复杂的异常处理,ConnectionLossException和Disconnected事件。
我这里并不是说dubbo不好或者zk不好,坦白说dubbo其实在效率上比spingcloud快不少,而zk更适合于大数据方面(有个昵称:大数据协调之王)。
时间原因,先写这么一点,后面我想一点点从springcloud全家桶开始写、再写下 alibaba的几个使用、日志的处理(kafka+ELK)、缓存的应用场景redis(memcache本身并不支持分布式只能通过客户端来实现,按下再说)、消息中间件MQ(activemq、rabbitMq等吧,看情况,主要是微服务里面的配置中心、分布式事务的一种场景里面、消息分发等)、多线程方面、mysql方面。
网友评论