多点Dmall基础架构高可用演进和实践
作者:马骥
背景
多点Dmall作为一家数字零售解决方案提供商,以全面数字化服务助力实体零售企业实现线上线下一体化,帮助商超打好坚实的数字化地基,提高效率,降低成本,改善消费者体验。为零售企业提供基于Dmall OS系统的零售联合云服务。Dmall OS包含15大系统、800个子系统,输出完整的数字化解决方案。区别于传统互联网厂商,不仅需要考虑C端客户流量的随机性,高并发等特点,还需要兼顾B端商家对于应用平滑升级、数据隔离性和系统灵活扩展性的要求。为了给客户提供更好的服务,多点中间件团队一直致力于新零售场景下的基础架构高可用实践探索。
大纲
Q:请先介绍下多点Dmall中间件的现状?
A:多点Dmall中间件历经多年沉淀和打磨,形成了生产,监控和基础三大组件的生态圈;生产组件致力于解决业务系统开发中的技术痛点,结合当前行业趋势打造一套适合公司技术标准和体系;监控组件聚焦于帮助开发人员在事前、事中和事后快速定位和解决问题;基础组件作为体系的基石,向上提供运算、协调以及管理等能力。
Q:多点Dmall高可用的现状?
A:多点Dmall从2018年开始,尝试做高可用改造,规划两个阶段来实施:第一阶段完成同城双活,第二阶段开启异地多活(单元化)。在2019年底,实现IDC与腾讯云异构机房的同城双活改造,并例行实施每年1-2次的机房级拔网线灾备演练;从2020年开始,进行异地多活的探索,历经一年多的反复验证,到目前为止已经形成了1(Gzone)+N(Rzone)的架构体系,具备将商超部署到了独立单元的能力。
Q:多点Dmall在同城多活演进的过程中有过怎么的经验沉淀?
A:我化繁为简,归纳出四个关键指标:全链路流量调拨、不增加额外成本、具备快速扩容/缩容、底层异构化。
1.全链路流量调拨:具备应用级、系统级和机房级的全链路流量路由能力,能够在秒级实现不同机房之间的流量调度;
2.不增加额外成本:传统的冷热互备模式浪费太大,为了减少基础设施的资源成本,需要要保证业务具备在多个机房中同时提供服务的能力;为了降低研发使用和理解成本,整个方案就不能是颠覆式改动,需要依赖现有的组件进行平滑升级;
3.具备快速扩容/缩容:得益于K8S强大的管控能力,可以根据流量进行动态的扩容/缩容,避免突发流量引起的系统雪崩;
4.底层异构化:通过自建IDC+公有云的方式,解决技术层面的单点风险。
Q:我们都知道,单元化这个概念出来很久了,但是缺少统一的方法论,在这方面有哪些可以分享的案例?
A:确实,单元化场景下两大挑战就是技术方面要克服物理距离带来的时延,思维层面需要研发对于单元化架构有一定的理解,只有在公司层面从上而下融会贯通,单元化方案才能平稳落地。
首先从技术角度讲
1.避免单元间的依赖,流量尽量在单元内闭环,对于确实存调用的场景,要提供单元间的代理/网关将东西流量转成南北流量,才能在单元间通讯;
2.传统的主从复制方案都不可用,需要自研大量跨单元的组件,涉及到非常多的技术难点,比如怎样保证请求在单元内闭环?如何保证数据的一致性?如何提供全局唯一ID?等等。
再来思维层面分析
3.在公司层面上对于单元化拆分的依据达成共识,为什么阿里通过用户维度而多点Dmall却按照商家维度进行拆分?
4.单元化后的系统架构空前复杂,任何依赖服务的改动,都需要额外思考,我的上下游是否在和自己在同一单元?当做服务迁移的时候谁先操作谁后操作?
Q:能否透露下多点Dmall高可用的演进方向?
A:单元化目前已初具能力,后续会在此基础上,针对单元间多版本演进、跨单元流量治理、复杂条件下的链路追踪等场景持续发力。
预告一波:今年10月24日下午14:00-18:00,D+Talks 2021多点技术大会将拉开帷幕,欢迎扫描下方二维码参加线下活动,与行业大咖共同探讨!