写点什么

从上云策略到架构设计,苏宁如何实践异地混合云方案?

陈跃泉、涂成义、马忠成

2021 年 3 月 31 日

从上云策略到架构设计,苏宁如何实践异地混合云方案?

背景

为支撑 618、818、双十一、双十二等大促的激增流量,苏宁采购了大量的服务器;随着日常新业务增长,每年也需增加大量的服务器满足需求。

 

这就带来以下问题:其一,在非大促期间服务器资源的利用率相对较低,服务器长期持有成本较高;其二,新增资源需求难以快速满足;其三,每年面临大量老旧机器更换压力,这也是互联网电商企业面临的几点共性成本问题。

 

为解决以上矛盾,提高服务器的利用率,节约成本,苏宁考虑采用混合云的方案。在平时保有能够支撑日常业务的资源,大促期间将激增流量(10-100x)弹出到公有云以降低大促资源的投入成本,同时将缩减下来的资源投入到业务增长的需求中。

 

考虑到苏宁很多业务无法弹出到公有云,因此采用混合云部署方案来降低整体资源成本并支撑业务发展。

混合云规划

1 公有云部署方案选择

混合云方案主要有两种部署方案

  • 基于 LDC 方式部署

  • 基于扩展方式部署


LDC 部署方案


扩展部署方案

 

下面分别从端到端延迟、可扩展性、故障恢复以及资源成本角度进行评估:

  • 端到端延迟:LDC 部署方式相比扩展部署方式,流量相对收敛在同一个数据中心,端到端延迟较低

  • 故障恢复:LDC 部署方式相比扩展部署可以直接通过流量划拨快速恢复业务

  • 可扩展性:LDC 部署可用于同城或异地部署,而扩展部署仅限于同城

  • 资源成本:LDC 部署方式可部署数据层(比如 DB)到公有云,并缩容相应私有云的数据层资源,长期成本较低

 

同时考虑到苏宁私有云机房附近的公有云资源相对有限,以及提高公司 IT 系统的容灾能力(包括抵抗地震等极端场景),因此苏宁选择基于 LDC 方式的异地混合云解决方案。

2 公有云厂家选型

公有云厂家技术选型主要从以下几个方面进行考虑:

  • 与私有云网络延迟:为了降低整体端到端业务延迟,一般需要选择跨机房 RTT 延迟在一定范围内的机房,因此一般要选择距离 1000 公里以内,为了获得较好用户体验最好选择距离 300 公里以内公有云机房。

  • 机房等级和容灾:为了保障业务的稳定性,因此选择至少 T3 级别以上和不同地震带的公有云机房

  • IaaS/PaaS 能力:只有公有云强大的计算、存储、网络 IaaS 能力,以及较强的 PaaS(DB、Redis 等)能力,才能有效进行资源扩缩容,降低公有云资源持有成本

  • 行业经验/技术支撑:较强的行业经验,特别是电商行业经验,才能有效支撑业务平稳运行


按照上面几个技术维度和商务维度,苏宁最终选择一个相对合适的公有云提供商支撑未来 3-5 年业务需求。

3 混合云上云策略

混合云上云策略基于成本、资源储备量以及技术能力考虑:

  • 成本:优先选择大促期间流量激增性业务

  • 资源储备量:资源储备量高,但是平时利用率低的业务

  • 技术能力要求:初期优先选择安全性要求较低业务

 

综上考虑,苏宁初步对于推荐、搜索、红包等业务优先采用混合云部署方式,后续也将压测机和测试环境部署到公有云。

顶层设计

由于这是苏宁首次采用混合云部署方式,为确保方案的合理性及可实施性,项目团队首先制定顶层设计,包括目标、价值和设计原则,经过充分讨论,并最终达成一致,在总体方案以及各个业务系统方案设计过程中严格遵守,不断复盘,以保证设计不偏离主航道并且可实施。

1 目标

1)弹出去:大促期间,短期内使用公有云资源弥补私有云资源的缺口,支持大促期间业务的需要;

 

2)缩下来:从整体上降低私有云的持有成本,并且支持业务发展。

2 价值

1)支持业务的快速发展:苏宁每年的业务规模快速增长,所依赖的 IT 资源也成倍增长,通过混合云方案可降低资源采购周期;

 

2)降低持有成本:由于电商业务的特殊性,大促流量与平时流量相差上百倍,大促期间将流量划拨到公有云,实现私有云与公有云混布,降低私有云长期持有成本;同时,通过技术手段降低上云的成本。

3 原则

1)公有云与私有云的差异性尽量由 IaaS 层屏蔽,做到业务的无感知,减少 PaaS/SaaS 层的开发和运维;

2)充分合理利用公有云资源和能力,降低私有云大促成本;

