常见的系统架构有6种:1. 单库单应用架构;2. 内容分发架构;3. 读写分离架构;4. 微服务架构;5. 多级缓存架构;6. 分库分表架构;其中单库单应用架构在系统开发规范雏形初期,很多系统就有使用,相对是最简单的,小企业小系统就会用采用,尤其是做项目的公司;
1、单库单应用架构
这种架构是最简单,我们在学习阶段,基本都会采取这种模式,除了专门针对各种架构的学习。
这种设计一般只有一个数据库,一个业务应用层,一个后台管理系统,所有的业务都是用业务层完成的,所有的数据也都是存储在一个数据库中,好一点会由数据库的同步,虽然比较简单,但是还是很实用的。
优点:结构简单、开发速度快、实现简单,用于产品的名列前茅版等有原型验证需求。
缺点:性能较差、基本没有高可用、扩展性差,不适用于大规模部署、应用等生产环境。
2、内容分发架构
基本上所有的大型网站都或多或少地采用这种架构,常见的应用场景一般是采用CDN技术把网页、图片、css、js 等这些静态资源分发到离用户最近的服务器。这种模式跟单库单应用的模式多了一个CDN、一个云存储OSS(如阿里云OSS)。
流程一般如下:
1、上传的时候,用户选择本地机器上的一个图片进行上传;
2、程序把这个图片上传到云存储OSS上,并返回该图片的一个URL;
3、程序把这个URL字符串存储在业务数据库中,上传完成;
4、查看的时候,程序从业务数据库得到该图片的URL;
5、程序通过DNS查询到这个URL的图片服务器;
6、智能DNS会解析这个URL,得到于用户最近的服务器(或集群)的地址A;
7、然后把服务器上的图片返回给程序;
8、程序显示该图片,查看完成。
由上可知,这个模式的关键是智能DNS,他能够解析出离用户最近的服务器,运行原理大致是:根据请求者的IP得到请求地点B,然后通过计算或者配置得到与B最近或通讯时间最短的服务器C,然后把C的IP地址返回给请求者。这种模式的优缺点如下:
优点:资源下载快,无需过多的开发与配置,同时也减轻了后端服务器对资源的存储压力,减少带宽的使用。
缺点:目前来说OSS、CDN的加个还是稍微优点贵的,只适用于中小规模的应用,另外由于网络传输延迟、CDN的同步策略等,会有一些一致性、更新慢方面的问题。
3、读写分离架构
这种模式主要解决单机数据库压力过大,从而导致业务缓慢甚至超时,查询影响时间变长的问题,也包括需要大量数据库服务器计算资源的查询请求,这个可以说是单库应用模式的升级版本,也是技术架构迭代演进过程中的必经之路。
这种模式相比较单库应用模式来说,多了几个部分,一个是业务数据库的主从分离,一个是引入ES。
优点:减少数据库的压力,理论上提供无限高的读性能,简介提高业务(写)的性能,专用的查询、索引、全文(分词)解决方案。
缺点:数据延迟,数据一致性的保证。
4、微服务架构
微服务架构是一项在云中部署应用和服务的新技术。大部分围绕微服务的争论都集中在容器或其他技术是否能很好的实施微服务,而红帽说API应该是重点。
微服务可以在“自己的程序”中运行,并通过“轻量级设备与HTTP型API进行沟通”。关键在于该服务可以在自己的程序中运行。通过这一点我们就可以将服务公开与微服务架构(在现有系统中分布一个API)区分开来。在服务公开中,许多服务都可以被内部独立进程所限制。如果其中任何一个服务需要增加某种功能,那么就必须缩小进程范围。在微服务架构中,只需要在特定的某种服务中增加所需功能,而不影响整体进程的架构。
5、多级缓存架构
这种模式是应对超高查询压力的普遍采用的一种策略,基本的思想就是在所有链路的地方,能加缓存就加缓存。
一般在三个地方加入缓存,一个是客户端处,一个是API网关处,一个是具体的后端业务处。
客户端处缓存:这个地方加缓存可以说是效果较好的一个,不会延迟。因为不用经过很长的网络链条去后端业务处获取数据,从而导致加载时间过长,客户流失等损失,虽然有CDN的支持,但是从客户端到CDN还是有网络延迟的,虽然不大,具体的技术依据不同的客户端而定,对于WEB来讲,有浏览器本地的缓存、Cookie、Storage、缓存策略等技术;对于APP来讲,有本地数据库,本地文件,本地内存,进程内缓存支持,以上提到的各种技术有兴趣的同学可以继续开展学习,如果客户端缓存没有命中,那么会去后端业务拿数据,一般来讲,就会有个API网关,在这里加缓存也是非常重要的。
后端业务处理:Redis、Jvm等等。
实践中,要结合具体的实际情况,综合利用各级缓存技术,使得各种请求最大程度的在到达后端业务之前就被解决掉,从而减少后端服务器压力、减少占用带宽、增强用户体验。
优点:抗住大量读请求,减少后端压力。
缺点:数据一致性问题较为突出,容易发生雪崩,即:如果客户端缓存失效、API网关缓存失效,那么所有的大量请求瞬间压向后端业务系统,后果可想而知。
6. 分库分表架构
这种模式主要解决单表写入、读取 、存储压力过大,从而导致业务缓慢甚至超时,交易失败,容量不够的问题。一般有水平切分和垂直切分两种,这里主要介绍水平切分。这个模式也是技术架构迭代演进的必经之路。
文章标题:常见的系统架构有哪些,发布者:小编,转载请注明出处:https://worktile.com/kb/p/30332