目录
- 1. 什么是Dubbo
- 2. 设计架构
- 2.1 角色
- 2.1.1 提供者
- 2.1.1 消费者
- 2.1.1 注册中心
- 2.1.1 监控中心
- 2.1.1 容器
- 3. 创建应用(maven + springboot + dubbo)
- 3.1 安裝zookeeper
- 3.2 依赖
- 3.3 提供服务应用
- 3.3.1 配置文件
- 3.3.2 实现接口
- 3.4 消费服务应用
- 3.4.1 依赖
- 3.4.2 配置
- 3.4.3 服务调用
- 3.4.5 启动服务
- 3.4.6 效果(restful风格)
- 4. Dubbo
- 4.1 配置覆盖关系
1. 什么是Dubbo Apache Dubbo |?d?b??| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
Dobbo本身阿里开源的RPC框架,现由Apache进行维护。
官方网站
文章图片
2. 设计架构
文章图片
2.1 角色 2.1.1 提供者 暴露服务的服务提供方,将自己提供的服务注册到注册中心,供消费者进行订阅
2.1.1 消费者 调用远程服务的服务消费方
2.1.1 注册中心 服务注册与发现的注册中心,官方推荐使用Zookeeper(可以采用其他工具作为注册中心)
2.1.1 监控中心 统计服务的调用次数和调用时间的监控中心
2.1.1 容器 服务运行容器,负责管理提供远程服务的对象
3. 创建应用(maven + springboot + dubbo) 注意:记得在启动类上添加@EnableDubboConfiguration注解
3.1 安裝zookeeper 官网下载,解压即用
3.2 依赖
com.alibaba.spring.boot
dubbo-spring-boot-starter
2.0.0
com.github.sgroschupf
zkclient
0.1
3.3 提供服务应用 3.3.1 配置文件
server.port=8080
spring.dubbo.application.name=producer
#开启Dubbo服务
spring.dubbo.server=true
#注册中心地址
spring.dubbo.registry=zookeeper://127.0.0.1:2181
#通信端口
spring.dubbo.protocol.port=20880
#通信协议
spring.dubbo.protocol.name=dubbo
3.3.2 实现接口
package cn.tianqb.producer.service;
import cn.tianqb.consumer_interface.service.StudentService;
import cn.tianqb.pojo.Student;
import com.alibaba.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;
/**
* @Description:
* @Author tianqb
* @Mail tianqingbo@tianqb.cn
* @Date 2020/7/11 14:51
* @Version v1.0
*/
// 避免和Dubbo的造成歧义,使用Spring的Component注解代替@Service
@Component
// 注意@Service的包 import com.alibaba.dubbo.config.annotation.Service;
@Service(interfaceClass = StudentService.class, version = "0.0.1", timeout = 5000, retries = 1)
public class StudentServiceImpl implements StudentService {@Override
public Student findStudentById(Integer id){
return new Student(id, "张三", 1);
}}
public interface StudentService {
public Student findStudentById(Integer id);
}
3.4 消费服务应用 3.4.1 依赖
com.github.sgroschupf
zkclient
0.1
com.alibaba.spring.boot
dubbo-spring-boot-starter
2.0.0
cn.tianqb
producer
0.0.1-SNAPSHOT
3.4.2 配置
server.port=8081
spring.dubbo.application.name=consumer
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
#启动时检查,不需要服务提供者处于启动状态
#若不检查,则报错,项目无法启动
#非必须,默认true
spring.dubbo.consumer.check=false
3.4.3 服务调用
@RestController
@RequestMapping("/student")
public class StudentController {
// 用在消费端,表明使用的是服务端的什么服务
@Reference(version = "0.0.1")
private StudentService studentService;
@GetMapping("/{id}")
public Student getStudent(@PathVariable Integer id){
return studentService.findStudentById(id);
}}
3.4.5 启动服务 【SpringBoot整合RPC框架Dubbo】将提供服务和消费服务的应用启动即可!
3.4.6 效果(restful风格)
文章图片
4. Dubbo Dobbo的官方文档讲解的也是非常的细致,这里只说明部分内容,官方地址请点击
4.1 配置覆盖关系 原则:
- 方法级优先,接口级次之,全局配置再次之。
- 如果级别一样,则消费方优先,提供方次之。
例如超时timeout超时配置,方法级别的配置优先级最高
,服务级别的最低
,最终针对此方法的超时时间为1000
推荐阅读
- Dubbo使用Hessian2序列化时针对Byte类型出现java.lang.ClassCastException
- Dubbo|【Dubbo | Zookeeper】一篇文章入门Dubbo+Zookeeper
- Spring|Spring Cloud Alibaba(四)(Spring Cloud 使用 Sentinel 实现限流)
- Spring|Spring Cloud Alibaba(三)(使用 Nacos config 实现统一配置管理)
- Spring|Spring Cloud Alibaba(二)(注解实现 Dubbo 服务调用失败时的本地伪装)
- java框架|org.apache.curator.CuratorConnectionLossException: KeeperErrorCode = ConnectLoss
- Dubbo之RpcContext原理
- Java|dubbo @EnableAsync @Configuration
- dubbo中的ExtensionLoader详解