3)上云的数据信息必须受到保护,避免信息泄露;且公私有云之间互访需管控并可降级;

4)降低跨机房信息传输,从而降低带宽成本和网络延迟;

5)公有云机房的可靠性需要 有 SLA 保证,并有应急预案。

基于顶层设计的要求,项目团队开始异地混合云总体方案的架构设计。

架构设计

异地混合云架构基于原有苏宁多数据中心多活架构[1],可以说,混合云架构是多活架构的演进和拓展。

1 概念介绍

  • Cell:业务可封闭收敛最小执行分片;业务对请求空间按一定维度(比如会员、门店等)划分分片。

  • LDC:逻辑数据中心,是由多个业务可封闭 cell 组成的集合单元,拥有独立的基础中间件系统(包括 RPC, MQ, DNS 等),以及出口网络等。

  • PDC:物理数据中心,指物理上独立的一栋建筑,一般每栋有好几层,存放一系列机柜和上千和上万服务器,构成一个 PDC。

  • AZ(Available Zone):可用区,具有独立的故障隔离空间,拥有独立网络设施或电力设备,由相邻的单个或多个 PDC 组成。

Region:地理区域,有多可用区所组成的集合,区域之间故障域完全隔离。

2 多活逻辑架构



按照用户分布到不同的数据中心,多个数据中心都提供服务,在一个数据中心出现问题时,可以随时将流量切到另外一个正常的数据中心。

 

  1. 服务规划:根据业务不同功能,将服务拆分为分片服务,共享服务,竞争服务,索引服务,控制服务以及管理服务。各服务类型单独设置路由规则,同时支持灰度路由;

  2. 统一服务路由:从接入层到服务层以及最终的数据层,都遵守统一基于 cell 的路由策略,保证同一用户的交易在一个数据中心完成;

  3. 数据高可用:多数据中心保证数据库高可用,采用数据全冗余方式,数据在任何一个数据中心都是可用的,从而保证高可用,任一数据中心故障,不影响数据的可用性。

 

相关服务和路由介绍,请参考原有苏宁多数据中心多活设计方案[1]

3 混合云总体架构



  • 混合云方案是基于苏宁现有多数据中心多活方案进行的延伸和拓展,所有的请求尽量收敛在同一个 LDC,尽量避免跨机房调用,降低端到端的网络延迟,降低故障恢复时间和提升安全管控。

  • 混合云基于对公有云的 IaaS 资源进行统一纳管,尽量使得 PaaS(中间件)和 SaaS(业务)保持不变,降低业务改造成本。

  • 混合云的主机房设置在私有云,以便统一监控以及更好的数据保护(包括大数据处理)

  • 所有发布和流程管控都通过私有云进行处理和管控。

4 混合云网络拓扑架构



数据中心之间网络采用环状方式连接,任何一条线路都不影响多个数据中心之间的连通性,比如原有私有云 LDC#1 跟公有云通过线路 #3 连通,当线路 #3 故障,则公有云通过线路 #4 和线路 #1/#2 跟私有云 LDC#1 进行联通。也就是说,公有云与私有云之间,以及私有云和私有云之间的网络不会出现单点故障,从而确保整个网络连通稳定性。

关键技术特性

异地混合云主要关键特性如下:

  • IaaS 多云管理:通过云管平台统一纳管私有云和公有云计算、网络、存储资源,从而降低上层 PaaS 和 SaaS 的变更。

  • 安全管控:通过东西网关引入和端口管控以及数据加密存储,降低混合云安全风险

  • 多机房拓扑管理:通过优化原有多活的拓扑管理,支持 N>=3 个机房的数据库和缓存等数据层流量切换和拓扑管理

  • 降成本措施

  • 一键建站:通过部署编排以及部署复用,降低人工反复部署的人力成本和租用成本

  • 非对称部署:由于公有云相比私有云处理能力较强,因此对于 APP、DB、Redis 非对称部署,可以大大降低在公有云的租用成本

  • 压缩传输和限速:由于异地部署带宽资源成本较高,因此通过 MySQL/HBase 等压缩传输和限速,降低跨机房带宽成本。

1 IaaS 多云管理



PaaS(比如 APP 或数据库等)通过资源编排层调用私有云 IaaS SDK 或公有云 IaaS SDK,从而创建相应的服务,资源编排层对上层 PaaS/SaaS 屏蔽对应的底层 IaaS 层差异,简化上层 PaaS 和 SaaS 的业务改造。其中公有云对接主要涉及以下三种资源:

  • 计算资源: 根据不同业务类型选用不同的计算资源型号。

  • 网络资源(比如 VPC/SLB/EIP/NAT 等): 对接公有云网络资源,主要涉及 VPC,子网,VPN/专线网关,SLB, EIP,NAT 等。

  • 存储资源(比如 OSS 等): 为了降低相应的成本,镜像资源等存放到公有云的 OSS。同时为了实现部分系统计算存储分离,通过对接公有云的块存储来实现。

