如何架构一个高性能、高可用的分布式系统?
高性能
-
实时同步接入:一般采取远程过程调用(Remote Procedure Call,RPC),高效地实现后端业务逻辑的扩展,提升调用性能。 -
实时异步接入:一般采取消息队列,其时延不高并且可以有效地降低请求达到高峰时对系统造成的过大压力。 -
近线接入:一般采取流式处理,可以高效地处理大并发、大体量的数据以及计算,例如常见的基于Flink的流式处理。
-
如果数据库还能够处理,则可以考虑在数据库层进行切分(如分库、分表操作),或者让数据库读写分离等。 -
如果数据库完全不能处理,则需要考虑添加数据缓存,在数据库和业务逻辑层之间建立起一层缓存数据,让更多数据可以直接通过缓存返回,有效避免对数据库造成存取压力。
高可用
要实现高可用性(High Availability,HA),就需要在以下层面设置备份或者业务故障自动发现机制。
机房层面:考虑到业务访问机房的网络可达性问题以及单个机房内部故障问题,因此会采用多机房架构的模式,多机房架构有热备份和双活模式,热备份就是一般情况下另一个机房不接收线上流量,只在另一个机房出现故障时才启用。双活模式架构是将线上访问流量在每个机房间按照一定的策略进行分发,每个机房随时都可正常工作,当其中一个机房出现故障时,可以通过路由分发模块配置转发,双活机房的目标是实现系统的故障平滑无感知迁移。
机架层面:机房内的机架也会由于各种原因出现故障,如果所有的服务器都部署在一个机架上显然是达不到高可用的目标的,所以一般服务器会在机架层面进行交叉部署,以此解决机架层面出现的服务可用性问题。
服务层面:一般来说,业务服务层会通过一整套服务治理机制来解决服务发现和故障剔除问题,例如技术人员熟知的Dubbo服务治理组件。
数据服务层面:对数据库来说,一般会采取主从架构,然后引入一些实现故障发现和迁移机制的模块,例如采取高可用性集群(Master High Availability,MHA)策略来解决MySQL可用性问题。
分布式应用系统
常见的分布式系统一般有redis、kafka等一些中间件系统,那么分布式应用系统指哪些呢?例如电商的抢购系统就可以归纳为其中之列。通过分布式的部署,以及各种逻辑优化,实现高吞吐,高性能的业务诉求。例如如何优化抢购系统的流量金字塔,如何实现热点账户的冲扣性能,如何实现分库后的在线数据平滑迁移,如何通过多机房的设计实现多活的机房导流,一方面降低机房流量压力,另外一方面实现对机房的可用性热切换。
基于以上的一些考虑,结合当下技术行业里面对这些问题都是普遍存在的问题,同时也是技术人员渴望了解和掌握的问题。作者结合以前的个人工作经验,经过几年的加工和总结写出了一本《分布式应用系统架构设计及实践》,来全面阐述分布式应用系统的架构。
这本书为什么值得看?
基础层面:全书通过完整的基础技术介绍,为读者充分阅读和理解后续的架构实践提供扎实的技术基础,例如常见中间件的技术原理、高性能、高可用、可伸缩的常见实现方案等。另外还有高可用场景下的多机房多活如何实现,数据如何保持全局的一致性等问题也会有详细讨论。
架构实践层面:全书通过几个完整的案例来阐述具体在分布式架构中的实际问题以及解决方案,例如账号系统下的会话粘连保持、数据一致性、以及实现安全的数据降级;以及秒杀系统下的流量金字塔优化、热点账户的冲扣性能优化以及扣款场景下的数据一致性问题等等这些在书中都会有详细介绍以及。
如何阅读这本书?
适合的读者群体
每位精益求精的工程师:通过本书的阅读能够完整的理解分布式应用系统设计的关键点和核心解决方案,能够提升系统架构的技术能力和深度。
准备进入工程开发领域的学习者:通过本书的完整介绍能够建立起对分布式应用系统的整体认识,为未来在这个行业的深入发展打下良好的基础。
产品经理及项目经理:能够让相关行业的产品经理或者项目经理提示对于业务技术实现的一些探查,可以为产品经理等相关角色人员提供技术创新驱动业务创新的一种视角。
技术管理者:通过本书的阅读和理解,能够对于技术团队的整体方案的把控更细致,并提供一些核心问题点的解决方案的一种思路。
结构安排
《分布式应用系统架构设计及实践》全书共分为11章,每章主题如下:
传送门
人民邮电出版社京东自营链接:
https://item.jd.com/13601452.html