六种常见系统架构 基础篇.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
六种常见系统架构 - 基础篇 2021-10-12 更多内容关注:fullstack888 常见的几种系统架构设计,本文先讲前三个: 1. 单库单应用架构:最简约的,可能大家都见过 2. 内容分发架构:目前用的比较多 3. 读写分别架构:对于大并发的查询、业务 4. 微服务架构:适用于简单的业务模式的拆解 5. 多级缓存架构:可以把缓存玩的很好 6. 分库分表架构:处理单体数据库瓶颈 一、单库单应用架构 这是最简约的一种设计模式,我们的大部分本科毕业设计、一些小的应用,基本上都是这种模式,这种模式的一般设计见下图: 如上图所示,这种模式一般只要一个数据库,一个业务应用层,一个后台管理系统,全部的业务都是用业务层完成的,全部的数据也都是存储在一个数据库中,好一点会由数据库的同步,虽然简约,但是也并不是一无是处。 优点:结构简约、开发速度快、实现简约,可用于产品的第一版等有原型验证需求。 缺点:功能差、基本没有高可用、扩展性差,不适合用于大规模部署、应用等生产环境。 二、内容分发架构 基本上全部的大型的网站都有或多或少的接受这一种设计模式,常见的应用场景是接受CDN技术把网页、图片、CSS、JS等这些静态资源分发到离用户最近的服务器,这种模式的一般设计见下图: 如上图所示,这种模式较单库单应用的模式多了一个CDN、一个云存储OSS(七牛、又拍等雷同)。一个经典的应用流程(以用户上传、查看图片需求为例如下:) 1、上传的时候,用户选择本地机器上的一个图片进行上传 2、程序会把这个图片上传到云存储OSS上,并前往该图片的一个URL 3、程序把这个URL字符串存储在业务数据库中,上传完成 4、查看的时候,程序从业务数据库得到该图片的URL 5、程序通过DNS查询到这个URL的图片服务器 6、智能DNS会解析这个URL,得到用户最近的服务器(或集群)的地址A 7、然后把服务器A上的图片前往给程序 8、程序显示该图片,查看完成 由上可知,这个模式的关键是智能DNS,他能够解析出离用户最近的服务器,运转原理大致是:依据恳求者的IP得到恳求地点B,然后通过计算或者配置得到与B最近或通讯时间最短的服务器C,然后把C的IP地址前往给恳求者。这种模式的优缺点如下: 优点:资源下载快,无需过多的开发与配置,同时也减轻了后端服务器对资源的存储压力,削减带宽的使用。 缺点:目前来说OSS、CDN的价格还是略微有点贵的,只适用于中小规模的应用,另外由于网络传输延迟、CDN的同步策略等,会有一些全都性、更新慢方面的问题。 三、读写分别架构 这种模式次要处理单体数据库压力过大,从而导致业务缓慢甚至超时,查询影响时间变长的问题,也包括需要大量数据库服务器计算资源的查询恳求,这个可以说是单库应用模式的升级版本,也是技术架构迭代演进过程中的必经之路。 这种模式的一般设计如下图: 如上图所示,这种模式较单库但应用模式与内容分发模式多了几个部分,一个是业务数据库的主从分别,一个是引入ES,为什么要这样?都处理的哪些痛点,下面具体结合业务需求场景进行叙述。 场景一:全文关键词检索 我想这个需求,绝大多数应用都会有,假如使用传统的数据库技术,大部分可能会使用like这种sql语句,高级一点的是先分词,然后通分词index相关的记录。sql语句的功能问题与全表扫描机制导致了格外严峻的功能问题,现在基本上很少见到。 ES较Solr配置简约、使用便利,所以这里选用了他。另外,ES支持横向扩展,理论上没有功能的瓶颈。同时,还支持各种插件、自定义分词器等,可扩展性较强。在这里,使用ES不只可以替代数据库完成全检索功能,还可以实现诸如分页、排序、分组、分面等功能。具体的,请同学们自行学习之,那怎样使用呢?一个一般的流程是这样的: 1、服务端把一条业务数据落库 2、服务器异步把该条数据发送到ES 3、ES把该条记录依据规章、配置放入本人的索引库 4、客户端查询的时候,由服务端把这个恳求发送到ES,得到数据后,依据需求拼装、组合数据,前往给客户端 实际中怎样用,还请同学们依据实际情况做组合、取舍 场景二:大量的一般查询 这个场景是指我们的业务中的大部分协助性的查询,如:取钱的时候先查询一下余额,依据用户的ID查询用户的记录,取得该用户最新的一条取钱记录等,我们确定是要每天用到的,而且用的还格外多。同时呢,我们的写入恳求也是格外多的,导致大量的写入、查询操作压向同一数据库,然后,数据库挂了,系统挂了,领导生气了,被开除了,还不起房贷了,露宿街头了,老婆跟别人跑了…… 不敢想,所以要求我们必需分散数据库的压力,一个业界较成熟的方案就是数据库的读写分别,写的时候入主库,读的时候读分库。这样就把压力分散到不同的数据库了,假如一个读库功能不行,扛不住的话,可以一主多从,横向扩展,可谓是一

文档评论(0)

bob157641554 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档