第四周 - 系统架构
大型互联网架构技术方案和手段
大型互联网架构特点
高并发,高吞吐
高可用,低延迟
跨域,网络情况复杂
需求变更较快,发布频繁
成本与预算问题
采取技术方案与手段
应用与数据分离
解决访问性能与数据存储之间的性能瓶颈。分隔为应用服务器、数据库服务器和对象存储服务器。让应用服务器可处理大量业务,数据库服务器关注更高的IO与检索能力,对象存储只关注磁盘的IO。
使用缓存
目标改善服务的访问性能,使其静态或不经常变化的数据就近或内存访问,而无需都经过本地数据库(磁盘)。分为本地缓存与分布式缓存,本地缓存访问更快,但首先单机或一致性问题,需分清业务场景,常用技术有Guava Cache、Encache 等。分布式缓存采用多机服务器,常用技术Memcache、redis等,可解决共享会话、共享数据集的需要,原则上可进行平行扩展,提高内存容量。但在高并发获取情况下,也需慎重考虑(网络时延)。
负载均衡
单一服务在高并发下是瓶颈。采用多应用服务器集群是网站解决高并发,海量数据问题的常用手段。常用技术手段反向代理、LVS 等。主要目标可按需进行扩展,解决应用服务器的平均问题。
数据库读写分离
解决数据库的读写瓶颈。传统的数据库管理系统,在数据检索与存储时(磁盘的随机读写),需要避免数据库因为负载压力过高而成为网站的瓶颈。传统数据库提供主从模式,一可做数据的热备,二可做读写分离,减轻数据库的读写压力。
使用CDN加速访问
主要在跨域访问过程中,网络时延影响用户的访问体验。对常用的静态资源,固使用CDN的反向代理的目的都是尽早的返回数据给用户,一方面加快用户的访问速度,另一方面也减轻后端服务器的负载压力。
使用分布式文件系统与分布式数据库系统
在系统发展一定规模,并运行一段时间后,会积攒大量的数据资源。可能在这个过程中,服务性能会因数据库或数据规模造成系统性能急剧下降。需要根据业务需求与应用场景,进行动态分离,业务优先级进行分类存储,以保持原有系统的能力。
使用NoSQL 与搜素引擎
如果你的系统需要做全文检索或其它海量规模的数据访问时,需要借助专用数据库管理系统与搜素引擎,例如 MongoDB、Hive 及ES 等。
分布式服务
如果你的系统越来越庞大,业务逐渐复杂,可抽象业务模型,采用微服务模式进行拆分。解决系统的耦合度,更利于维护与监控。
总结对于大型互联网架构模式,基本分为:
分层:应用、服务与数据层
分割:应用服务分离
分布式:CPU、内存、存储资源也就越多,能够处理的并发访问和数据量就越大
体会与总结
任何技术架构的选型,需要符合当前业务需求、性能与成本等之间的权衡,没有最好方案,只有最合适方案。不能一味追求大厂的解决方案,不要为了技术而技术,企图用一个技术或模型解决所有问题。
评论