互联网软件架构
互联网软件通常是指在万维网上搭建的站点平台,其用户基数大且增长迅速。在其架构设计时,需要考虑高并发和高可用性。通用的互联网架构设计中需要的关注点。
高并发:
高并发是指在系统能够并行处理多个请求,其相关的指标有响应时间、吞吐量、QPS、并发用户数等。
响应时间:系统对请求作出的响应时间。
吞吐量:单位时间内系统可以处理的请求数。
QPS(Query Per Second):每秒响应的请求数目。
并发用户数:同时承载正常使用系统功能的用户数目。
要实现系统的高并发,通常可以采用垂直扩展和水平扩展两种方式。垂直扩展可以通过提升单机服务器的性能,包括CPU、带宽、内存、硬盘等;也可以通过对软件进行优化,引入缓存、使用异步、减少锁竞争、参数调优等方式实现。但是对于单机来说,性能总是有极限的。因此最终还是需要水平扩展来实现。
水平扩展理论上可以通过增加服务器的数目来线性扩充系统的性能。
在互联网领域,系统架构会包括反向代理层、站点应用层、服务层、缓存和数据库持久层。在各层之间都有比较成熟的解决方案实现水平扩展功能。
反向代理层的水平扩展:DNS轮询。
站点应用层的水平扩展:反向代理实现
服务层的水平扩展:通过rpc框架实现,核心是连接池
数据层的水平扩展:通过数据库中间件实现,有几种方式。range、hash、路由
高可用性:
高可用是指通过设计减少系统不可用的时间。在互联网上有很多公司的目标是4个9。
高可用的核心是冗余,此外还需要实现“自动故障转移”。
如何保证互联网中各层的高可用: