说起dubbo,我们先来看看他的发展史
-- 2011 年 10 月 27 日,阿里巴巴开源了自己服务化治理方案的核心框架 Dubbo,服务治理的设计理念开始逐渐在国内软件行业中落地,并被广泛应用。自开源后,许多非阿里系公司选择使用 Dubbo,其中既有当当网、网易考拉等互联网公司,也有中国人寿、青岛海尔等传统企业。-- 2012 年 10 月 23 日 Dubbo 2.5.3 发布后,在 Dubbo 开源将满一周年之际,阿里基本停止了对 Dubbo 的主要升级。-- 2013 年,2014 年,更新了 2 次 Dubbo 2.4 的维护版本,然后停止了所有维护工作。至此,Dubbo 对 Spring 的支持也停留在了 Spring 2.5.6 版本上。-- 阿里停止维护和升级 Dubbo 期间,当当网开始维护自己的 Dubbo 分支版本 Dubbox,新特性主要包括:支持新版本的 Spring,支持 Rest 协议等,并对外开源了 Dubbox。同时,网易考拉也维护了自己的独立分支 Dubbok,可惜并未对外开源。-- 2017 年 9 月 7 日,Dubbo 悄悄在 GitHub 发布了 2.5.4 版本。随后,又迅速发布了 2.5.5、2.5.6、2.5.7 等版本。在 10 月举行的云栖大会上,阿里宣布 Dubbo 被列入集团重点维护开源项目,这也就意味着 Dubbo 起死回生,开始重新进入快车道。-- 2018 年 1 月 8 日,Dubbo 2.6.0 版本发布,新版本将之前当当网开源的 Dubbox 进行了合并,实现了 Dubbo 版本的统一整合。-- 2018 年 2 月 9 日,Apache 基金会的邮件列表上发起了讨论是否接纳阿里的 Dubbo 项目进入 Apache 孵化器的投票。经过一周的投票,邮件列表显示,Dubbo 获得了 14 张赞成票,在无弃权和反对票的情况下,正式通过投票,顺利成为 Apache 基金会孵化项目。-- 自此,Dubbo 开始了两个长期维护的版本,Dubbo 2.6.x (包名:com.alibaba)稳定维护版本和 Dubbo 2.7.x (包名:org.apache)apache 孵化版本。-- 2018 ~ 2019 年,在此期间,Dubbo 发布了 4、5 个版本,并发布了 nodejs,python,go 等多语言的客户端。在此期间,Dubbo 社区相继在北京、上海、深圳、成都、杭州、南京等地举办了开发者沙龙。-- 2019 年 1 月,2.7.0 release 版本发布,这个即将毕业的 apache 版本支持了丰富的新特性,全新的 Dubbo Ops 控制台。时至 5 月,Dubbo 来到了 2.7.2 版本,期间积极引入了新的特性,支持 consul,nacos,etcd 等注册中心。-- 2019 年 5 月 21 号,经过了漫长的孵化期,Dubbo 终于毕业,阿里巴巴又一开源力作成为Apache顶级项目。

dubbo.apache.org

六大核心能力

基本工作原理图

更多详细内容可上官网学习
话不多说,coding!Springboot+Dubbo+Nacos 案例
项目结构
|-- dubbo-demo (父级工程)
|-- dubbo-api (基础工程)
|-- dubbo-consumer (消费者)
|-- dubbo-provider (生产者)
父级工程pom文件
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Dubbo依赖 -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.9</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.9</version>
</dependency>
<!-- Nacos依赖 -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-nacos</artifactId>
<version>2.7.9</version>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>1.4.2</version>
</dependency>
</dependencies>
提供服务的api
public interface IUserServiceApi {
public List<User> getUserList();
}
dubbo-consumer和dubbo-provider添加dubbo-api依赖
<dependency>
<groupId>com.majiang</groupId>
<artifactId>dubbo-api</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
dubbo-provider的配置文件
# 配置端口
server:
port: 8001
dubbo:
# 配置服务信息
application:
name: dubbo-provider
# 配置注册中心
registry:
address: nacos://127.0.0.1:8848
# 设置协议-协议由提供方指定消费方被动接受
protocol:
name: dubbo
port: 20880
dubbo-consumer的配置文件
# 配置端口
server:
port: 8002
dubbo:
# 配置服务信息
application:
name: dubbo-consumer
# 配置注册中心
registry:
address: nacos://127.0.0.1:8848
# 设置超时时间
consumer:
timeout: 4000
dubbo-provider提供服务
@DubboService
public class UserService implements IUserServiceApi {
@Override
public List<User> getUserList() {
List<User> list = new ArrayList<>();
list.add(new User(1,"zhangsan","aaaaaa"));
list.add(new User(2,"lisi","bbbbbb"));
return list;
}
}
dubbo-consumer消费
@Service
public class ConUserService {
@DubboReference
private IUserServiceApi iUserServiceApi;
public List<User> getUserList(){
return iUserServiceApi.getUserList();
}
}
@RestController
@RequestMapping("/con")
public class ConUserController {
@Autowired
private ConUserService conUserService;
@GetMapping("/users")
public List<User> getUserList(){
List<User> userList = conUserService.getUserList();
System.out.println(userList);
return userList;
}
}
启动类上都添加@EnableDubbo,开启dubbo的注解支持
@SpringBootApplication
@EnableDubbo
public class ConApplication {
public static void main(String[] args) {
SpringApplication.run(ConApplication.class,args);
}
}
启动nacos,启动项目

服务列表中有我们注册的服务
下载dubbo-admin,地址https://github.com/apache/dubbo-admin
dubbo-admin-develop介绍
Dubbo一般都是使用zookeeper来进行管理服务注册,而dubbo-admin-develop查看注册了哪些服务,因为查看服务需要从zk上查询的,所以dubbo-admin-develop需要依赖于zookeeper;(我们这里采用nacos)另外,dubbo-admin-develop是一个web项目(spring-boot),提供了管理端页面,页面是使用vue框架,所以需要安装node环境;
主要分为4个模块:
1.dubbo-admin-distribution:可以用来打包分发管理端项目(dubbo-admin-server);
2.dubbo-admin-ui:这个模块就是dubbo-admin的页面代码,使用了vue框架,依赖的数据都是通过http请求dubbo-admin-server来获取;
3.dubbo-admin-server:这个是dubbo-admin的后端程序(提供restful接口给前端);
4.dubbo-admin-test:这个模块是dubbo的一个测试项目,注册服务和服务调用;
修改配置文件,选择注册中心为nacos(默认为zookeeper)

修改vue.config.js(修改vue的后端服务端口映射(改成dubbo-admin-server服务配置的端口号))

# 进入到dubbo-admin-ui目录下# 安装相关依赖npm install# 启动vue项目npm run dev

可以看到我们的服务,进入测试

到此,我们的dubbo基本使用就介绍完了
喜欢就加个关注吧,





