2021.11.11
淘宝双十一当日要处理千亿级的交易额,堪称当今世界IT系统独一无二的挑战,其背后有着怎样的技术架构和技术支撑体系?
双十一背后的技术架构
按需伸缩:弹性混合云架构
每年淘宝都要应对双11、新春红包等活动的极高交易量。尽管单元化架构让阿里具备应对峰值的能力,但要降低高峰期的资源投入,系统还需具备按需伸缩的能力。
阿里解决这个问题的方法是,活动前在云计算平台快速申请资源,构建新的单元、部署应用与数据库。然后将流量与数据“弹出”到新的单元,快速提升系统容量。当活动结束后,再将流量与数据“弹回”,释放云计算平台上的资源。
通过这种方式,可以大大降低资源采购与运行成本。弹性操作,需要在流量、数据与资源之间协调一致地操作,尤其是有状态的数据的弹性操作最困难,既不能不中断业务,又要保证数据的一致性。这些操作如果依靠运维人员人工执行则会十分复杂低效,因而需要架构、中间件与管控系统的支持。
云平台是把海量机器资源,通过统一的资源管理,抽象为一个资源整体,在之上可按需动态申请硬件资源(如CPU、内存、网络等),并且之上提供通用的操作系统,提供常用的技术组件(如Hadoop技术栈,MPP数据库等)供用户使用,甚至提供开发好的应用,用户不需要关系应用内部使用了什么技术,就能够解决需求(如音视频转码服务、邮件服务、个人博客等)。
异地多活与容灾:单元化架构
异地多活与容灾架构的基础是对系统进行单元化。每个单元可以认为是一个缩小规模的、包含从接入网关、应用服务到数据存储的全功能系统。每个单元负责一定比例的数据与用户访问。
有以下关键特性:
自包含性:比如用户的一次账户充值交易,涉及的所有计算与数据都在一个单元内完成。
松耦合性:跨单元之间只能进行服务调用,不能直接访问数据库或其他存储。对于一些必须跨单元的交易处理,比如分属于两个不同单元的用户之间的转账交易,跨单元的服务调用次数尽可能少,在业务与用户体验允许的情况下尽量异步处理。这样,即使两个单元之间相距上千千米,也可以容忍跨单元的访问时延。
故障独立性:一个单元内的故障,不会传播到其他单元。
容灾性:单元之间相互备份,确保每个单元在同城和异地都有可在故障期间进行接管的单元。数据在单元间的备份方式,阿里以OceanBase提供的多地多中心强一致方案为主。
通过异地多活,系统可以在全国范围内任意扩展,服务器资源得到了充分利用,提升了系统应对地区级灾难的能力。