首页 >行情 > > 正文

架构设计思想AKF拆分原则

清一色财经 2023-07-09 17:24:03

当然,X、Y、Z 轴的扩展并不是孤立的,我们可以同时应用这 3 个维度扩展系统。分布式系统非常复杂,AKF 给我们提供了一种自上而下的方法论,让我们能够针对不同场景下的性能瓶颈,以最低的成本提升性能。​

当我们需要分布式系统提供更强的性能时,该怎样扩展系统呢?什么时候该加机器?什么时候该重构代码?扩容时,究竟该选择哈希算法还是最小连接数算法,才能有效提升性能?在面对 Scalability 可伸缩性问题时,我们必须有一个系统的方法论,才能应对日益复杂的分布式系统。这一讲我将介绍 AKF 立方体理论,它定义了扩展系统的 3 个维度,我们可以综合使用它们来优化性能。

什么是AKF

AKF 立方体也叫做scala cube,它在《The Art of Scalability》一书中被首次提出,旨在提供一个系统化的扩展思路。AKF 把系统扩展分为以下三个维度:


【资料图】

X 轴:直接水平复制应用进程来扩展系统。也就是”加机器解决问题”,集群Y 轴:将功能拆分出来扩展系统。Z 轴:基于用户信息扩展系统。也就是数据分区

如下图所示:

图片

如何基于 AKF X 轴扩展系统?

我们日常见到的各种系统扩展方案,都可以归结到 AKF 立方体的这三个维度上。而且,我们可以同时组合这 3 个方向上的扩展动作,使得系统可以近乎无限地提升性能。为了避免对 AKF 的介绍过于抽象,下面我用一个实际的例子,带你看看这 3 个方向的扩展到底该如何应用。假定我们开发一个博客平台,用户可以申请自己的博客帐号,并在其上发布文章。最初的系统考虑了 MVC 架构,将数据状态及关系模型交给数据库实现,应用进程通过 SQL 语言操作数据模型,经由 HTTP 协议对浏览器客户端提供服务,如下图所示:

图片

在这个架构中,处理业务的应用进程属于无状态服务,用户数据全部放在了关系数据库中。因此,当我们在应用进程前加 1 个负载均衡服务后,就可以通过部署更多的应用进程,提供更大的吞吐量。而且,初期增加应用进程,RPS 可以获得线性增长,很实用,如下图:

图片

这就叫做沿 AKF X 轴扩展系统。这种扩展方式最大的优点,就是开发成本近乎为零,而且实施起来速度快!在搭建好负载均衡后,只需要在新的物理机、虚拟机或者微服务上复制程序,就可以让新进程分担请求流量,而且不会影响事务 Transaction 的处理。当然,AKF X 轴扩展最大的问题是只能扩展无状态服务,当有状态的数据库出现性能瓶颈时,X 轴是无能为力的。例如,当用户数据量持续增长,关系数据库中的表就会达到百万、千万行数据,SQL 语句会越来越慢,这时可以沿着 AKF Z 轴去分库分表提升性能。又比如,当请求用户频率越来越高,那么可以把单实例数据库扩展为主备多实例,沿 Y 轴把读写功能分离提升性能。下面我们先来看 AKF Y 轴如何扩展系统。

如何基于 AKF Y 轴扩展系统?

当数据库的 CPU、网络带宽、内存、磁盘 IO 等某个指标率先达到上限后,系统的吞吐量就达到了瓶颈,此时沿着 AKF X 轴扩展系统,是没有办法提升性能的。在现代经济中,更细分、更专业的产业化、供应链分工,可以给社会带来更高的效率,而 AKF Y 轴与之相似,当遇到上述性能瓶颈后,拆分系统功能,使得各组件的职责、分工更细,也可以提升系统的效率。比如,当我们将应用进程对数据库的读写操作拆分后,就可以扩展单机数据库为主备分布式系统,使得主库支持读写两种 SQL,而备库只支持读 SQL。这样,主库可以轻松地支持事务操作,且它将数据同步到备库中也并不复杂,如下图所示:

图片

当然,上图中如果读性能达到了瓶颈,我们可以继续沿着 AKF X 轴,用复制的方式扩展多个备库,提升读 SQL 的性能,可见,AKF 多个轴完全可以搭配着协同使用。拆分功能是需要重构代码的,它的实施成本比沿 X 轴简单复制扩展要高得多。在上图中,通常关系数据库的客户端 SDK 已经支持读写分离,所以实施成本由中间件承担了,这对我们理解 Y 轴的实施代价意义不大,所以我们再来看从业务上拆分功能的例子。当这个博客平台访问量越来越大时,一台主库是无法扛住所有写流量的。因此,基于业务特性拆分功能,就是必须要做的工作。比如,把用户的个人信息、身份验证等功能拆分出一个子系统,再把文章、留言发布等功能拆分到另一个子系统,由无状态的业务层代码分开调用,并通过事务组合在一起,如下图所示:

图片

这样,每个后端的子应用更加聚焦于细分的功能,它的数据库规模会变小,也更容易优化性能。比如,针对用户登录功能,你可以再次基于 Y 轴将身份验证功能拆分,用 Redis 等服务搭建一个基于 LRU 算法淘汰的缓存系统,快速验证用户身份。然而,沿 Y 轴做功能拆分,实施成本非常高,需要重构代码并做大量测试工作,上线部署也很复杂。比如上例中要对数据模型做拆分(如同一个库中的表拆分到多个库中,或者表中的字段拆到多张表中),设计组件之间的 API 交互协议,重构无状态应用进程中的代码,为了完成升级还要做数据迁移,等等。解决数据增长引发的性能下降问题,除了成本较高的 AKF Y 轴扩展方式外,沿 Z 轴扩展系统也很有效,它的实施成本更低一些,下面我们具体看一下。

如何基于 AKF Z 轴扩展系统?

不同于站在服务角度扩展系统的 X 轴和 Y 轴,AKF Z 轴则从用户维度拆分系统,它不仅可以提升数据持续增长降低的性能,还能基于用户的地理位置获得额外收益。仍然以上面虚拟的博客平台为例,当注册用户数量上亿后,无论你如何基于 Y 轴的功能去拆分表(即“垂直”地拆分表中的字段),都无法使得关系数据库单个表的行数在千万级以下,这样表字段的 B 树索引非常庞大,难以完全放在内存中,最后大量的磁盘 IO 操作会拖慢 SQL 语句的执行。这个时候,关系数据库最常用的分库分表操作就登场了,它正是 AKF 沿 Z 轴拆分系统的实践。比如已经含有上亿行数据的 User 用户信息表,可以分成 10 个库,每个库再分成 10 张表,利用固定的哈希函数,就可以把每个用户的数据映射到某个库的某张表中。这样,单张表的数据量就可以降低到 1 百万行左右,如果每个库部署在不同的服务器上(具体的部署方式视访问吞吐量以及服务器的配置而定),它们处理的数据量减少了很多,却可以独占服务器的硬件资源,性能自然就有了提升。如下图所示:

图片

分库分表是关系数据库中解决数据增长压力的最有效办法,但分库分表同时也导致跨表的查询语句复杂许多,而跨库的事务几乎难以实现,因此这种扩展的代价非常高。当然,如果你使用的是类似 MySQL 这些成熟的关系数据库,整个生态中会有厂商提供相应的中间件层,使用它们可以降低 Z 轴扩展的代价。再比如,最开始我们采用 X 轴复制扩展的服务,它们的负载均衡策略很简单,只需要选择负载最小的上游服务器即可,比如 RoundRobin 或者最小连接算法都可以达到目的。但若上游服务器通过 Y 轴扩展,开启了缓存功能,那么考虑到缓存的命中率,就必须改用 Z 轴扩展的方式,基于用户信息做哈希规则下的新路由,尽量将同一个用户的请求命中相同的上游服务器,才能充分提高缓存命中率。Z 轴扩展还有一个好处,就是可以充分利用 IDC 与用户间的网速差,选择更快的 IDC 为用户提供高性能服务。网络是基于光速传播的,当 IDC 跨城市、国家甚至大洲时,用户访问不同 IDC 的网速就会有很大差异。当然,同一地域内不同的网络运营商之间,也会有很大的网速差。例如你在全球都有 IDC 或者公有云服务器时,就可以通过域名为当地用户就近提供服务,这样性能会高很多。事实上,CDN 技术就基于 IP 地址的位置信息,就近为用户提供静态资源的高速访问。

