加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

浓缩精华的架构演进过程,我连看了六遍!

发布时间:2020-03-18 12:33:17 所属栏目:Unix 来源:站长网
导读:副标题#e# 【金融特辑】光大****科技部DBA女神带你从0到1揭秘MGR 【51CTO.com原创稿件】业务驱动技术的发展是亘古不变的道理。最开始的时候,业务量少,业务复杂度低,采取的技术也相对简单,基本满足用户对功能的需求。 图片来自 Pexels 随着 IT 信息化的
副标题[/!--empirenews.page--] 【金融特辑】光大****科技部DBA女神带你从0到1揭秘MGR

【51CTO.com原创稿件】 业务驱动技术的发展是亘古不变的道理。最开始的时候,业务量少,业务复杂度低,采取的技术也相对简单,基本满足用户对功能的需求。

浓缩精华的架构演进过程,我连看了六遍!

图片来自 Pexels

随着 IT 信息化的普及,更多的交易放到了网络上,信息量增加和访问次数频繁就是要解决的问题了。

因此,逐渐加入了缓存、集群等技术手段。同时对业务的扩展性和伸缩性的要求也越来越高。

高并发、高可用、可伸缩、可扩展、够安全的软件架构一直是架构设计追求的目标。

今天我们来看一下架构设计经历了哪些阶段,每个阶段都解决了哪些问题,又引出了哪些新问题。

主要是引起大家的思考,在不同的业务发展阶段采取合适技术手段,用变化拥抱变化是 IT 人追求的目标。

应用与数据一体模式

最早的业务应用以网站、OA 等为主,访问的人数有限,单台服务器就能够应付。

通常,将应用程序和数据库部署到一台服务器上面,如图 1 所示:

浓缩精华的架构演进过程,我连看了六遍!

图 1:应用与数据一体模式

在这一阶段,我们利用 LAMP(Linux Apache MySQL PHP)技术就可以迅速搞定,并且这些工具都是开源的。

很长一段时间内,有各种针对这种应用模式的开源代码可以使用。这种模式基本上没有高并发的要求,可用性也很差。

有的服务器采用托管模式,上面就安装了不同的业务应用,一旦服务器出现问题,所有的应用就罢工了。

不过其开发和部署成本相对较低,适合刚刚起步的应用服务。图 1 就描述了单个应用和数据库运行在单台服务器的模式,我们称这种模式为应用与数据一体模式。

应用与数据分离模式

随着业务的发展,用户数和请求数逐渐上升,服务器的性能出现了问题。其中比较简单的解决方案就是增加资源,将业务应用和数据存储分开。

其架构图如图 2 所示:

浓缩精华的架构演进过程,我连看了六遍!

图 2:应用与数据分离模式

其中,应用服务器需要处理大量的业务请求,对 CPU 和内存有一定要求;而数据库服务器需要对数据进行存储和索引等 IO 操作,对磁盘的转速和内存会考虑更多。

这样的分离解决了性能的问题,我们需要扩展更多的硬件资源让其各司其职,使系统可以处理更多的用户请求。

虽然业务上依旧存在耦和,但硬件层面的分离在可用性上比一体式设计要好很多。

缓存的加入

随着信息化系统的发展和使用互联网人数的增多,业务量、用户量、数据量都在增长。

我们同时发现,用户会对某些数据的请求量特别大,例如新闻、商品信息和热门消息。

之前这些信息的获取方式是依靠数据库,因此受到数据库 IO 性能的影响。此时数据库成为了整个系统的瓶颈。

如果再增加服务器的数量,恐怕也很难解决,于是缓存技术就登场了,其架构图如图 3 所示:

浓缩精华的架构演进过程,我连看了六遍!

图 3:缓存的加入

这里提到的缓存技术分为客户端浏览器缓存、应用服务器本地缓存和缓存服务器缓存。

①客户端浏览器缓存:当用户通过浏览器请求服务器的时候,会发起 HTTP 请求。如果对每次 HTTP 请求进行缓存,那么可以减少应用服务器的压力。

②应用服务器本地缓存:它使用的是进程内缓存,又叫托管堆缓存。以 Java 为例,这部分缓存放在 JVM 的托管堆上面,同时会受到托管堆回收算法的影响。

由于它运行在内存中,对数据的响应速度很快,通常我们会把热点数据放在这里。

在进程内缓存没有命中的时候,会到缓存服务器中获取信息,如果还是没有命中,才会去数据库中获取。

③缓存服务器缓存:它相对于应用服务器本地缓存来说,就是进程外缓存,既可以和应用服务部署在同一服务器,也可以部署到不同的服务器。

一般来说,为了方便管理和合理利用资源,会将其部署到专门的缓存服务器上面。由于缓存会占用内存空间,因此这类服务器会配置比较大的内存。

图 3 描述了缓存请求的次序,先访问客户端缓存,之后是进程内的本地缓存,接下来是缓存服务器,最后才是数据。

如果在任意一层获取了缓存信息,就不再往下访问了,否则会一直按照这个次序获取缓存信息,直到数据库。

用户请求访问数据的顺序为客户端浏览器缓存→应用服务器本地缓存→缓存服务器缓存。

如果按照以上次序还没有命中数据,才会访问数据库获取数据。加入缓存的设计,提高了系统的性能。

由于缓存放在内存中,而内存的读取速度比磁盘要快得多,能够很快响应用户请求。

特别针对一些热点数据,优势尤为明显。同时,在可用性方面也有明显的改善。

即使数据库服务器出现短时间的故障,缓存服务器中保存的热点或者核心数据依旧可以满足用户暂时的访问。当然,后面还会对可用性进行优化。

服务器集群的加入

经过前面三个阶段的演进,系统对用户的请求量有了很好的支持。实际上,这都是在解决高性能和可用性的问题,这一核心问题会一直贯穿整个系统架构的演进过程中。

随着用户请求量的增加,另外一个问题又出现了,那就是并发。把这两个字拆开了来看:并,理解为“一起并行“,有同时的意思;发,理解为“发出调用”,也就是请求的意思。

合起来就是多个用户同时请求应用服务器。如果说原来的系统面对的仅仅只是大数据量的话,那么现在就需要面对多用户同时请求。

如果还是按照上一个阶段的架构图推导,单个应用服务器已经无法满足高并发的要求了。

此时,服务器集群就加入战场了,其架构图如图 4 所示:

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读