2 混合云数据层拓扑结构



  • 有别于星型拓扑结构,多个 LDC 采用网状方式连接,写 LDC 写操作将同步到各个机房,从而简化整个拓扑管理。

  • 写机房切换:当写机房故障或切换到新的机房,则所有写机房将重建复制关系到其它机房。

3 安全管控

(1)东西网关



由于目前 RPC 跨机房直接访问 APP,导致出现网状连接,并且没有固定目标端口,不利于网络安全隔离,因此需要引入东西网关进行跨机房访问安全隔离并进行管控,避免公有云与私有云请求随意访问,提升混合云的安全性。

(2)网络管控



  • 私有云:在私有云的 DCI 交换机根据网段进行隔离,仅允许特定公有云网段访问私有云

  • 公有云:

  • 外部用户:所有外部用户访问公有云应用,其 SSL 证书通过公有云 SLB 进行证书卸载,确保端到端的传输安全,其次在公有云 VPC 内部,应用访问都需经过 WAF 进行过滤确保欺诈流量的剔除。确保外部流量的访问安全。

  • VPC:公有云与私有云之间子网根据不同子网和特定端口进行 ACL 隔离,对于特定实例访问采用安全组进一步进行 ACL 隔离,确保公私有云之间,以及实例间访问的安全性

  • 运维:运维人员通过堡垒机才能接入到公有云的 VPC 进行运维,确保公有云的运维访问的安全。

(3)加密存储



  • 私有云:对应数据库(MySQL、HBase 等)无需加密存储。

  • 公有云:则根据业务需要(敏感数据加密,比如银行卡或账务数据),可以按照表级别或库级别加密存储,并加密方式备份到远程存储以及恢复。

4 降成本解决方案

(1)一键建站



建站模型主要由以下几个阶段组成:

  • 网络资源创建与编排

  • 物理/虚拟资源集群创建与编排

  • 基础组件创建与编排

  • 业务系统创建与编排

  • 数据复制与同步

  • 流量划拨与切换

相关资源预先申请和编排完成,建站时,一键式实现资源的创建,业务部署,数据同步,流量划拨,白名单拨测等。一键建站节省了人工的部署的成本,提升了建站的效率, 从而降低资源租用成本和人力成本。

(2)非对称部署


APP 非对称部署



由于公有云与私有云的计算资源处理能力不同,为了简化计算资源部署,公有云与私有云的部署采用相同的规格,但是针对不同流量,部署不同的实例个数,从而降低公有云资源成本。

当大促流量划拨到公有云后,可以缩容私有云 APP 的部署实例数,以降低私有云资源成本。

同时,充分利用公有云的弹性能力,在前期预热阶段,采用最小化部署,验证主要功能,在大促期间,扩容到正常规模,以减少资源成本。


数据库非对称部署



  • 私有云:数据库的计算节点和存储是一体,弹性能力较弱,容量规划需要预留较大冗余。

  • 公有云:在公有云可以利用公有云 IaaS 能力实现计算节点和存储节点分离,其中计算节点可以根据流量大小垂直扩缩容,这样可以大大降低公有云部署成本。


缓存非对称部署



由于公有云的处理能力较为强劲,为了降低公有云的缓存部署成本,采用非对称部署方式进行部署,对于私有云多个 Shard(分库)合并部署到公有云,降低整体部署成本。具体方案是源端通过抽取工具获取 Redis 变更数据写入到中间存储介质,然后目标端通过订阅逻辑变更数据再写入目标 Redis 集群(有别于源端的 Redis 集群拓扑结构)。

(3)缓存冷热数据分离



由于目前缓存的内存采用 1:1 复制方式,公有云和私有云缓存内存大小必须一致(即使公有云的缓存能够支持更多流量),这会导致公有云的算力资源浪费。根据苏宁缓存使用特征,热点数据一般低于 20%,大部分都是冷数据,因此对缓存采用冷热数据分离,DRAM 仅保留热数据,而对于全量数据,则写入到 SSD 盘或持久化内存,避免公有云资源浪费。

(4)数据库传输优化



由于异地传输的带宽成本相对较高,因此对传输量较高的复制操作做如下操作,以便降低相应的传输成本:

  • 支持压缩传输:比如 MySQL,公有云与私有云跨机房使用压缩传输, 从而减少异地部署的带宽要求

  • 不支持压缩传输:比如倒排索引或部分 HBase,对延迟不敏感,因此对于倒排索引/HBase 的传输采用限速,降低异地跨机房带宽要求

总结