下图中,我使用了 2 种 Z 轴扩展系统的方式。首先是基于客户端的地理位置,选择不同的 IDC 就近提供服务。其次是将不同的用户分组,比如免费用户组与付费用户组,这样在业务上分离用户群体后,还可以有针对性地提供不同水准的服务。

图片

沿 AKF Z 轴扩展系统可以解决数据增长带来的性能瓶颈,也可以基于数据的空间位置提升系统性能,然而它的实施成本比较高,尤其是在系统宕机、扩容时,一旦路由规则发生变化,会带来很大的数据迁移成本,[第 24 讲] 我将要介绍的一致性哈希算法,其实就是用来解决这一问题的。

小结

这一讲我们介绍了如何基于 AKF 立方体的 X、Y、Z 三个轴扩展系统提升性能。X 轴扩展系统时实施成本最低,只需要将程序复制到不同的服务器上运行,再用下游的负载均衡分配流量即可。X 轴只能应用在无状态进程上,故无法解决数据增长引入的性能瓶颈。Y 轴扩展系统时实施成本最高,通常涉及到部分代码的重构,但它通过拆分功能,使系统中的组件分工更细,因此可以解决数据增长带来的性能压力,也可以提升系统的总体效率。比如关系数据库的读写分离、表字段的垂直拆分,或者引入缓存,都属于沿 Y 轴扩展系统。Z 轴扩展系统时实施成本也比较高,但它基于用户信息拆分数据后,可以在解决数据增长问题的同时,基于地理位置就近提供服务,进而大幅度降低请求的时延,比如常见的 CDN 就是这么提升用户体验的。但 Z 轴扩展系统后,一旦发生路由规则的变动导致数据迁移时,运维成本就会比较高。当然,X、Y、Z 轴的扩展并不是孤立的,我们可以同时应用这 3 个维度扩展系统。分布式系统非常复杂,AKF 给我们提供了一种自上而下的方法论,让我们能够针对不同场景下的性能瓶颈,以最低的成本提升性能。

上一篇:噪声作业分级最新版(噪声作业分级的噪声作业分级) 下一篇:最后一页
x
推荐阅读

架构设计思想AKF拆分原则

2023-07-09

噪声作业分级最新版(噪声作业分级的噪声作业分级)

2023-07-09

河南洛阳一院长要求医生多开中药提升收入 已被停职调查

2023-07-09

新疆生产建设兵团第四师可克达拉市 建成80余家民宿促文旅产业发展

2023-07-09

iPhone 15系列将于8月量产 全系采用挖孔屏设计

2023-07-09

北京市平谷区镇罗营镇建设国家级乡村振兴示范区

2023-07-09

“让文体活动‘活’起来”——健身秧歌“跳出”山东枣庄新实践

2023-07-09

男子收取高价“代购”火车票?拘了!

2023-07-09

全球首台!突破多项核心技术

2023-07-09

河北省文旅厅发布确保高温天气旅游安全提示:高温时段减少户外旅游

2023-07-09

意法半导体发布电流隔离高边开关,具备工业负载诊断控制和保护功能

2023-07-09

荷兰政府集体辞职,首相吕特与国王会面

2023-07-08

新疆兵团示范试验麦后复播大豆免耕精播滴灌技术

2023-07-08

上海数交所上线语料库,累计挂牌近30个语料数据产品

2023-07-08

国道之行 从雪山奔向大海丨怒江边,书香把梦想送往远方

