购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3.2 可扩展

互联网系统的流量通常是具有潮汐特点的,如常见的白天流量低、晚上流量高,工作日流量低、非工作日流量高。但仍然会有一些不符合潮汐特点的特殊情况,可能是突发热点事件带来的突增流量,也可能是运营活动带来的超预期流量等,而应对这些预期外的突发流量是每一个系统的开发和运维人员要面临的挑战。

应对突发流量的方案通常是通过扩容来提升系统的可扩展性,而扩容又分为纵向扩容(scale-up)和横向扩容(scale-out)。

纵向扩容,指的是通过提升单个硬件节点的性能来提升系统的并发处理能力。这种方案的效果受到摩尔定律的影响。摩尔定律由英特尔公司的创始人之一Gordon Moore在1965年4月提出,用来描述信息技术的一种发展趋势,即在价格不变的情况下,集成电路上晶体管的数量在18个月左右就要翻一番,性能也增加一倍。

根据摩尔定律,系统的硬件性能应该会随着时间的推移而稳步提升。然而,在实际应用中,诸多因素(如制造工艺的瓶颈、物理限制、制造成本等)会影响硬件性能的提升,使其不能完全遵守摩尔定律。近年来,硬件性能的提升遇到了瓶颈,因此对摩尔定律的质疑声此起彼伏。随着互联网系统的发展和应用场景的复杂化,纵向扩容单位成本带来的性能提升效果明显下降。

因此,需要通过横向扩容的方式来提升系统的可扩展性。横向扩容,指的是通过使用大量的小规格服务器组成分布式集群来共同应对高并发大流量的冲击。使用横向扩容时需要考虑以下4个方面。

● 数据分片:将系统中的数据按照某种规则分割成多份,并存储在不同的节点上。数据分片可以降低单个节点的负载,提高系统的并发处理能力。数据分片的关键在于选择合适的分割规则,确保数据均匀地存储在各个节点上,同时保证分割后的数据仍然可以被有效地查询和操作。

● 负载均衡:将流量有效地分发到多个节点。负载均衡器可以根据一定的策略将流量分发到不同的节点,以避免单个节点负载过高。

● 无状态化:尽量减少节点之间的状态依赖,使得任意节点都可以处理任意请求,从而实现系统的横向扩展。无状态化的关键在于将状态从节点中分离出来,采用外部化存储或共享存储来管理状态数据,以确保节点的无状态性和易于横向扩展。

● 数据一致性:在分布式环境下,保证数据一致性是一个重要挑战。不同的业务需求可能对一致性有不同的要求,需要根据业务的具体情况并权衡数据的一致性与系统的性能之间的关系,选择合适的数据一致性方案,并采取相应的数据同步与冲突解决策略。

横向扩容固然可以突破硬件性能的瓶颈,但是需要更复杂的分布式架构设计和管理,有一定的开发和维护成本。 LhFgopwt61bB4iEilUfLx+KdXFZU6UBZWs3Us/klmjRhewVUBpo0xkct/TWVzO+3

点击中间区域
呼出菜单
上一章
目录
下一章
×