共计 3087 个字符,预计需要花费 8 分钟才能阅读完成。
简介:中仑网络在 2022 年实现了服务框架从 Dubbo 2 到 Dubbo 3 的全站降级,深度应用了利用级服务发现、Kubernetes 原生服务部署、服务治理等外围能力。来自中仑网络的技术负责人来彬彬对整个 Dubbo 3 的选型、降级过程及收益等做了深刻总结。作者:刘军 中仑网络在 2022 年实现了服务框架从 Dubbo 2 到 Dubbo 3 的全站降级,深度应用了利用级服务发现、Kubernetes 原生服务部署、服务治理等外围能力。来自中仑网络的技术负责人来彬彬对整个 Dubbo 3 的选型、降级过程及收益等做了深刻总结。来彬彬,2020 年退出苏州中仑网络科技有限公司,负责架构部负责人 / 高级架构师,十四年架构开发教训。曾任职于苏宁易购七年参加商户平台、物流四方服务平台等架构设计,为用户提供亿级 SaaS 服务。现重点保障中台化施行、性能优化、业务架构、稳定性等,专一批发行业、互联网、云计算、架构设计。值得一提的是近期 Dubbo 3 官网文档 整体有了实质的晋升,并且社区承诺短期内文档还会投入大量精力欠缺文档,这点对于 Dubbo 3 的应用和用户信念晋升十分重要。公司业务与技术架构简介 苏州中仑网络科技有限公司是一家“专一批发门店增收服务”的公司,始终以“解决中小批发门店经营难的问题”为初心,致力于为零售商户提供门店经营一体化解决方案,帮忙批发门店实现增收。中仑网络以批发技术为外围,为零售商户打造出集收银零碎、中仑掌柜、微商城、汇邻生存平台、大数据平台、挪动领取、智慧农贸、汇邻门店经营服务等为一体的新批发生态体系,实现线上线下全方位交融,为零售商家赋能增收。技术团队在构建之初选取 Dubbo 2.5.3+Zookeeper 版本构建公司微服务基座撑持公司业务倒退,前期同阿里云深度单干整体迁徙应用阿里云,应用云原生基础设施 ACK(Kubernetes)+MSE(Zookeeper)+Dubbo+PolarDB 等构建,实现可动静缩扩容的服务能力。随同单干商扩大 3000+,市场遍布 300+ 城市,零售商户 30 万 +,服务笼罩餐饮、茶饮、服装、母婴、烘焙、生鲜、商超、美业、美妆、宠物等多个行业。随同着畛域拓宽、商户量快速增长回升,零碎数量和部署节点也迎来了暴增,随之在零碎可用性上受到较大挑战:微服务治理能力、微服务地址注册发现,Kubernetes 平台服务的无损高低线顺滑度上问题与挑战越来越多。架构图见图一。
图一 Dubbo 3 降级总结 在降级微服务组件技术选型上次要思考解决以前的痛点:服务治理能力、云原生敌对性、服务注册发现,这几个制约业务倒退的紧要问题。比拟下来 Dubbo 3 架构设计理念与咱们较为符合,能较好的满足咱们业务倒退要求。1、服务治理能力 Dubbo 3 提供丰盛的服务治理能力,可实现诸如服务发现、负载平衡、流量调度等服务治理诉求。在应用上咱们有两种抉择:应用 Dubbo 治理控制台治理配置集成相干 API 能力到零碎 同时 Dubbo 扩展性较好,能够在很多性能点(见图二)去定制本人的实现,以扭转框架的默认行为来满足本人的业务需要。Dubbo SPI (Service Provider Interface) 将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样能够在运行时,动静为接口替换实现类。基于此个性,咱们能够很容易的通过 SPI 机制为咱们的程序提供拓展性能,如咱们在此基础上实现了基于生产和消费者过滤器 Filter 实现全链路自定义的链路监控; 基于路由扩大标签路由形式进行测试环境的隔离不便疾速多版本服务测试验证。实操上咱们基于生产者注册服务时打标,如原零碎 A V1 版本部署在 fat 环境上,当初为了测试 V2 版本,咱们将 V2 版本打标 tag=fat-v2;应用端在生产时指定 Invocation Attachment 参数,inv.setAttachment(TAG_KEY, routeTag);基于此咱们能够不便自测试,同时生产上咱们也能够做简略的生产灰度使用。
图二 2、云原生敌对性 Dubbo 在设计上遵循云原生微服务开发理念,微服务反对 Kubernetes 平台调度,实现服务生命周期与容器生命周期的对齐,包含 Dubbo 的启动、销毁、服务注册等生命周期事件。中仑网络微服务治理应用的是 MSE(Zookeeper), 因此咱们服务裸露应用需与之对齐。具体操作上咱们自定义 Startup 启动探针、Liveness 存活探针、Readiness 就绪探针。我的项目的失常切换须要保障无损的高低线,在施行中无损上线绝对于下线来说会更麻烦点,我的项目的公布上线过程大体会听从如下流程(大抵分成三个阶段):第一阶段降级大量(如 20%)的实例,并切换大量流量到新版本,实现这个阶段后先暂停降级。通过人工确认之后持续第二个阶段,降级更大比例(如 90%)的实例和流量,再次暂停期待人工确认。最初阶段将全量降级到新版本并验证结束,从而实现整个公布过程。如果降级期间发现包含业务指标在内的任何异样,例如 CPU 或 memory 异样使用率升高或申请 500 日志过多等状况,能够疾速回滚。因为咱们应用的是 MSE(Zookeeper)服务,Dubbo 服务自注册在利用启动过程裸露不受 Kubernetes 生命周期的管制,呈现我的项目未齐全就绪局部服务可被提前可被拜访问题。
图三 施行解决上咱们次要利用 Dubbo Qos 指令, 初始应用服务不裸露,在利用就绪后调用 Qos online 指令进行服务上线替换老节点,每次替换的节点数量基于公布策略来制订; 下线过程针对需下线节点咱们会先应用 Qos 指令进行下线 offline 操作期待利用执行完服务,从而进行优雅停机,从实际的成果来看能满足咱们的生产需要。3、实例级别降级切换 相比于 2.x 版本中的基于接口粒度的服务发现机制,3.x 引入了全新的基于利用粒度的服务发现机制,进一步晋升了 Dubbo 3 在大规模集群实际中的性能与稳定性。此次降级过程中咱们也同步引入了配置核心与原数据中心,行将图四置灰局部启用:
图四 采纳实例级别注册治理,一个利用 N 个服务,接口级时 N 服务需监听推送,利用级只关注单实例相干信息。同时引入元数据中心后极大升高接口配置数据信息,缩小接口数据传输大小,相干职责配置也更加清晰。依据测试新模型大幅提高系统资源利用率,升高 Dubbo 地址的单机内存耗费,大幅升高注册核心集群的存储与推送压力,上线后稳定性有较大的晋升。总结与瞻望 在中仑网络 Dubbo 2 降级 Dubbo 3 的过程中咱们也有过一些踌躇,如把接口级换成利用级还是混合注册;Dubbo 3.0 新个性新技术在我的项目中引入的机会与范畴。对公司来说大的降级象征危险和不可预知的问题,但同时也能为之带来资源利用率晋升、根底性能的扩大与加强,作为技术人员咱们须要重复审慎评估与论证。当初咱们曾经实现切换所有的业务畛域。Dubbo 社区单干 在这里再次感激 Dubbo 社区人员的业余、高效,以及对中仑网络架构降级的大力支持,同时很荣幸可能成为一名社区的贡献者,感兴趣的同学能够退出贡献者钉钉群:31982034。Dubbo 社区近期操办了每周一次的微服务纯技术分享,解说 Dubbo 应用、源码,同时涵盖泛滥云原生微服务常识,感兴趣的同学可关注 Apache Dubbo 公众号。MSE 注册配置首购 8 折,首购 1 年及以上 7 折。MSE 云原生网关预付费全规格享 9 折优惠。点击此处,即享优惠。原文链接:https://click.aliyun.com/m/10… 本文为阿里云原创内容,未经容许不得转载。