2023-07-08

记者实探重庆万州长滩中学安置点,村民:家中已通电,回家最少还要等一周

2023-07-08

【作文家园】初中优秀作文欣赏:晒出我班的牛事

2023-07-08

黑石铺片区开启城市更新,这里将新建公园、产业园、商业体

2023-07-08

长截图怎么截苹果_长截图怎么截

2023-07-08

铭普光磁:预计上半年净利润同比下降76.2%-83.34%

2023-07-08

沈阳77宗地块未动工,另有780万平已动工土地未销售房屋!

2023-07-08

梅内齐聚美职联?外媒:纽约城报价内马尔,球员暂时还没决定

2023-07-08

众信旅游:以匠人之心 琢旅行新体验

2023-07-08

外交部发言人:敦促日方不要试图把机构报告当作排海的“通行证”

2023-07-08

100秒领略多彩贵州之美

2023-07-07

定制衬衫(定制订制)

2023-07-07

再见国米!5000万大将或离队,拜仁大将有望来投

2023-07-07

越秀地产财务管理中心总经理李慧婷兼任越秀服务财务总监

2023-07-07

创耀科技:7月6日Yaolong Tan增持公司股份合计1950股

2023-07-07

【短讯】德国经济复苏难了!5月工业产出数据再度向投资者“泼冷水”

2023-07-07

国能日新(301162.SZ)大股东徐源宏及多位董监拟合计减持不超199.65万股

2023-07-07

普天科技参与编制《5G工业UPF(OT UPF)白皮书》

2023-07-07

外汇局:我国经济回升向好态势明显,有利于外汇储备规模继续保持基本稳定

2023-07-07

国产电影票房“碾压”进口片,好莱坞为何最近不香了?

2023-07-07

【瞳术盛宴】最强瞳术大比拼!哪种瞳术是你心中的最强?

2023-07-07

上汽集团:6月份销售整车40.6万辆

2023-07-07

佳禾食品:咖啡豆价格波动对公司毛利率影响较小

2023-07-07

铝业港股午后走高 中国铝业H股涨近5%

2023-07-07

图片报:金玟哉体检推迟进行,拜仁派队医去韩国成队史最疯狂体检

2023-07-07

Redmi Note 13曝光:原生搭载MIUI 15

2023-07-07

西藏自治区旅发厅发布四条“天湖之旅”主题线路

2023-07-07

住建部:建立城市体检机制,编制城市更新专项规划和年度实施计划,建立房屋全生命周期安全管理长效机制

2023-07-07

司机低头捡手机,“无人驾驶”小轿车迎头撞上大树

2023-07-07

马斯克在2023世界人工智能大会发言,谈AI、人才和无人驾驶

2023-07-07

《英雄联盟》夏季赛意外爆冷输TT后 EDG更换主教练为Maokai

2023-07-07

酷酷英语名(酷酷英语)

2023-07-07

群星悼念李玟去世,娱乐圈从未这么团结过?张杰和王宝强引争议

2023-07-07

房地产行业分析第三季第十三集杠杆,到底高不高?(上)

2023-07-07

泰勒规则提出者称美联储应该把利率再上调一点

2023-07-07

爱情很美味剧情_爱情真美味

2023-07-07

紫牛AI生活|@中、高考生,南京江宁这些景区免费玩!

2023-07-07

聚焦科技,赋能城市:安泰视界“城市生态•智汇未来”论坛成功举行

2023-07-07

建发股份拟募资85亿元投向非房业务,融资必要性与合理性遭质疑

2023-07-06

回应芬兰此前行为,俄宣布9名芬兰外交官为“不受欢迎的人”

2023-07-06

彩礼超6万可举报?江西一地撤销通告:考虑不周!民政局员工:很难推进,很多女同志表达不满……

2023-07-06

宫灯长寿花怎么繁殖(宫灯长寿花繁殖方法)

2023-07-06

项目建设赋能哈密瓜产业高质量发展

2023-07-06

