SSM框架之Dubbo——远程服务调用

目录

一、软件架构的演化过程

1.1 单体架构

1.2 垂直架构

1.3 SOA架构

1.4 微服务架构

二、Apache Dubbo概述

2.1 Dubbo简介

2.2 Dubbo架构

三、服务注册中心Zookeeper

3.1 Zookeeper介绍

3.2 安装Zookeper

 3.3 启动、停止Zookeeper

四、Dubbo快速入门

4.1 服务生产者

4.2 服务消费者

五、Dubbo管理控制台

5.1 安装

 5.2 使用

六、Dubbo相关配置说明

6.1 包扫描

6.2 协议

6.3 启动时检查

6.4 负载均衡

七、解决Dubbo无法发布被事务代理的Service问题

7.1 问题展示

7.2 解决方案


一、软件架构的演化过程

软件架构的发展经历了由单体架构、垂直架构、SOA架构到微服务架构的演进过程,下面我们分别了解一下这几个架构。

1.1 单体架构

架构说明:全部功能集中在一个项目内(All in one)。

架构优点:架构简单,前期开发成本低、开发周期短,适合小型项目。

架构缺点:

  • 全部功能集成在一个工程中,对于大型项目不易开发、扩展和维护。
  • 技术栈受限,只能使用一种语言开发。
  • 系统性能扩展只能通过扩展集群节点,成本高。

1.2 垂直架构

架构说明:按照业务进行切割,形成小的单体项目。

架构优点:技术栈可扩展(不同的系统可以用不同的编程语言编写)。

架构缺点:

  • 功能集中在一个项目中,不利于开发、扩展、维护。
  • 系统扩张只能通过集群的方式。
  • 项目之间功能冗余、数据冗余、耦合性强。

1.3 SOA架构

SOA全称为Service-Oriented Architecture,即面向服务的架构。它可以根据需求通过网络对松散耦合的粗粒度应用组件(服务)进行分布式部署、组合和使用。一个服务通常以独立的形式存在于操作系统进程中。

站在功能的角度,把业务逻辑抽象成可复用的服务,通过服务的编排实现业务的快速再生,目的:把原先固有的业务功能转变为通用的业务服务,实现业务逻辑的快速复用。

架构说明:将重复功能或模块抽取成组件的形式,对外提供服务,在项目与服务之间使用ESB(企业服务总线)的形式作为通信的桥梁。

架构优点:

  • 重复功能或模块抽取为服务,提高开发效率。
  • 可重用性高。
  • 可维护性高。

架构缺点:

  • 各系统之间业务不同,很难确认功能或模块是重复的。
  • 抽取服务的粒度大。
  • 系统和服务之间耦合度高。

1.4 微服务架构

架构说明:

  • 将系统服务层完全独立出来,抽取为一个一个的微服务。
  • 抽取的粒度更细,遵循单一原则。
  • 采用轻量级框架协议传输。

架构优点:

  • 服务拆分粒度更细,有利于提高开发效率。
  • 可以针对不同服务制定对应的优化方案。
  • 适用于互联网时代,产品迭代周期更短。

架构缺点:

  • 粒度太细导致服务太多,维护成本高。
  • 分布式系统开发的技术成本高,对团队的挑战大。

二、Apache Dubbo概述

2.1 Dubbo简介

Apache Dubbo是一款高性能的Java RPC框架。其前身是阿里巴巴公司开源的一个高性能、轻量级的开源Java RPC框架,可以和Spring框架无缝集成。

什么是RPC?

RPC全称为remote procedure call,即远程过程调用。比如两台服务器A和B,A服务器上部署一个应用,B服务器上部署一个应用,A服务器上的应用想调用B服务器上的应用提供的方法,由于两个应用不在一个内存空间,不能直接调用,所以需要通过网络来表达调用的语义和传达调用的数据。

需要注意的是RPC并不是一个具体的技术,而是指整个网络远程调用过程。

RPC是一个泛化的概念,严格来说一切远程过程调用手段都属于RPC范畴。各种开发语言都有自己的RPC框架。Java中的RPC框架比较多,广泛使用的有RMI、Hessian、Dubbo等。

Dubbo官网地址:Apache Dubbo

Dubbo提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

2.2 Dubbo架构

Dubbo架构图如下:

节点角色说明:

节点 角色名称
Provider 暴露服务的服务提供方
Consumer 调用远程服务的服务消费方
Registry 服务注册与发现的注册中心
Monitor 统计服务的调用次数和调用时间的监控中心
Container 服务运行容器

虚线都是异步访问,实线都是同步访问;

紫色虚线是在启动时完成的功能,青色虚线(实线)都是程序运行过程中执行的功能。

调用关系说明:

  1. 服务容器负责启动,加载,运行服务提供者。

  2. 服务提供者在启动时,向注册中心注册自己提供的服务。

  3. 服务消费者在启动时,向注册中心订阅自己所需的服务。

  4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

  5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

  6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

三、服务注册中心Zookeeper

通过前面的Dubbo架构图可以看到,Registry(服务注册中心)在其中起着至关重要的作用。Dubbo官方推荐使用Zookeeper作为服务注册中心。

3.1 Zookeeper介绍

Zookeeper 是 Apache Hadoop 的子项目,是一个树型的目录服务。

支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境 。

Zookeeper树型目录服务:

流程说明:

  • 服务提供者(Provider)启动时,向 /dubbo/com.foo.BarService/providers 目录下写入自己的 URL 地址
  • 服务消费者(Consumer)启动时,订阅 /dubbo/com.foo.BarService/providers 目录下的提供者 URL 地址。并向 /dubbo/com.foo.BarService/consumers 目录下写入自己的 URL 地址
  • 监控中心(Monitor)启动时,订阅 /dubbo/com.foo.BarService 目录下的所有提供者和消费者 URL 地址

3.2 安装Zookeper

下载地址:http://archive.apache.org/dist/zookeeper/

安装步骤:

1、安装 jdk(略)

2、把 zookeeper 的压缩包(zookeeper-3.4.6.tar.gz)上传到 linux 系统

3、解压缩压缩包

tar -zxvf zookeeper-3.4.6.tar.gz

4、进入zookeeper-3.4.6目录,创建data目录

mkdir data

5、进入conf目录 ,把zoo_sample.cfg 改名为zoo.cfg

cd conf

mv zoo_sample.cfg zoo.cfg

6、第六步:打开zoo.cfg文件,  修改data属性

vim zoo.cfg

dataDir=/root/zookeeper-3.4.6/data

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值