Dubbo新手入门实战

Dubbo

主要内容

  1. Dubbo简介
  2. Dubbo架构讲解
  3. Dubbo支持的协议
  4. Dubbo支持的注册中心
  5. 第一个Dubbo的Provider
  6. Admin管理界面搭建
  7. 成Dubbo的Consumer
  8. 负载均衡
  9. 完整Dubbo项目演示

学习目标

知识点 要求
Dubbo简介 掌握
Dubbo架构讲解 精通
Dubbo支持的协议 掌握
Dubbo支持的注册中心 掌握
第一个Dubbo的Provider 掌握
Admin管理界面搭建 掌握
完成Dubbo的Consumer 掌握
负载均衡 掌握
完整Dubbo项目演示 掌握

一、Dubbo简介

1,官方说明

在这里插入图片描述

​ Apache Dubbo 是一个高可用的,基于Java的开源RPC框架。

​ Dubbo框架不仅仅是具备RPC访问功能,还包含服务治理功能。

2.发展历史

​ Dubbo是最开始是阿里巴巴内部使用的RPC框架。

​ 2011年对外提供。

​ 2012年停止更新。

​ 2017年开始继续更新。

​ 2019年捐献给Apache,由Apache维护2.7以上版本。

3.Dubbo架构讲解
3.1架构图

在这里插入图片描述

3.2架构说明
3.2.1虚线

​ 虚线表示异步,实线表示同步。异步不阻塞线程性能高,同步阻塞线程必须等待响应结果才能继续执行,相对性能低。

3.2.2Provider

​ 提供者。编写持久层和事务代码。

3.2.3Container

​ 容器(Spring容器),Dubbo完全基于Spring实现的。

3.2.4Registry

​ 注册中心。放置所有Provider对外提供的信息。包含Provider的IP,访问端口,访问遵守的协议,对外提供的接口,接口中有哪些方法等相关信息。

3.2.5Consumer

​ 消费者(RPC调用者,SOA调用服务的项目)开发中也是一个项目,编写service和controller(还可以报页面等)。调用XXXXServiceImpl中的方法。

3.2.6Monitor

​ 监控中心。监控Provider的压力情况等。每隔2分钟Consumer和Provider会把调用次数发送给Monitor,由Monitor进行统计。

4.执行流程
  1. start:启动Spring容器时会把Provider启动。
  2. register:把Provider相关信息注册到Registry里
  3. subscribe:Consumer从Registry中订阅Provider的信息
  4. notify:通知给Consumer
  5. invoke:Consumer根据Registry通知的信息进行调用Provider中方法。
  6. count:Consumer和Provider把调用次数信息异步发送给Monitor进行统计。

二、Dubbo支持的协议

1.Dubbo协议(官方推荐协议)

​ 优点:

​ 采用NIO复用单一长连接,并使用线程池并发处理请求,减少握手和加大并发效率,性能较好(推荐使用)

​ 缺点:

​ 大文件上传时,可能出现问题(不使用Dubbo文件上传)

2.RMI(Remote Method Invocation)协议

​ 优点:

​ JDK自带的能力。

​ 缺点:

​ 偶尔连接失败.

3.Hessian协议

​ 优点:

​ 可与原生Hessian互操作,基于HTTP协议

​ 缺点:

​ 需hessian.jar支持,http短连接的开销大

三、Dubbo支持的注册中心

1.Zookeeper(官方推荐)

​ 1) 优点:

​ 支持分布式.很多周边产品.

​ 2) 缺点:

​ 受限于Zookeeper软件的稳定性.Zookeeper专门分布式辅助软件,稳定较优

2.Multicast

​ 1) 优点:

​ 去中心化,不需要单独安装软件.

​ 2) 缺点:

​ 2.2.1 Provider和Consumer和Registry不能跨机房(路由)

3.Redis

​ 1) 优点:

​ 支持集群,性能高

​ 2) 缺点:

​ 要求服务器时间同步.否则可能出现集群失败问题.

4.Simple

​ 1) 优点:

​ 标准RPC服务.没有兼容问题

​ 2) 缺点:

​ 不支持集群.

四、第一个Dubbo的Provider

​ 新建父项目Parent1。最终结构如下:

在这里插入图片描述

​ 编写pom.xml继承SpringBoot父项目。

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.10.RELEASE</version>
</parent> 
1.新建api项目
1.1创建接口

​ 创建com.michstabe.dubbo.service.DemoDubboService接口

public interface DemoDubboService {
    String demo();
}
2.新建provider项目
2.
### Apache Dubbo 微服务框架使用指南 Apache Dubbo 是一种高性能的 Java 基础设施,专注于微服务之间的高效通信和服务治理。以下是关于 Dubbo 的一些关键特性和常见问题解答。 #### 1. Dubbo 核心组件及其作用 Dubbo 提供了一系列的核心功能来支持微服务架构下的开发和运行: - **RPC 调用**: Dubbo 实现了远程过程调用 (Remote Procedure Call),使客户端能够像调用本地方法一样访问远端服务器的方法[^4]。 - **服务注册与发现**: 利用 Zookeeper 或 Nacos 等工具实现服务的动态注册与发现,从而减少硬编码依赖并提升系统的灵活性[^3]。 - **负载均衡**: 支持多种负载均衡算法(如随机、轮询),以优化资源利用并增强系统稳定性[^4]。 - **容错处理**: 集成有完善的错误恢复机制,比如失败重试、超时控制等,保障即使在网络波动情况下也能维持正常运作[^3]。 #### 2. 安装与基本配置流程 要开始使用 Dubbo 构建自己的微服务体系,需完成以下几个主要步骤: ##### a) 环境搭建 确保 JDK 版本满足最低要求,并下载最新版本的 Dubbo 及其相关依赖库文件。 ##### b) 创建 Maven 工程结构 定义好项目的 pom.xml 文件内容,引入必要的依赖项,例如 spring-boot-starter-dubbo 和 hessian-lite 等[^4]。 ```xml <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.x.x</version> </dependency> ``` ##### c) 编写 Provider/Consumer 接口及其实现类 按照约定俗成的方式分别编写服务提供方(Service Provider Interface, SPI)以及消费方(Client Side Stub), 并通过 @Service/@Reference 注解标注它们的关系[^1]。 ```java // Service interface definition public interface DemoService { String sayHello(String name); } // Implementation of the service on provider side. @Service(version = "1.0.0") public class DemoServiceImpl implements DemoService{ public String sayHello(String name){ return "Hello,"+name; } } ``` 对于消费者而言,则只需声明引用即可获得对应实例对象。 ```java @Reference(version="1.0.0") private DemoService demoService; @Test public void testSayHello(){ System.out.println(demoService.sayHello("world")); } ``` #### 3. 解决 Dubbo 中常见的几个疑问点 - Q: 如果我的项目里既有 RESTful API又有 Dubbo RPC 怎么办? A: 这两种风格完全可以共存于同一个工程之中,只需要区分清楚各自的职责范围就可以了。REST 更适合外部暴露给第三方使用的开放接口;而内部紧密耦合的部分则推荐采用更高效的二进制形式传输——即 Dubbo 所擅长之处[^4]。 - Q: 我们现在正在考虑从传统单体应用迁移到基于 Dubbo 的微服务平台上来,请问有哪些注意事项吗? A: 在迁移过程中需要注意以下几点事项:一是评估现有业务逻辑是否具备拆分的可能性;二是提前规划好新旧两套体系间的过渡方案;三是充分测试各个子模块独立部署后的表现情况,最后再逐步替换掉原有的部分直至完全切换完毕为止[^2]. ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值