当前位置:网站首页>6年技术迭代,阿里全球化出海&合规的挑战和探索
6年技术迭代,阿里全球化出海&合规的挑战和探索
2022-07-01 13:19:00 【InfoQ】
一、业务发展历程
1.1 业务背景

- 上图展示了当前阿里全球化业务重点覆盖的国家/地区,可以看到业务重点国家/地区横跨亚、欧、美三大洲,业务诉求差异导致技术方案差异明显,一套端到端的技术方案不可能完美支持所有的国家/地区,但是差异化的层次组合/定制被实践证明可行,这对我们【系统的标准化】提出了要求;
- 粗放收割的时代已经过去,在精细化运营时代,应对用户体验/合规监管,更靠近用户的技术方案部署,是本地体验构筑的基础,这又对我们【系统的轻量化】提出了要求;
- 随着数字化时代的日益深入,数字化/智能化正越来越深刻地影响和改变着人类社会的方方面面。作为全球化业务,不论我们的用户来自发达国家还是发展中国家,让数字/智能助力用户生活更美好,永远是我们坚持的目标,而这也对我们【系统的智能化】提出了要求。
1.2 技术体系迭代过程

- 阶段一,基于国内淘宝、天猫、搜推等团队的系统,在6个月的时间搭建了全套支持Lazada的新电商内核系统。
- 阶段二,在这套电商内核系统上进行相应定制,搭建了全套支持Daraz的新电商系统。
- 阶段三,将这套电商内核和AE系统进行了深度融合,同时引入了淘宝、天猫等团队的优秀系统解决方案,形成了可同时支持本地+跨境交易模式的国际化中台的雏形。
- 阶段四,以上述融合版本为基础,合并Lazada、Daraz、天猫淘宝海外,完成国际化中台技术分支的4合1动作,最终形成了现在1个中台支撑N个站点的全球化新架构。
- 阶段五,国际化中台开源策略开始落地,历时1年多到2021年11月完成中台全链路开源,全球化业务和中台各自闭环迭代局面形成。
- 阶段六,未来已来,敬请期待。
二、全球化基础设施层面面临的挑战
- 全球部署:无论是考量用户体验,还是考量监管合规,将基础设施进行全球化部署都是全球化业务必须要建设的基础能力,全球部署的基础设施也直接决定了全球化技术体系的很多具体架构形态,同时全球部署的基础设施本身的建设维护也是巨大的挑战。
- 性能:这里说的性能指用户请求处理的时延,用户从发起请求到接收到响应的延时越短,代表性能越好。而全球互联网服务在延时上有天然的挑战,即物理距离更长,机房可能在美国,而用户可能在澳大利亚。我们测试数据显示美国用户请求美国互联网服务一般的网络RTT是10ms以内,而俄罗斯用户请求美国西部机房的RTT在150ms到300ms之间不等,这直接导致用户的全屏加载时间会多出1秒钟,而1秒钟会造成转化率下降,甚至是用户流失。
- 可用性:服务全球用户还有成本上的挑战,这个挑战会同时带来系统可用性上的挑战。如果仅从本地视角保障可用性,则我们需要在每个本地都建设双机房保障高可用,但这样就无法利用其它区域机房的闲置资源,整体成本也会非常高昂。而我们7*24小时的可用性要求建立在全球视角上,因此,如果能做到全球范围的异地容灾,就可以在成本可接受的范围内,较好地兼顾用户的可用性。
- 数据一致性:数据一致性挑战是指当有数据被全球多地用户共享且多地用户都会进行读写时,如何确保数据一致?举例:全球买全球卖的场景,买家在本地数据中心创建订单,卖家在其本地数据中心维护订单,如果是同一笔订单且买家与卖家在不同的数据中心,如何保证多地读写一致?当全球数据中心之间相互灾备时,也会存在多地读写的情况,如何保证数据一致。
三、基于云的出海落地实践
3.1 海外部署和容灾实战
3.1.1 阿里云基础设施
- IAAS层:依托于阿里云全球一致的基础设施,我们搭建了涉及全球6大区域、13个物理机房、17个逻辑机房(AZ)的海外数字商业的基础设施,在享受弹性资源能力的同时却无需在多个国家/地区部署和维护数据中心。
- PAAS层:依托于阿里云各类中间件/云产品进行全球部署,从而自上而下地解决全球化的一系列技术挑战。

3.1.2 全球化部署架构

- 网络层:用户根据DNS就近解析到最近的机房IDC,到达该机房的统一接入层。
- 接入层:需要桥接一个统一路由层来对用户归属进行强一致性纠偏,即在接入层调用路由服务,查询用户的归属并实现跨机房调度,来达到用户跨机房跳转的目的。
- 服务层:对于强一致性数据,例如支付、交易等,需要对统一路由层的用户归属进行保障性兜底,即如果统一路由层路由错误,那么MSE层也需要将服务跨机房调用回用户正确归属的机房进行消费;同时针对共享型数据的一致性问题,需要拓展出中心读写的跨机房服务调用功能;简而言之,在MSE层需要实现根据用户归属或者中心机房消费的跨机房调用功能。
- 数据库层:我们通过扩展其插件,实现了禁写功能,同样是对于用户归属错误和数据强一致性保障的兜底,即用户归属区域如果和实际调用区域不一致,我们将会对其禁写保护,来避免不同区域之间的数据脏写。
- 数据同步层:中心机房和区域机房之间数据进行双向同步,保障异地容灾的数据一致性,避免用户区域更改后的数据缺失情况。

