迎战双11,苏宁的多数据中心多活如何建成?
随着苏宁线下线上业务以及全产业、全业态规模式快速增长,特别是每年苏宁 818 大促、双 11 等大促节点,销售订单基本都呈现倍数级增长态势,需要进行大量资源扩容,单个数据中心的容量有限,已经无法支撑苏宁业务的快速发展。同时,单数据中心在高可用上存在不足,一旦数据中心发生故障,会导致业务受损,用户访问中断,带来严重的影响。针对以上问题,苏宁规划建设多数据中心解决方案迫在眉睫。 1方案选择 参考业界多数据中心实践,目前主流的多数据中心的解决方案有如下几个: 主备模式 同城双活 多活模式 介绍这几个方案前,我们先来看下相关概念: Cell:业务可封闭收敛最小执行分片;业务对请求空间按一定维度(比如会员、门店等)划分分片。 LDC:逻辑数据中心,是由多个业务可封闭 cell 组成的集合单元,拥有独立的基础中间件系统(包括 RPC, MQ, DNS 等),以及出口网络等。 PDC:物理数据中心,指物理上独立的一栋建筑,一般每栋有好几层, 存放一系列机柜和上千和上万服务器, 构成一个 PDC。 AZ(Available Zone):可用区,具有独立的故障隔离空间,拥有独立网络设施或电力设备,由相邻的单个或多个 PDC 组成。 Region:地理区域,有多可用区所组成的集合,区域之间故障域完全隔离。 1、主备模式 主机房提供服务,备用机房不提供服务,当主机房故障,服务可切换到备用机房接管。 2、同城双活 同一个集群横跨同城两个不同的 AZ,两个 AZ 同时对外提供服务,同时允许跨机房访问不同服务以及数据库。 3、多活模式 多个机房同时提供服务,业务请求尽量收敛在同一个机房,当某个机房故障时,可以切换其它接管机房。 4、方案比较 鉴于苏宁线上 / 线下交易业务和支付业务特性,以及异地数据中心的要求,通过技术评估和决策,最终选择多活模式。 由于选择了难度最大的一种方案模式,多活方案将涵盖苏宁所有核心业务以及基础组件,需要考虑和关注的问题非常多,一旦设计发生偏差,调整的代价将非常大。为了确保方案的合理性,可实施性,首先我们讨论并制定了顶层设计,包括目标、价值和设计原则,并在设计过程中不断的复盘,以保证设计不偏离主航道。 2顶层设计 顶层设计是多活相关的干系中心经过充分讨论,并最终达成一致的最高方针。总体方案以及各个业务系统方案都必须有严格遵守的规范和要求,包括目标、价值和原则。 1、目标 机房水平扩展:单机房容量有限,业务高增长带来大量的资源需求,多活需要具备机房水平扩展能力,为资源扩容提供保障。 机房之间同城和异地高可用:单机房存在单点故障风险,多活需要具备机房级别的高可用能力,在一个机房出现故障时,能够将流量快速切到其他正常的机房,对业务的影响降低到最小。 2、价值 支持业务的快速发展:苏宁每年的业务规模成倍数级增长,所依赖的 IT 资源也快速增长,通过机房的水平扩展,解决单机房容量不足问题,以支持业务的发展。 同城与异地容灾:当机房出现电源或网络以及地震等机房级别故障,通过机房级别的流量切换实现同城与异地容灾,将对业务的影响降低到可控水平。 混合云降低持有成本:由于电商业务的特殊性,大促流量与平时流量相差上百倍,大促期间将流量划拨到公有云,在多活能力的基础上,实现私有云与公有云混部,降低私有云长期持有成本。 灰度发布:实现按机房级别流量逐步灰度发布,降低业务版本故障影响面,提升版本发布质量。 3、原则 同一用户的交易尽量在一个数据中心内部完成。苏宁对于交易业务按照用户纬度对数据分片,特定的用户路由到特定的数据中心,保证一个用户的交易在一个数据中心完成。 业务无需感知多数据中心。核心业务在多个数据中心部署,提供服务,业务无需感知自己在哪个机房,即便数据中心发生切换,业务也无需感知。 尽量节省资源。由于多机房部署导致成本上升,需要通过调整高可用部署方案降低多机房部署成本。 基于顶层设计的要求,开始多活总体方案的架构设计。 3架构设计 1、相关概念 分片服务:对应的数据仅在某个 Cell 存在,其它 Cell 不与交叉或共享,比如会员服务、订单服务等。 共享服务:所有 Cell 拥有相同的数据,相互共享,比如价格服务、商品服务等。 索引服务:用于索引数据提供服务,类似共享服务。 竞争 (控制) 服务:各个 Cell 相互操作同一个数据,为了保证数据一致性,需要在同一个数据中心进行控制,比如库存的扣减、用户注册等。 竞争 Proxy 服务:用于竞争服务前置服务,比如库存前置调拨服务。 2、服务架构 按照用户分布到不同的数据中心,多个数据中心都提供服务,在一个数据中心出现问题时,可以随时将流量切到另外一个正常的数据中心。 服务规划:根据业务不同功能,将服务拆分为分片服务,共享服务,竞争服务,索引服务,控制服务以及管理服务。各服务类型单独设置路由规则,同时支持灰度路由。 统一服务路由:从接入层到服务层以及最终的数据层,都遵守统一的路由策略,保证同一用户的交易在一个数据中心完成。 数据高可用:多数据中心保证数据库高可用,采用全冗余方式,数据在任何一个数据中心都是可用的,从而保证高可用,任一数据中心故障,不影响数据的可用性。 3、服务路由 流量的分布是由服务路由来决定的,而路由的功能由各组件承载并实现,主要分成以下几部分: DNS:根据用户所在位置就近路由到对应的 CDN。 CDN:根据用户请求信息按照一定的规则路由到对应的数据中心。 SLB:根据用户请求信息路由到同机房或其它机房。 RPC/MQ:根据用户请求信息按照一定的路由规则分发到不同的数据中心。 DAL:数据接入层对用户所处的分片进行校验,确保不出现数据异常或数据冲突。 4、服务收敛 (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |