Dubbo学习——基础使用
目录
一、Dubbo的发展历程
Apache Dubbo 是一款微服务框架,为大规模微服务实践提供高性能 RPC 通信、流量治理、可观测性等解决方案,涵盖 Java、Golang 等多种语言 SDK 实现。
Dubbo出自于Alibaba公司,2011年开源至GitHub;
2014年11月发布dubbo2.4.11后停止更新;
此后一段时间,很多公司根据自己的业务推出了基于dubbo的改良版本,如当当网(Dubbo X)、网易考拉(Dubbo K);
2017年,SpringCloud发布,Dubbo继续更新;
2018年,阿里合并Dubbo X,发布2.6版本并将其贡献给Apache继续维护,更名为 Apache Dubbo。
二、Dubbo基本知识
Dubbo支持多种协议:
- dubbo 协议 (默认)
- rmi 协议
- hessian 协议
- http 协议
- webservice 协议
- thrift 协议
- memcached 协议
- redis 协议
- RestFull
Dubbo的注册中心:
- Nacos(目前最主流)
- Zookeeper
- Multicast
- Redis
- Simple
....
Dubbo的监控中心:
- dubbo-admin
三、基于Zookeeper注册中心的demo
1.创建springboot项目并添加三个子模块,即服务的提供方和消费方,存放公用的服务接口
2.定义服务接口和实体对象
public class User implements Serializable {
public String name;
public Integer id;
}
public interface UserService {
User getById(int id);
}
实体类要实现Serializable接口,RPC调用的对象数据的传输需要序列化和反序列化
3.生产者暴露服务到Zookeeper注册中心
3.1实现UserService服务
import org.apache.dubbo.config.annotation.Service;
@Service
public class MyUserService implements UserService {
@Override
public User getById(int id) {
return new User("Max", id);
}
}
3.2配置application.yml
server: #该应用在本机的端口号 port: 8081 #dubbo设置 dubbo: application: name: provider #注册中心 registry: address: zookeeper://localhost:2181 #元中心地址 metadata-report: address: zookeeper://localhost:2181 #使用的传输协议 protocal: name: dubbo #需要暴露的服务的包 scan: base-package: com.examaple 元数据地址:将provider、consumer以及注册中心中非服务配置持久化储存在zookeeper或者redis中,减少服务调用过程中传输的数据量,提高效率。
3.3启动应用
package com.example;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableDubbo
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
4.消费者消费服务
package com.example;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
@Component
public class Consume implements CommandLineRunner {
@DubboReference
private UserService userService;
@Override
public void run(String... args) throws Exception {
System.out.println(userService.getById(1));
}
}
package com.example;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableDubbo
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
四、监控中心dubbo-admin
dubbo-admin是图形化的服务管理页面;安装时需要指定注册中心地址,可从注册中心中获取到服务提供者/消费者的全部信息并进行配置管理,结合admin管理控制后台使用,可以清晰的看到服务的访问记录、成功次数、失败次数等
1.下载项目GitHub - apache/dubbo-admin: The ops and reference implementation for Apache Dubbo
2.在/dubbo-admin/dubbo-admin-server/src/main/resources/application.properties目录下配置注册中心地址(这里以zookeeper为例)
3.在/dubbo-admin目录下执行
mvn clean package
显示BUILD SUCCESS即打包成功
4.启动项目
在dubbo-admin\dubbo-admin-distribution\target目录下执行
java -jar dubbo-admin-0.5.0.jar
启动springboot应用
5.登录
在dubbo-admin\dubbo-admin-ui目录下执行
npm run dev
获取默认地址 localhost:8082
默认账号和密码 root/root