- 【流量染色】端上请求识别,确定是什么租户的流量,并对流量进行染色
- 【精确选址】基于流量染色,以及接入网关层的服务路由能力,精确选址到租户所在物理集群
- 【链路透传】集群单个服务实例内部,需要解决租户标的透传问题,以及跟上下游同步、异步交互过程中租户信息的透传
- 【资源隔离】在内部业务逻辑执行过程中,对任何资源的操作,都需要考虑隔离性问题,比如配置,数据,流量等
3.1.3 全球容灾解决方案
- Region级和网络不可用:机房级不可用,外网入口无法抵达物理机房或者各个物理机房之间无法互通。
- 服务级不可用:外网/内网连通性正常,服务不可用。
- 数据层不可用:DB/缓存不可用。

- 网络容灾:用户的第一跳网络路由之外(如小区网络异常我们基本没有什么操作空间),在接下来的第2->N跳,我们分别可以建设网络运营商切换能力(多CDN厂商互切),机房链路切换能力(Region级别互切),机房入口运营商切换能力(IDC网络团队互切)等各种手段来尝试进行灾难恢复。
- 接入层容灾:在流量抵达阿里云机房,进入内部网关路由层后,按照用户粒度级别、Api粒度级别等多维度进行实时流量纠偏,秒级生效。在网络以及网关产品无异常的情况下,接入层容灾是日常态被应用、演练次数最多的容灾方案。
- 服务层容灾:对于某些强中心服务,例如库存、营销等单区域扣减服务,也需要建设其灾备能力。
- 数据层容灾:对于多活架构,在确保数据单一Master的基础上,确保容灾过程中数据不会脏写。对于合规场景,考虑某些Region不具备敏感数据,实现有限定场景下的合规容灾能力。
3.2 全球数据合规实战
3.2.1 全球合规领域介绍

3.2.2 数据合规要求与部署架构

3.2.3 本地存储解决方案

3.3 应用架构云原生化
3.1 传统应用架构面临的挑战

- 应用架构不可持续:富应用交付模式下,在软件生产过程中,始终存在一个单点——应用,当应用所支撑的内容逐渐庞大和复杂的时候,那么它将是影响研发效率的关键点,也是影响整个国际化平台架构的可持续性的最大挑战。
- 研发交付不确定性:全球化平台和业务分层的研发模式在目的和变更节奏是不一致的。为解决这两者的差异,会导致应用自身逐渐臃肿和腐蚀,于是给日常研发迭代带来很大的不确定性和不可预见性。
- 运维能力缺乏标准:随着应用自身的复杂度增加,与之匹配的运维能力也会随之增加,而当前提倡的DevOps理念,也衍生出很多相关的产品和工具,但这些产品和工具的标准不统一,进而造成零散繁杂、无统一产品入口的现象,导致运维效率和理解成本不断增加。

- 容器编排技术:通过云原生的容器编排技术将传统的软件交付过程演进为各个容器编排组合式交付,将单个应用交付拆分成多个模块灵活编排交付,从而推动全球化应用交付体系的演进。
- 交付物镜像化:应用不再是研发的唯一对象,而是打造镜像研发体系,基于镜像的不变性来确保交付内容的确定性,并实现平台能力镜像化,具有独立稳定的研发体系。
- 统一运维标准:借助云原生IaC/OAM等GitOps理念,通过统一的模式去收敛并定义云原生下的应用运维标准。并重新定义业务组织的SRE,通过统一视角去查询、分析、度量应用的运维能力现状和资源使用情况。
3.2 全球化云原生架构实践
3.2.1 基于云原生的应用架构
- IaC:提供统一研发基础设施声明范式。为了将平台对业务依赖进行更好的解耦,降低平台认知成本,我们对站点应用的IaC进行了分层抽象标准定义,围绕全球化场景定义基础设施标准,从规格、日志采集、探针、hook、发布策略等进行统一收敛,降低业务接入IaC成本。
- OAM:提供统一应用模型的定义。依托于OAM开发和运维关注点分离、平台无关与高可扩展、模块化应用部署和运维等特点,我们对业务和平台面向应用的标准进行规范定义,从而更好地链接应用开发者、运维人员、应用基础设施,让云原生应用交付和管理流程更加连贯一致。
- GitOps:提供业务研发持续交付能力。基于云原生GitOps声明式理念,可以将外部依赖组件从能力集成到运维管控统一声明在工程之中,进而只需要基于统一的GitOps标准进行依赖能力的声明和定义,从而将组件能力的交付和管控交给底层的GitOps引擎,提升整个软件系统的完整性和可持续性。
- ACK:提供资源统一调度引擎。我们基于阿里云的ACK容器服务,使用其提供的强大的容器编排、资源调度、和自动化运维等能力,实现对不同环境交付不同的业务模块功能,并且基于上层的流量调度,实现业务按需部署,按需调度。
- 容器编排:通过ACK容器灵活编排技术成功的将全球化应用架构再升级,将业务逻辑和基础设施、平台能力、公共富客户端在研发态进行完全隔离,在运行态业务进程和运维进程通过轻量化容器做到相对彻底的隔离,提升整体应用研发交付效率和业务形态的稳定性。

