典型的互联网架构是如何划分的呢?各个层次之间又有哪些可以进行优化的方案呢?下面通过文章一起看看吧。
在认识水平拓展之前,先来看看典型的互联网系统架构是怎样的呢?如下图:
二: 如上图所示,常见的系统架构分层如下
三: 不同层级的水平拓展,提高系统并发能力
1、针对客户端层优化
此处的逻辑主要是用户通过域名访问应用,但是在访问前,需要通过DSN进行域名和IP地址的转换。
优化方案:利用DNS负载均衡,给同一个域名配置多个IP地址,在应答的时候,DNS会对每个查询按DNS中配置的IP地址顺序返回,从而将客户端引导到不同的服务器上。
CDN(Content Delivery Network)内容分发网络也是利用DNS的重定向技术,DNS会返回一个离用户最近的IP地址作为响应,CDN节点的服务器负责响应用户的请求,提供所需的内容。
2、反向代理层优化
如果反向代理层成为了性能的瓶颈时,可以通过添加新服务器,安装新的反向代理来水平拓展反向代理的性能(如果是使用硬件的话,则需要购买新的硬件),理论上来说可以承受无限制的并发量。
3、前端应用层优化
前后端的项目分离部署,将前端项目部署到处理静态文件更好的服务器(如nginx处理静态文件的效率就远大于tomcat服务器)这本身就是对性能的一种优化,同时,也降低了系统的耦合性。
同时,前端层面也可以在代码层级做性能优化,如缓存条件,如果界面界面切换时条件没有改动,可以直接读取之前的数据,不再向后端发起请求。
4、服务层优化
前端应用层通过RPC远程调用服务,当性能成为瓶颈时,可以添加服务器数量,将服务部署到新机器中,理论上来说,可以兼容无限制的并发(可以使用如euraka注册中心这种自动注册和发现的组件来实现服务层自动扩容)。
5、缓存层优化
缓存层本身就是使用”空间换时间”的方式来提高系统的效率和吞吐量,如果缓存层因为数据量出现性能瓶颈时,可以添加新的服务器来实现水平拓展。
6、数据层的优化
当系统数据量上升,单机性能达到瓶颈时,可以添加新的机器,通过读写分离,数据水平拆分存储到不同服务器来提高系统的性能。
经验就是一个积累的过程,没有谁能够一步登天,所以脚踏实地才是成功的秘诀。