工业自动化
六种常见系统架构 - 基础篇

发布于:2023-09-23 15:33:54  来源:工业自动化  点击量:14次

  这是最简单的一种设计模式,我们的大部分本科毕业设计、一些小的应用,大多数都是这种模式,这种模式的一般设计见下图:

  如上图所示,这种模式一般只有一个数据库,一个业务应用层,一个后台管理系统,所有的业务都是用业务层完成的,所有的数据也都是存储在一个数据库中,好一点会由数据库的同步,虽然简单,但是也并不是一无是处。

  最近很多小伙伴找我要各种学习资料,但一个个私信太耽误大家时间了,于是我整理了一些优质经典学习资源,涵盖Linux、虚拟化、容器、云计算、网络、Python等书籍和视频,点击链接即可领取,祝学业有成!(无任何套路!)

  优点:结构相对比较简单、开发速度快、实现简单,可用于产品的第一版等有原型验证需求。

  缺点:性能差、基本没有高可用、扩展性差,不适合用于大规模部署、应用等生产环境。

  基本上所有的大型的网站都有或多或少的采用这一种设计模式,常见的应用场景是采用CDN技术把网页、图片、CSS、JS等这些静态资源分发到离用户最近的服务器,这种模式的一般设计见下图:

  如上图所示,这种模式较单库单应用的模式多了一个CDN、一个云存储OSS(七牛、又拍等雷同)。一个经典的应用流程(以用户上传、查看图片需求为例如下:)

  由上可知,这一个模式的关键是智能DNS,他能够解析出离用户最近的服务器,运行原理大致是:根据请求者的IP得到请求地点B,然后通过计算或者配置得到与B最近或通讯时间最短的服务器C,然后把C的IP地址返回给请求者。这种模式的优缺点如下:

  优点:资源下载快,无需过多的开发与配置,同时也减轻了后端服务器对资源的存储压力,减少带宽的使用。

  缺点:目前来说OSS、CDN的价格还是稍微有点贵的,只适用于中小规模的应用,另外由于网络传输延迟、CDN的同步策略等,会有一些一致性、更新慢方面的问题。

  这种模式主要解决单体数据库压力过大,因此导致业务缓慢甚至超时,查询影响时间变长的问题,也包括需要大量数据库服务器计算资源的查询请求,这个能够说是单库应用模式的升级版本,也是技术架构迭代演进过程中的必经之路。

  如上图所示,这种模式较单库但应用模式与内容分发模式多了几个部分,一个是业务数据库的主从分离,一个是引入ES,为何需要这样?都解决的哪些痛点,下面具体结合业务需求场景进行叙述。

  我想这个需求,绝大多数应用都会有,若使用传统的数据库技术,大部分可能会使用like这种sql语句,高级一点的是先分词,然后通分词index相关的记录。sql语句的性能问题与全表扫描机制导致了很严重的性能问题,现在基本上很少见到。

  ES较Solr配置简单、使用起来更便捷,所以这里选用了他。另外,ES支持横向扩展,理论上没有性能的瓶颈。同时,还支持各种插件、自定义分词器等,可扩展性较强。在这里,使用ES不但可以替代数据库完成全检索功能,还能轻松实现诸如分页、排序、分组、分面等功能。具体的,请同学们自行学习之,那怎么使用呢?一个一般的流程是这样的:

  4、客户端查询的时候,由服务端把这个请求发送到ES,得到数据后,依据需求拼装、组合数据,返回给客户端

  这个场景是指我们的业务中的大部分辅助性的查询,如:取钱的时候先查询一下余额,按照每个用户的ID查询用户的记录,取得该用户最新的一条取钱记录等,我们肯定是要天天用到的,而且用的还非常多。同时呢,我们的写入请求也是非常多的,导致大量的写入、查询操作压向同一数据库,然后,数据库挂了,系统挂了,领导生气了,被开除了,还不起房贷了,露宿街头了,老婆跟别人跑了……

  不敢想,所以要求我们一定要分散数据库的压力,一个业界较成熟的方案就是数据库的读写分离,写的时候入主库,读的时候读分库。这样就把压力分散到不同的数据库了,如果一个读库性能不行,扛不住的话,可以一主多从,横向扩展,可谓是一剂良药啊!那么怎么使用呢?一个一般的流程是这样的:

  不管学习什么技术,资源都是必不可少的。优质资源会助你一臂之力,让你快速入门。当年我自学使用的优质资源,我也全部共享出来,涵盖Linux、云计算、虚拟化、OpenStack、Docker、K8S、网络、Python、Go等书籍和视频,访问以下链接无套路领取,祝学业有成!

  10T学习资源大放送,涵盖Linux、虚拟化、容器、云计算、网络、Python、Go等书籍和视频

  比较简单吧,一些聪明的、爱思考的、上进的同学可能察觉缺陷了,也包括上面介绍的场景一,就是延迟问题,如:数据还没到从库,我就马上读,那么是读不到的,会发生问题的。对这个问题,各家公司解决的思路也是不一样的,方法不完全一样,一个普遍的解决方案是:读不到就读主库,当然这么说也是有前提的,但具体的方案就不在这里一一展开了,我可能会在接下来的分享中详解各种方案。

  另外,关于数据库复制模式,还请同学们自行学习,太多了,这里说不清,该总结一下这种模式的优缺点了,如下:

  优点:减少数据库的压力,理论上提供无限高的读性能,间接提高业务(写)的性能,专用的查询、索引、全文(分词)解决方案。

  最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等,免费共享给大家!