服务器架构设计大全及其优缺点概述

<>1、什么是架构?

==========================================================================

这里有一篇博客关于【架构和框架的区别】,详述了什么是架构。我认为解释的很到位,不懂的可以看看。

还有一篇讲解的是【架构师的职责是什么】,有兴趣的也可以看一看。

通过以上两片博客可以告诉我们:架构并不是实物,是关于软件如何设计的重要策略

<>2、什么是设计模式?

============================================================================

简单理解:模式就是经验 ,设计模式就是设计经验。在特定情况下使用特定设计、组合设计,可以大大节省我们的设计时间,提高工作效率。

总体而言,共有八种,分别是:

<>1、单库单应用模式:一些小的应用


一个数据库,一个业务应用层,一个后台管理系统。

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

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

<>2、内容分发模式:目前用的比较多


使用CDN技术把网页、图片、CSS、JS等这些静态资源分发到离用户最近的服务器。

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

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

<>3、查询分离模式:对于大并发的查询、业务。


主要解决单机数据库压力过大,从而导致业务缓慢甚至超时,查询响应时间变长的问题,也包括需要 大量数据库服务器计算资源的查询请求。

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

缺点:数据延迟,数据一致性的保证。

<>4、微服务模式:适用于复杂的业务模式的拆解


业务分块,做了垂直切分,切成一个个独立的系统,每个系统各自衍化,有自己的库、缓存、ES等辅助系统,系统之间的实时交互通过RPC,异步交互通过MQ,通过这种组合,共同完成整个系统功能 。

优点:相对高性能,可扩展性强,高可用,适合于中等以上规模公司架构。

缺点:复杂、度不好把握。指不仅需要一个能在高层把控大方向、大流程、总体技术的人,还需要能够针对各个子系统有针对性的开发。把握不好度或者滥用的话,这个模式适得其反!

<>5、多级缓存模式:可以把缓存玩的很好


应对超高查询压力的一种普遍采用的策略,在所有链路的地方,能加缓存就加缓存。可以分别在客户端、API网关、具体的后端业务处增加缓存。

优点:抗住大量读请求,减少后端压力。

缺点:数据一致性问题较突出,容易发生 雪崩 ,即:如果客户端缓存失效、API网关缓存失效,那么所有的大量请求瞬间压向后端业务系统,后果可想而知。

<>6、分库分表模式:解决单机数据库瓶颈


主要解决单表写入、读取、存储压力过大,从而导致业务缓慢甚至超时,交易失败,容量不够的问题。

优点:减少数据库单表的压力。

缺点:事务保证困难、业务逻辑需要做大量改造。

<>7、弹性伸缩模式:解决波峰波谷业务流量不均匀的方法之一


主要解决 突发流量 的到来,导致无法横向扩展或者横向扩展太慢,进而影响业务,全站崩溃的问题。

优点:弹性、随需计算,充分优化企业计算资源。

相关推荐
梦游钓鱼40 分钟前
在window终端创建docker容器的问题
运维·docker·容器
孤寂大仙v1 小时前
【Linux笔记】理解文件系统(上)
linux·运维·笔记
沉默的八哥1 小时前
K8S高可用Web应用部署方案
运维
winyh51 小时前
Vite 打包后Nginx部署配置
运维·nginx
pyliumy2 小时前
在基于Arm架构的华为鲲鹏服务器上,针对openEuler 20.03 LTS操作系统, 安装Ansible 和MySQL
服务器·架构·ansible
运维小贺2 小时前
Nginx常用的模块
运维·nginx·正则表达式
努力学习的小廉2 小时前
深入了解Linux —— 调试程序
linux·运维·服务器
努力学习的小廉3 小时前
深入了解Linux —— git三板斧
linux·运维·git
只做开心事3 小时前
Linux网络之数据链路层协议
linux·服务器·网络
AI学IT3 小时前
(安全防御)旁挂组网双机热备负载分担实验
运维·服务器·网络