22岁河南女孩徒步西藏遇难原因(22岁河南女孩徒步西藏遇难)

2023-07-06

广东翔顺控股集团:发挥慈善热能助力乡村振兴

2023-07-06

香农芯创涨14.43%

2023-07-06

金科股份:上半年累计交付房屋6.6万套

2023-07-06

四川首创的“税电指数贷”,本月将在全省推开丨关注民营经济“1+2”政策② 观焦点

2023-07-06

天天速讯:如何让一个普通人爱上并坚持跑步?

2023-07-06

我国首个开源桌面操作系统“开放麒麟1.0”发布!

2023-07-06

7月6日 14:17分 金卡智能(300349)股价快速拉升-每日观点

2023-07-06

每日热闻!华为卢广:聚焦技术创新,加快算力产业绿色发展

2023-07-06

天天最资讯丨新能源汽车销量榜单出炉,比亚迪独占鳌头,海外品牌难入前十,自主品牌还有

2023-07-06

天天微资讯!深市公司成长记之永兴材料:“特钢”+“锂电”双轮驱动 资本市场助力企业实现绿色“蝶变”

2023-07-06

微动态丨新时代新征程新伟业|玛纳斯县:东方百合 开出“致富花”

2023-07-06

阔别8年,中山公园这里1.3万平方米的景点升级后重新开放啦!

2023-07-06

美国FCC授权60GHz频段用于短程雷达

2023-07-06

鸿泉物联(688288.SH):目前行驶记录仪“新国标”正处于实施过程中

2023-07-06

7月5日28只基金净值增长超2%

2023-07-06

收入大增!外媒聚焦三一海外业务

2023-07-06

热文:水利部启动主汛期工作机制

2023-07-06

自学手语和聋哑爸爸交流,高考609分的乐清女孩说:有梦就不会累_天天播资讯

2023-07-06

房市崩盘是什么意思(楼市崩盘是什么意思) 世界微速讯

2023-07-06

全球微速讯:断言淄博烧烤“凉了”为时尚早

2023-07-06

当前视点!纸嫁衣2游戏攻略第三章(详细通关步骤分享)

2023-07-05

北京石景山:昔日工业锈带蝶变城市活力秀场 “四篇文章”建好首都西大门

2023-07-05

【环球快播报】扎赉诺尔煤业有限责任公司上半年产销“两旺”

2023-07-05

环球看热讯:迦南智能:公司目前无汽车零部件业务

2023-07-05

怎么看cpu是不是盒装(怎么看cpu是几代)

2023-07-05

世界滚动:兰生股份:上半年预计实现净利润1.9亿元 同比扭亏

2023-07-05

艺评丨曾跃红:爱,是照耀人世的光 全球要闻

2023-07-05

消防培训加演练 拉起心中防火线

2023-07-05

全球新资讯:国际锐评|阿根廷首次用人民币还外债说明了什么?

2023-07-05

重要的英文高级表达(重要的英文)

2023-07-05

今日关注:【假日暖洋洋2&蔓越莓曲麒】雪夜的初梦(剧场版)8.0

2023-07-05

天天播报:地产股盘中拉升

2023-07-05

每日快讯!郑州90小姐姐晒37㎡独居小屋走红,被10多万人喜欢,真的太美了!

2023-07-05

信息:延吉的文体旅融合“三重奏”

2023-07-05

最佳订购量(关于最佳订购量介绍)-天天信息

2023-07-05

宝马车友会_关于宝马车友会介绍

2023-07-05

易方达中债1-3年国开行债券指数证券投资基金分红公告 天天播资讯

2023-07-05

【焦点热闻】明星基金经理逆势加码多只新能源标的

2023-07-05

苦其心志劳其筋骨饿其体肤的意思_劳其筋骨饿其体肤的意思

2023-07-05

环球报道:口加客念什么意思_口加客念什么

2023-07-05

建设工程信息管理

2023-07-05

环球微资讯!聚焦预制菜装备|格力电器董事长董明珠:将中国美味送向世界

2023-07-04