架构有哪些(信息系统架构有哪些)
每日一题,你来投稿,我来解答!
一: 典型的互联网系统架构图
二: 如上图所示,常见的系统架构分层如下
1、客户端层: 就是常见的浏览器、APP
2、反向代理层: 此层用于反向代理和负载均衡,常见的软件:nginx,硬件F5
3、前端应用层: 现在的系统一般是前后端分离并单独部署,此处属于前端项目
4、服务层: 后端服务群,提供给前端项目调用
5、缓存层: 介于服务层和数据库层之间,通过缓存,减少IO次数、提高吞吐量和响应速度
6、数据库层: 实际的数据存储区域,可以进行读写分离,通过binlog日志进行同步数据。
三: 不同层级的水平拓展,提高系统并发能力
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、数据层的优化
当系统数据量上升,单机性能达到瓶颈时,可以添加新的机器,通过读写分离,数据水平拆分存储到不同的服务器来提高系统的性能。
想了解更多或者投稿,欢迎和私信回复【每日一题】或【面试资料】。