第四周 - 系统架构

用户头像
Darnell
关注
发布于: 2020 年 10 月 18 日

大型互联网架构技术方案和手段



大型互联网架构特点

  • 高并发,高吞吐

  • 高可用,低延迟

  • 跨域,网络情况复杂

  • 需求变更较快,发布频繁

  • 成本与预算问题



采取技术方案与手段



  1. 应用与数据分离

解决访问性能与数据存储之间的性能瓶颈。分隔为应用服务器、数据库服务器和对象存储服务器。让应用服务器可处理大量业务,数据库服务器关注更高的IO与检索能力,对象存储只关注磁盘的IO。

  1. 使用缓存

目标改善服务的访问性能,使其静态或不经常变化的数据就近或内存访问,而无需都经过本地数据库(磁盘)。分为本地缓存与分布式缓存,本地缓存访问更快,但首先单机或一致性问题,需分清业务场景,常用技术有Guava Cache、Encache 等。分布式缓存采用多机服务器,常用技术Memcache、redis等,可解决共享会话、共享数据集的需要,原则上可进行平行扩展,提高内存容量。但在高并发获取情况下,也需慎重考虑(网络时延)。

  1. 负载均衡

单一服务在高并发下是瓶颈。采用多应用服务器集群是网站解决高并发,海量数据问题的常用手段。常用技术手段反向代理、LVS 等。主要目标可按需进行扩展,解决应用服务器的平均问题。

  1. 数据库读写分离

解决数据库的读写瓶颈。传统的数据库管理系统,在数据检索与存储时(磁盘的随机读写),需要避免数据库因为负载压力过高而成为网站的瓶颈。传统数据库提供主从模式,一可做数据的热备,二可做读写分离,减轻数据库的读写压力。

  1. 使用CDN加速访问

主要在跨域访问过程中,网络时延影响用户的访问体验。对常用的静态资源,固使用CDN的反向代理的目的都是尽早的返回数据给用户,一方面加快用户的访问速度,另一方面也减轻后端服务器的负载压力。

  1. 使用分布式文件系统与分布式数据库系统

在系统发展一定规模,并运行一段时间后,会积攒大量的数据资源。可能在这个过程中,服务性能会因数据库或数据规模造成系统性能急剧下降。需要根据业务需求与应用场景,进行动态分离,业务优先级进行分类存储,以保持原有系统的能力。

  1. 使用NoSQL 与搜素引擎

如果你的系统需要做全文检索或其它海量规模的数据访问时,需要借助专用数据库管理系统与搜素引擎,例如 MongoDB、Hive 及ES 等。



  1. 分布式服务

如果你的系统越来越庞大,业务逐渐复杂,可抽象业务模型,采用微服务模式进行拆分。解决系统的耦合度,更利于维护与监控。



总结对于大型互联网架构模式,基本分为:

  • 分层:应用、服务与数据层

  • 分割:应用服务分离

  • 分布式:CPU、内存、存储资源也就越多,能够处理的并发访问和数据量就越大



体会与总结



任何技术架构的选型,需要符合当前业务需求、性能与成本等之间的权衡,没有最好方案,只有最合适方案。不能一味追求大厂的解决方案,不要为了技术而技术,企图用一个技术或模型解决所有问题。



用户头像

Darnell

关注

还未添加个人签名 2018.04.24 加入

还未添加个人简介

评论

发布
暂无评论
第四周-系统架构