分享

一文了解分布式扩展原则

 gfergfer 2023-09-21

  高并发问题是一直困扰着所有IT从业者的性能问题。除了购置性能更强的服务器,采用分布式的系统架构是另一种解决方案。

  在《The Art of Scalability》一书中首次提出AKF原则。这是一种系统扩展思路,系统可以从三个不同的方向进行分布式设计。

  • X 轴:水平扩展。

  • Y 轴:功能拆分扩展。

  • Z 轴:用户分区扩展。

图片

AKF原则示意图

  水平扩展是系统中有多台功能一样的服务器,任意一台服务器都可以为用户提供服务。传统的系统服务设计可以简化为用户终端应用程序、后端服务器程序、数据库这三层。前端应用程序(网页也是一种特殊的程序)运行在各个用户的终端设备上,后端服务器程序和数据库运行在服务器上。每台后端应用服务程序可以同时提供服务的数量有限。通过负载均衡和部署多个后端应用服务器,可以为前端应用程序提供更多的服务连接。但是此方案并不会提升数据库服务的性能,系统性能瓶颈从后端应用服务后移到数据库。

  大家常用以下几种方法提升整体的数据访问性能:提升数据库服务器配置、增加缓存服务器、增加主从数据库(读写操作分别由不同数据库完成)、增加数据库中间件水平扩展数据库。

图片

水平扩展示意图

  功能拆分扩展,不同服务器提供不同功能。程序中的所有功能不再集中到一个应用服务程序。根据不同的业务领域,把功能拆解到多个应用服务程序。原来一个集中的大系统,被拆解为多个子系统。每个子系统都有自己独立的数据库。由于每个数据库承载的业务成倍减少,数据库的性能随之上升。此方案虽然降低了数据库的整体压力,但是原有的性能瓶颈仍然是整个系统的短板,只是问题爆发的时间点被延后了。此思路的技术实现方案即是微服务架构。

图片

功能拆分扩展示意图

  除了以上的技术手段,我们还可以从业务角度解决拓展问题。我们可以根据用户的特性进行拆分,把不同的用户划分到不同的服务器分组。每个分组只服务一定数量的固定用户。后台服务由很多组功能相同的集群组成,用户信息被存储到一个指定的服务器集群。此用户所有的后台服务都由这一组服务器提供。这类拓展方案最常见于游戏服务器,用户注册和登录时会由用户自主选择所在区域和服务器。用户可自主选择服务器的原因是为了好友都可以在同一组服务器内进行游戏。当用户选择一个新服务器时,服务器上没有此用户的任何信息。如果想获取原有的数据,必须从之前的服务器组迁移到当前的服务器组。

图片

用户分区示意图

  AKF原则是根据分布式系统的限制,归纳总结出的三个扩展方向,我们在实践过程中会整合多种方案解决系统扩展遇到的问题。这也是系统设计的魅力所在。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多