当前,苏宁混合云项目经历一年左右的建设,已初具规模,能够为苏宁后续大促保驾护航,降低大促扩容成本,以及私有云资源长期持有成本;此外,利用公有云弹性能力和分时计费特性,后续规划将测试环境上云,从而进一步降低测试资源运行成本,朝着“保大促、降成本”两个核心目标继续稳步迈进。

参考文献:

  1. 陈跃泉,涂成义,马忠成,” 历时三年,苏宁如何建设多数据中心多活的实践项目”, InfoQ, 2020

作者介绍:

陈跃泉,云网万店集团 IT 总部 CTO 办公室,架构总监,苏宁多数据中心多活项目首席架构师和混合云项目总体技术负责人,拥有 16 年零售、电信、金融等超大型或大型项目架构设计经验,对大规模分布式系统 PaaS 和 IaaS 架构设计有深入的理解和思考。

 

涂成义,云网万店集团 IT 总部 CTO 办公室,高级架构师,曾在华为,中兴等多家 IT 公司任职架构设计,技术负责人。目前专注于云计算相关技术研究,对高并发,高可用架构有较深入的理解和思考,混合云项目核心成员。

 

马忠成,云网万店集团 IT 总部 CTO 办公室,高级架构师,混合云项目核心成员,在加入苏宁之前从事多年的运营商 IPTV、CDN 研发设计和规划工作。

2021 年 3 月 31 日 09:001617

评论 2 条评论

发布
用户头像
加油
2021 年 03 月 31 日 11:27
回复
用户头像
满满的干货,棒,有幸参与
2021 年 03 月 31 日 10:39
回复
没有更多了
发现更多内容

不草率,你只管下载资料,剩下的交给「哇哦」

小Q

Java 学习 架构 面试 分布式

SpringCloud轻松集成Dubbo实现RPC调用

Barry的异想世界

微服务 dubbo nacos RPC spring cloud alibaba

基于Goc的Golang代码VSCode实时染色方案

大卡尔

go 测试覆盖率 精准测试

金沙账号审核不通过维护不给提现风控怎么回事?怎么办

过山太阳

内容审核 提现不了

【高并发】Redis如何助力高并发秒杀系统,看完这篇我彻底懂了!!

冰河

redis 多线程 高并发 秒杀 电商超卖

服了,十年运维架构专家的MySQL运维经验,除了实战还是实战

周老师

Java 编程 程序员 架构 面试

央行数研所推出贸易金融区块链平台

CECBC区块链专委会

区块链 金融

一点 Go Web 编程实践经验

Garfield

go Go web

Golang领域模型-实体

奔奔奔跑

go 架构 领域驱动设计 DDD 微服务拆分

藏在Java数组的背后,你可能忽略的知识点

Java架构师迁哥

区块链赋能市场监管 浙江上线“黑科技”清除取证固证难题

CECBC区块链专委会

区块链 市场监管 取证难题

我们该怎么保护手机屏幕前的父母?

徐说科技

手机 短视频

企业中台化落地:从战略分析到战术实践及架构演进过程

Barry的异想世界

架构设计 策略模式 模板方法模式 中台架构 领域驱动设计DDD

一文解开java中字符串编码的小秘密

程序那些事

java安全编码 java编码指南 UTF编码

区块链技术发展的十大趋势

CECBC区块链专委会

区块链 金融 安全问题

oeasy教您玩转 linux 010212 管道 pipe

o

Dubbo-go应用维度注册模型

apache/dubbo-go

dubbo dubbo-go dubbogo

为什么每个微服务要有自己独立的数据库?

码猿外

数据库 架构 微服务

我理解的面向对象(ObjectiveSql 实践)

Braisdom

Java ORM框架 ORM

宅家三个月玩转算法,再战字节跳动,字节跳动面试官朝我比了个“ok”

云流

编程 字节跳动 算法 Java 面试

Java四种引用类型:强引用、软引用、弱引用、虚引用

简爱W

TOGAF认证课由2天变化为5天的思考

周金根

企业架构 TOGAF

业务架构学习内容有哪些?

周金根

BIZBOK 业务架构

week11--作业

Geek_165f3d

LeetCode 169. Majority Element

liu_liu

算法 LeetCo

澳门金沙玩赢了钱提现不了异常注单未更新有什么办法处理?

丛林里的余光

异常检测 澳门金沙 提现不了

面试必问亿级流量优化策略之JVM调优,文档视频面试,还不收藏

小Q

Java 程序员 架构 JVM jvm调优

架构师课作业 - 第十三周

Tulane

Go: 理解 Sync.Pool 的设计

陈思敏捷

go golang sync sync.pool pool

阿里培训官给新入职程序员的25条建议

Java架构师迁哥

从新浪数字化转型,窥见互联网的“懂行”新十年

脑极体

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

从上云策略到架构设计,苏宁如何实践异地混合云方案?-InfoQ