您的位置:首页 > 业界新闻

互联网软件架构设计的思考

2017-05-29 21:36 330 查看
互联网软件架构

互联网软件通常是指在万维网上搭建的站点平台,其用户基数大且增长迅速。在其架构设计时,需要考虑高并发和高可用性。通用的互联网架构设计中需要的关注点。

高并发:

高并发是指在系统能够并行处理多个请求,其相关的指标有响应时间、吞吐量、QPS、并发用户数等。

响应时间:系统对请求作出的响应时间。

吞吐量:单位时间内系统可以处理的请求数。

QPS(Query Per Second):每秒响应的请求数目。

并发用户数:同时承载正常使用系统功能的用户数目。

要实现系统的高并发,通常可以采用垂直扩展和水平扩展两种方式。垂直扩展可以通过提升单机服务器的性能,包括CPU、带宽、内存、硬盘等;也可以通过对软件进行优化,引入缓存、使用异步、减少锁竞争、参数调优等方式实现。但是对于单机来说,性能总是有极限的。因此最终还是需要水平扩展来实现。

水平扩展理论上可以通过增加服务器的数目来线性扩充系统的性能。

在互联网领域,系统架构会包括反向代理层、站点应用层、服务层、缓存和数据库持久层。在各层之间都有比较成熟的解决方案实现水平扩展功能。

反向代理层的水平扩展:DNS轮询。

站点应用层的水平扩展:反向代理实现

服务层的水平扩展:通过rpc框架实现,核心是连接池

数据层的水平扩展:通过数据库中间件实现,有几种方式。range、hash、路由

高可用性:

高可用是指通过设计减少系统不可用的时间。在互联网上有很多公司的目标是4个9。

高可用的核心是冗余,此外还需要实现“自动故障转移”。

如何保证互联网中各层的高可用:

反向代理层:通过keepalived存活检测,相同虚拟ip提供服务。

站点层:反向代理自动实现

服务层:rpc框架自动实现。服务连接池来进行处理。保证服务是无状态的。

缓存层:没比较,miss就miss。主从备份,会涉及到数据迁移以及一致性。哨兵。设多个缓存,一个挂了存到另一个。

数据库层:一般都是主从同步,读写分离。读库高可用和写库高可用。读写分离就涉及到一致性的问题,在一致性同步期间可强制读取写库。读库的高可用,多台读库,采用数据库连接池。 写库的高可用,采用主备的形式,shadow机器时刻准备着。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  架构设计