架构设计(3)–架构模式

最常见的架构模式,将系统在横向维度上切分成几个部分,每个部分单一职责。网站一般分为三个层次: 应用层服务层数据层 ,其具体结构如下图所示:

通过分层,一个庞大系统切分成不同部分, 便于分工合作和维护

应用层:主要负责具体的业务逻辑处理

服务层:提供可复用的服务

数据层:负责数据的存储和访问

但是,分层架构也有一些挑战:①必须合理规划层次边界和接口;②禁止跨层次的调用及逆向调用。

2、分割

分割是在纵向方面对软件进行切分-> 将不同的功能和服务分割开来 ,包装成高内聚低耦合的模块单元,有助于软件开发和维护,还便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力。

3、分布式

①分布式应用和服务:应用和服务模块分布式部署,便于业务功能扩展;

②分布式静态资源:JS、CSS、LOGO图片等资源独立部署,采用独立域名->动静分离;

③分布式数据和存储:传统RDBMS分布式部署和NoSQL产品;

④分布式计算:Hadoop及其MapReduce分布式计算框架,其特点是移动计算而不是移动数据。

4、集群

多台服务器部署相通应用构成一个集群,通过负载均衡设备共同对外提供服务。当某台服务器发生故障,负载均衡设备或者系统的失效转移机制将请求转发到集群中的其他服务器上,提高系统的可用性,即所谓的 HA (高可用性)。

所以,在网站应用中,即使是访问量很小的分布式应用和服务,也至少要部署两台服务器构成一个小集群。

5、缓存

缓存是改善软件性能的 第一手段 。在复杂的软件设计中,缓存几乎无处不在。

①CDN:内容分发网络,缓存网站的一些静态资源;

②反向代理:部署在网站的前端,最先访问到的就是反向代理服务器;

③本地缓存:在应用服务器本地缓存热点数据,无需访问数据库;

④分布式缓存:应用程序通过网络通信访问缓存数据;

网站应用中, 缓存除了可以加快数据访问速度,还可以减轻后端应用和数据存储的负载压力

6、异步

业务之间的消息传递不是同步调用,而是将一个业务操作分成多个阶段,每个阶段之间通过 共享数据的方式 异步执行进行协作。

异步架构是典型的 生产者消费者模式 ,两者不存在直接调用,只要保持数据结构不变,彼此功能实现可以随意变化而不互相影响,这对网站扩展新功能非常便利。

异步消息队列可以提高系统可用性、加快网站响应速度,消除并发访问高峰。

7、冗余

要想保证在服务器宕机的情况下网站依然可以继续服务,不丢失数据,就需要一定程度的服务器冗余运行, 数据冗余备份 ,这样当某台服务器宕机时,可以将其上的服务和数据访问转移到其他机器上。

数据库除了定期备份存档保存实现 冷备份 之外,为了保证在线业务高可用,还需要对数据库进行主从分离,实时同步实现 热备份

8、自动化

在无人值守的情况下,网站可以正常运行,一切都可以自动化是网站的理想状态。目前大型网站的自动化架构设计主要集中在 发布运维方面

①发布部署过程自动化;

②自动化代码管理;

③自动化测试;

④自动化安全监测;

9、安全

①通过 密码手机校验码 进行身份验证;

②对登录、交易等操作进行 加密

③使用 验证码 进行识别;

④对于常见的XSS攻击、SQL注入、编码转换等进行防范;

⑤对垃圾或敏感信息进行 过滤

⑥对交易转账等操作进行 风险控制

思维导图:

您可能感兴趣的

9 warning signs of bad IT architecture Chances are someone at some point spent countless brain cycles planning your organization’s IT architecture before handing the grand plan off to ...
Understanding the Java Virtual Machine (JVM) Archi... What is garbage collection? Garbage collection (GC) is a form of automatic memory management. In essence what the garbage collection does is to at...
分布式数据库HBase的架构设计 近些年来,各种互联网+的公司如雨后春笋般出现,做一个在线平台或者做一个APP基本成为这些公司的标配。Web系统的流行,数据收集越来越容易,促使各类数据库系统应用得越来越广泛。 我们在平时的技术讨论或者实际应用中经常会提到传统数据库。提到传统数据库,很多人会很容易联想到Oracle、MySQ...
从程序员成长为架构师的技术必修课 一位技术大牛在谈到“技术人最重要的能力是什么”时曾提出一个观点:你所解决问题的复杂度决定了你技术实力的高度。 问题越复杂,解决问题所需要的技术实力就越高,也就越能体现一个人的价值。 大部分的技术人员在工作中主要是编写业务逻辑代码,以至于不少程序员总是有年龄上的焦虑,担心 30 岁、35...
Android/Linux I2C 驱动架构分析 前言 分析传感器源码的时候,发现对 I2C 的驱动也有些忘记了,所以就再分析一下并形成这篇博文。 驱动架构 I2C 驱动架构 源码分析 # alpskernel-3.18driversi2c 重要的结构体 # ...
责编内容来自:guisu,程序人生。 (源链) | 更多关于

阅读提示:酷辣虫无法对本内容的真实性提供任何保证,请自行验证并承担相关的风险与后果!
本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 架构设计(3)–架构模式



专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录