Dubbo(一)—— 通过软件架构发展史对SOA面向服务、Dubbo框架理解

Dubbo(一)—— 软件架构发展史、SOA面向服务、Dubbo框架原理

1.软件架构发展史

  • All In One架构(简单单体模式)

  • 如下图,所有的模块都在Service.java类中,包括数据访问代码,控制跳转代码,业务处理代码等。

  • 优缺点对比

  • 优点 将所有的代码都放在一个项目中,这样研发团队的任何一个人都可以随时修改任意的一段代码,或者增加一些新的代码。这种方式对于一个新团队的创立初期,最短时间推向市场,可省去各种额外的设计,直接上手干活,争取了时间,因而是非常有意义的。

All In One架构

  • 缺点 AllInOne架构的系统如果变更需求对部署影响非常大,每次发布的部署单元就是一个新版本的整个系统,系统内的任何业务逻辑调整都会导致整个系统的重新打包,部署、停机、再重启,进而导致了系统的停机发布时间较长

  • 每次发布上线都是生产系统的重大变更,这种部署模式大大提升了系统风险,降低了系统的可用性

  • MVC/三层架构

  • MVC 也是一个非常常见的 3 层(3-Tier)结构架构模式,它把每个模块划分为模型层(Model Layer)、视图层(View Layer)、控制器层(Controller Layer)等部分。
    MVC/三层架构
    优点 简单,直观,可以非常有效的上手;把系统拆解为一个个的小单元,有利于分配开发工作;根据不同的模块和分层结构,可以把系统拆分成多个不同的子项目;提高了软件开发效率。
    缺点 基于单体架构下的 MVC 模式依然解决不了单体架构本身存在的问题,特别是对于可用性和扩展性的影响。
    MVC 模式也存在定义不够明确,对于简单的业务场景拆解过细导致复杂度增加等问题。
    所有代码仍然在同一台计算机中运行,并发能力有限

  • RPC(Remote Procedure Call)—远程过程调用

  • RPC远程过程调用架构
    远程过程调用流程图
    优点简单;高效,通用。使用RPC可以让一个项目部署到多个不同的计算机中去。让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。
    缺点:此种模式的IP地址和端口号较乱,有一定的维护难度

  • 补充:RPC框架的核心技术点:服务暴露、远程代理对象,通信

  • SOA(Service-Oriented Architecture)—面向服务的架构

  • SOA面向服务架构

  • 将每台服务端的IP地址和端口号全部注册到注册中心中去,方便客户端调用。

  • 注册中心可以使用zookeeper工具。

  • Dubbo就是基于SOA的一种架构。

2.SOA定义

  • SOA(Service-Oriented Architecture),中文全称:面向服务的架构。

    SOA 是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。

    SOA 是一种思想,一种方法论,一种分布式的服务架构。

SOA用途

  • SOA解决多服务凌乱问题,SOA架构解决数据服务的复杂程度,同时SOA又有一个名字,叫做服务治理

SOA基本特征

  • 可从外部访问 随时可用 粗粒度的服务接口分级 松散耦合 可重用的服务
  • 服务接口设计管理 标准化的服务接口 支持各种消息模式 精确定义的服务契约

3.Dubbo架构原理图

Dubbo架构原理
Provider: 暴露服务的服务提供方。
Consumer: 调用远程服务的服务消费方。
Registry: 服务注册与发现的注册中心。
Monitor: 统计服务的调用次调和调用时间的监控中心。
Container: 服务运行容器,常见的容器有Spring容器。

调用关系说明:

  1. 服务容器负责启动,加载,运行服务提供者。
  2. 服务提供者在启动时,向注册中心注册自己提供的服务。
  3. 服务消费者在启动时,向注册中心订阅自己所需的服务。
  4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
  5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
  6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心Monitor。
发布了2 篇原创文章 · 获赞 1 · 访问量 34

猜你喜欢

转载自blog.csdn.net/weixin_43966259/article/details/104390744