我去面试一个架构师岗位。
面试官:我们平台突然涌入几亿外国人,架构要怎么改造?
我:你们平台现在是什么架构?
面试官:单机房架构。
我:单机房架构,它最大的特点就是“全连接”分层架构。
首先,系统架构是分层的:
1. 站点层;
2. 服务层;
3. 数据库与缓存层。
其次,层与层之间的连接池是全连接的。
如上图所示:
1. 站点层集群全连接服务层集群;
2. 服务层集群全连接数据库集群;
3. 如果有缓存,它们还全连接缓存集群;
面试官:“全连接”分层架构能直接扩展到多机房多活吗,我们老板有计划在北美搞一个机房?
我:不行。
如果直接将单机房“全连接”分层架构复制到多机房多活,就会有非常多的跨机房的连接:
1. 站点层连接服务层,一半的请求跨机房;
2. 服务层连数据库,一半的请求跨机房;
3. 站点和服务连缓存,一半的请求跨机房;
面试官:一半的请求跨机房连接,有问题吗?
我:当然有问题。
同机房连接,内网的性能损耗几乎可以忽略不计。一旦涉及到跨机房的访问,即使机房和机房之间有专线,访问的时延可能增加到秒级,如果机房在北美,跨机房请求可能要几十秒。
如果一个业务请求要访问10个服务,一半请求跨机房,光花在网络上的请求都达到几十秒,用户体验不能接受。
面试官:那怎么办呢?
我:如果业务具备地域特性的聚集效应,可以使用单元化架构。
面试官:什么叫业务具备地域特性的聚集效应?什么叫做单元化架构?
我:举个例子吧,DD打车。
1. 下单用户在一个城市;
2. 接单司机在一个城市;
3. 交易订单在一个城市;
只需要按照地域,部署多个机房,机房内部站点层,服务层,缓存层,数据层都只连接同一个机房。数据层跨机房同步,即使有1分钟的延时,对业务也不会影响。这类业务,就具备地域特性。
这种只访问自己机房的多机房多活架构,就叫做单元化架构。具体到你们的场景:
1. 在东大机房部署一套,东大用户访问这一套。
2. 在北美机房部署一套,北美用户访问那一套。
就能够快速解决。
面试官:不行呀,TT就是玩这种架构,崩盘了。泼天的富贵这不才过来的吗?
我:我建议,你们又不是交易类型的业务,只需要:
1. 发布文章,评论文章;
2. 发布视频,评论视频;
UP主和粉丝,即使有个十几秒数据延时,不影响。只要不直播,用户无感知。
因此直接在东大扩容机房,就能够搞定。
我:简单总结,单元化架构是一种能够快速扩容的多机房多活方案。但前提是,业务必须满足地域性聚集效应。
知其然,知其所以然。
思路比结论更重要。
https://blog.csdn.net/A_art_xiang/article/details/135597927文章较长,中文,来自csdn。
配图来自阿里云。
==全文完==
讲技术的宝藏号,日更,保护起来。
点赞,转发,在看,感激不尽!