- 基础设施容器(Base Container),其中就包含运维容器、网关容器等应用所依赖的基础设施的能力;
- 临时容器(Temporary Container),该容器不具备任何生命周期,其作用就是为了将自身的研发产物通过Pod下的共享目录集成到主应用容器和业务容器内,完成整个能力的集成和被使用,主要由平台容器构成;
- 业务容器(Business Container),该容器和主应用容器一样,具备完整的生命周期,且通过gRPC完成和主应用的通信,主要由类目、多语等富客户端容器构成。
3.2.2 基于云原生的运维体系

- 应用发布: 智能发布决策、原地升级、滚动升级、分批发布
- 弹性容量: 自动弹性、定时弹性、CPUShare
- 批量运维:应用容器的原地重启、容器置换、日志清理、JavaDump
- 轻量化容器: 运维容器独立、Sidecar编排
- 多容器交付部署: 端口冲突、进程冲突、文件目录共享
- 可观测与稳定性: 应用生命周期、启动异常诊断、白屏化、容器视角监控


四、总结与展望
边栏推荐
- Google Earth engine (GEE) - Global Human Settlements grid data 1975-1990-2000-2014 (p2016)
- Use of shutter SQLite
- 陈宇(Aqua)-安全->云安全->多云安全
- 一款Flutter版的记事本
- Asp.netcore利用dynamic简化数据库访问
- About fossage 2.0 "meta force meta universe system development logic scheme (details)
- 3.4 《数据库系统概论》之数据查询—SELECT(单表查询、连接查询、嵌套查询、集合查询、多表查询)
- 开源者的自我修养|为 ShardingSphere 贡献了千万行代码的程序员,后来当了 CEO
- Simple two ball loading
- Hardware development notes (9): basic process of hardware development, making a USB to RS232 module (8): create asm1117-3.3v package library and associate principle graphic devices
猜你喜欢

【机器学习】VAE变分自编码器学习笔记

学历、长相、家境普通的人,未来的发展方向是什么?00后的职业规划都已经整得明明白白......

一款Flutter版的记事本

香港科技大学李泽湘教授:我错了,为什么工程意识比上最好的大学都重要?

Huawei HMS core joins hands with hypergraph to inject new momentum into 3D GIS

Meta enlarge again! VR new model posted on CVPR oral: read and understand voice like a human

北斗通信模块 北斗gps模块 北斗通信终端DTU

Explain IO multiplexing, select, poll, epoll in detail

简单的两个圆球loading加载

Simple two ball loading
随机推荐
Investment analysis and prospect prediction report of global and Chinese dimethyl sulfoxide industry Ⓦ 2022 ~ 2028
Anti fraud, refusing to gamble, safe payment | there are many online investment scams, so it's impossible to make money like this
Blind box NFT digital collection platform system development (build source code)
Analysis report on the development prospect and investment strategy of the global and Chinese laser chip industry Ⓑ 2022 ~ 2027
How much money do novices prepare to play futures? Is agricultural products OK?
The stack size specified is too small, specify at least 328k
Shangtang technology crash: a script written at the time of IPO
Summary of interview questions (1) HTTPS man in the middle attack, the principle of concurrenthashmap, serialVersionUID constant, redis single thread,
Leetcode第一题:两数之和(3种语言)
Spark source code (V) how does dagscheduler taskscheduler cooperate with submitting tasks, and what is the corresponding relationship between application, job, stage, taskset, and task?
波浪动画彩色五角星loader加载js特效
陈宇(Aqua)-安全->云安全->多云安全
SAP 智能机器人流程自动化(iRPA)解决方案分享
Benefiting from the Internet, the scientific and technological performance of overseas exchange volume has returned to high growth
MySQL 66 questions, 20000 words + 50 pictures in detail! Necessary for review
终端识别技术和管理技术
Have you ever encountered the problem that flynk monitors the PostgreSQL database and checkpoints cannot be used
Fiori applications are shared through the enhancement of adaptation project
Analysis report on the development prospect and investment strategic planning of China's wafer manufacturing Ⓔ 2022 ~ 2028
1. Sum of two numbers: given an integer array num and an integer target value, please find the two integers whose sum is the target value target in the array and return their array subscripts