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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hguisu/article/details/78261402

   
架构模式的一些要点和架构设计原则是相类似的。表示系统架构的基本结构组织方案。它提供了一组预定义的子系统、指定它们的职责,并且包括用于组织其间关系的规则和指导。

 

 

1、分层

分层:对模型中同一抽象层次上的包进行分组的一种特定方式。通过分层,从逻辑上将子系统划分成许多集合,而层间关系的形成要遵循一定的规则。通过分层,可以限制子系统间的依赖关系,使系统以更松散的方式耦合,从而更易于维护。(层是对构架的横向划分,分区是对构架的纵向划分)。

 

层(layer)这个概念在计算机领域是非常NB的一个概念。计算机领域处处体现层的概念:计算机本身:(系统调用层、设备驱动层、操作系统层、CPU指令集,每个层都负责自己的职责。网络5层模型:(物理层、链路层、网络层、传输层、应用层)。

    层到了软件领域也一样好用。为什么呢?我们看看使用层技术有什么好处:

    ● 你使用层,但是不需要去了解层的实现细节。
    ● 可以使用另一种技术来改变基础的层,而不会影响上面的层的应用。
    ● 可以减少不同层之间的依赖。
    ● 容易制定出层标准。
    ● 底下的层可以用来建立顶上的层的多项服务。

    当然,层也有弱点:

    ● 层不可能封装所有的功能,一旦有功能变动,势必要波及所有的层。
    ● 效率降低。

 

当然,层最难的一个问题还是各个层都有些什么,以及要承担何种责任。最常见的架构模式,将系统在横向维度上切分成几个部分,每个部分单一职责。通过分层:                                      
1、从逻辑上将子系统划分成许多集合,而层间关系的形成要遵循一定的规则。                                          
2、可以限制子系统间的依赖关系,使系统以更松散的方式耦合,从而更易于维护。

网站一般分为三个层次:应用层服务层数据层,其具体结构如下图所示:

     

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

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

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

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

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

 

 

2、分割

 

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

 

 

 

3、分布式

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

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

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

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

 

4、集群

      

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

     

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

 

5、缓存

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

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

       

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

      

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

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

      

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

 

 

6、异步

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

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

    

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

 

 

7、冗余

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

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

    

 

 

8、自动化

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

  ①发布部署过程自动化;

  ②自动化代码管理;

  ③自动化测试;

  ④自动化安全监测;

 

9、安全

 

     

 

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

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

  ③使用验证码进行识别;

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

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

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

思维导图:

阅读更多
换一批

没有更多推荐了,返回首页