type
status
date
slug
summary
tags
category
icon
password
场景引入
现在,请假设你是一家电商公司的技术负责人,你的公司将要迎来一年一度的双11购物狂欢节,你需要为公司的网站做好充分的准备,以应对即将到来的流量高峰。然而,毫无经验的你选择了让服务器在双11结束之前打烊。然后......然后就没有然后了。 —— 面对类似这样的问题,我们可以考虑对系统进行“扩展”。
何为扩展?
提高系统的处理能力。
为何扩展?
只要产品增长,就会带来系统负载的增长,包括但不限于:数据量、流量、业务复杂性。当一个系统的负载增加时,系统就可能会出现性能瓶颈、响应时间变慢、甚至崩溃等问题。
类比:员工的能力若跟不上公司业务发展速度,就会出现项目延期、交付质量不佳,甚至跑路。
而扩展就是解决此类系统性能和可靠性问题的常用方法,以提高业务效率和可靠性,从而获得商业效益。
垂直扩展
定义
垂直扩展指的是通过升级单台服务器的硬件配置来提高系统的处理能力和可靠性。可以增加服务器的内存、CPU、带宽等硬件资源,从而实现垂直扩展。不需要变动系统逻辑,引入额外依赖。
类比:提高员工的工作能力,以提高效率。
优点
主要是简单,复杂度低,易于维护。
缺点
一个人的能力再怎么厉害,也是有限的;一旦遇上生病、请假,业务就停转了。
- 单台服务器的性能和资源有天花板,无法无限制地进行扩展
- 升级硬件需要停机维护,可能会影响系统的可用性
- 单点故障问题
- 不够灵活,无法根据业务需求动态调整
思考
如果负载不断增长,即使机器永不宕机,此时通过升级硬件配置带来的效果已经跟不上了,该怎么办?
水平扩展
定义
水平扩展(也叫横向扩展),指通过增加服务器数量(或者资源池中的节点数量)来提高系统的处理能力和可靠性。可以将请求分发到多台服务器上,以分摊机器负载,从而实现水平扩展。
类比:加人。三个臭皮匠,顶过一个诸葛亮。
优点
- 通过增加服务器/节点数量来提高系统的并发处理能力,突破单点限制
- 无需停机维护,丝滑升级,系统可用性有保证
- 提供冗余节点,即使单点故障也可以持续提供服务,保证系统的可用性和稳定性
- 灵活性高,可以根据业务需求动态调整服务器数量以适应业务
缺点
主要是起步成本高,且难以维护,因为引入了“分布式”。
- 数据一致性:数据同步、分布式事务等
- 通信成本:机器间需要进行网络通信,可能会增加网络延迟和带宽成本
- 其他:容错、负载不均等
trade-off
在选择水平扩展和垂直扩展方案时,需要根据具体业务需求来进行综合考虑。
- 流量特点:如果需要处理大量并发请求,可以选择水平扩展方案;如果需要提高单个请求的处理速度和稳定性,可以选择垂直扩展方案。
- 计算特点:水平扩展通常用于处理不断增加的流量或工作负载,而垂直扩展通常用于处理需要更多处理能力的资源密集型任务或应用程序。
- 长远考虑:到目前为止,单个节点只能垂直扩展,可能无法满足未来的需求。而水平扩展提供了扩展的灵活性,可以通过添加更多机器来提高业务的性能上限。
- 成本考虑:水平升级具有更高的前期硬件支出。如果预算有限,并且需要快速且廉价地向基础架构添加更多容量,则垂直扩展可能会更好。
- 可靠性:支持水平扩展的系统会更可靠。它确保系统不依赖于单台计算机,并增加冗余。当一台机器发生故障时,另一台机器仍然可以提供服务。
- 发布要求:水平扩展无需停机,可以提供更连续丝滑的升级过程。
- 地理位置:如果业务扩展到国际客户,必须做水平扩展。
思考
如何保证在水平扩展后,请求可以被分发到尽可能合适的机器上,以提高系统的整体效率?
- Author:王帅真
- URL:https://blog.qizong007.top/article/system-expansion
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!