一、单体架构:

  将四个模块ABCD放到一个项目中,功能模块不进行拆分,项目整体搭建集群叫做多机单体架构,项目不搭建集群叫单机单体架构。

                              

 


  单体架构的优点:
    简单:开发部署都很方便,小型项目首选


  单体架构的缺点:

  随着业务增长,时间推移,数量量越来越大,用户越来越多,单体架构会存在问题:
    -- 项目启动慢: ABCDEF 很多项目导致项目启动慢。
    -- 可靠性差 : D模块出现问题,会影响ABC, D一旦挂了,其他模块也不能用了。

    -- 可伸缩性差:
    -- 扩展性和可维护性差:
    -- 性能低:

 

  二、垂直架构
    概念:某一个领域细分 称为垂直,像早期淘宝什么都卖,随后出现了很多垂直的网站,如京东 唯品会,聚美优品 ,电商方面的垂直。

    垂直架构是指将单体架构中的多个模块拆分为多个独立的项目。形成多个独立的单体架构。

    如下图:项目1 部署ABE,项目2 部署CDE

                                 

 

  (1)垂直结构解决了单体架构 中存在的问题:

    - 项目启动慢 :项目拆分,启动2个项目;

    - 可靠性差 : 模块D挂了,AB不受影响;

    - 可伸缩性差:如CD访问人数多,那么CD搭建集群;

    - 扩展性和可维护性差:CD 模块添加E,AB不受影响;

    - 性能低

  (2)垂直架构存在的问题: 重复功能太多

    如:公共组件,如用户管理,假如AB模块是电商订单项目, 要获取用户信息(E), CD模块是 购物车模块,也要获取用户信息(E),用户管理模块E,都需要用,都需要写。


  三、分布式架构


    分布式架构:是指在垂直架构的基础上,将公共业务模块抽取出来,作为独立的服务供其他调用者消费,以实现服务的共享和重用。底层通过RPC(远程过程调用实现)
    RPC: Remote Procedure Call远程过程调用。有非常多的协议和技术来都实现了RPC的过程。比如: HTTP REST风格,Java RMI规范、WebService SOAP协议Hession等等。

  如下图:AB,CD 是服务消费者,服务提供者是E。

                                    

 


  (1)分布式架构解决垂直架构存在的问题:
    -- 重复功能太多: 已解决,但是有很多服务提供者,服务交叉调用会存在问题。

  (2)分布式架构存在的问题:服务统一管理;
​      -- 服务提供方- 一旦产生变更,所有消费方都需要变更。

  如:网络调用的三要素为:协议,IP,端口。如果服务提供者 E的IP发生变化 ,AB和CD需要手动修改调用。


  四、面向服务的架构(SOA)

 

    SOA: (Service- Oriented Architecture,面向服务的架构):是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。

    ESB: (Enterparise Servce Bus):企业服务总线,服务中介。主要是提供了一一个服务于服务之间的交互。ESB包含的功能如:负载均衡,流量控制,加密处理,服务的监控,异常处理,监控告急等等。

  如下图:模块和服务之间通过ESB通信

                                      

 


  (1)面向服务架构解决了分布式架构存在的问题:(服务之间的调用通过ESB管理)
​      --服务提供方- -旦产生变更,所有消费方都需要变更:服务之间不再直接调用,而是通过ESB通信。

 

  五、微服务架构:
    微服务架构和面向服务的架构基本是一回事。

    微服务架构是在SOA上做的升华,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。

    微服务架构= 80%的SOA服务架构思想+ 100%的组件化架构思想+ 80%的领域建模思想

  如下图:ABC三个服务,ABC访问自己的数据库,他们相互之间是独立的,A不能访问B的数据库,客户端通过统一组件-网关访问数据库。

                                                      

 

  特点:

    -- 服务实现组件化,开发者可以自由选择开发技术,也不需要协调其他团队;
    -- 服务之间交互一般使用REST API
    -- 去中心化,每个微服务有自己私有的数据库持久化业务数据
    -- 自动化部署:把应用拆分成为一个一个独立的单个服务,方便自动化部署、测试、运维

 

  六、集群和分布式


    在一般项目中,集群和分布式并不是分开的,集群和分布式是并存的。

    集群:一个业务模块,部署在多台服务器上。通俗解释就是:很多“人”一起,干一样的事。

      如:部署三个单体项目, 通过Nginx 实现负载均衡,请求转发。

    分布式:一个大的业务系统,拆分成小的业务模块,分别部署在不同的机器上。通俗解释就是:很多"人”一起,干不一样的事。这些不一样的事, 合起来是一件大事。

posted on 2024-07-11 12:20  努力--坚持  阅读(13)  评论(0编辑  收藏  举报