最佳实践:高并发之扩容思路
系统在业务平峰期间运行稳定、性能良好,但在大流量时就会出现各种各样的问题,例如接口时延变大,CPU占用率升高、频繁发生Full GC、代码中出现死锁等等。大流量意味着高并发,高并发也是很多开发人员所期望拥有的经验,一方面能够接触更加复杂的业务场景,提高自身能力,另一方面对于高并发的解决思路需要依靠 经验积累,通过踩坑填坑的方式不断精进。而这其中扩容又是最常见的应对高并发场景的思路。
什么是扩容
扩容,通常指为了提高系统的处理能力,而采取的增加计算或其他资源的一系列措施,以此来提升系统的性能。
传统意义上的扩容一般只单单针对硬件计算资源,策略上可以分为两种,一种是对单机整体扩容,也就是整机的CPU、内存、磁盘等等;另一种就是扩容对应的组件,例如提高CPU性能,升级读写性能更优秀的磁盘等。而在云原生、微服务等技术越来越普及后,扩容的概念也不再单单指计算资源,而是扩展到架构领域,例如流量高峰期针对某一中间件资源进行扩容,或针对某一核心服务进行扩容,这使得扩容能够更高效、更有目的性。
随着技术的发展和业务的复杂度的上升,也要求扩容更有目标性,更快速,这就要求在实践中对于扩容的目标、策略、方法,以及系统的架构设计都要有深入的理解,同时也需要有合适的工具对其进行技术支撑。
扩容目标
扩容是为了确保系统在面临高并发访问、大数据处理等场景时,能够保持良好的性能和稳定性,不会因为资源不足而出现服务响应缓慢、系统崩溃等问题。
扩容是一个系统性的工程,需要综合考虑成本、性能、可靠性等因素,并采取适当的策略和技术来实现。目标具体来看主要有以下几点。
提高系统并发能力:通过增加系统资源,提高系统处理请求的能力,从而应对高并发访问。
保证系统稳定性:在扩容过程中,确保系统运行稳定,避免因资源分配不当导致的性能波动。
降低成本:在满足业务需求的前提下,合理利用现有资源,降低扩容成本。
易于实现:能够快速做出响应,同时不影响正常的业务功能设计和开发。
常见扩容思路
架构层面
从架构上来看扩容可以分为两大类:
横向扩展(scale-out)
又名水平扩展,即用更多的机器来支撑大量的请求。常见的集群模式往往就是这种思路。以运送货物为例,当大量货物需要运输时,使用更多的货车进行运输。