Dubbo历史
Dubbo原是阿里巴巴内部的分布式框架,于2012年开源,众多互联网公司开始使用,当当扩展出DubboX版本,网易拓展出DubboK版本;在2014年10月停更,当时停留在2.4.11版本.但2017年随着SpringCloud的火热,阿里巴巴在2017年9月重启Dubbo并于2018年捐献给了apache,捐献时停留在2.6.x版本,此后一直处于修补漏洞阶段,阿里巴巴最近一次更新是2021年12月,发布了2.6.12版本,所以现在看到的大都是Apache Dubbo,目前最新的版本为3.0.10
官方Dubbo简介
Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用 Dubbo 提供的丰富服务治理特性,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。Dubbo 被设计为高度可扩展,用户可以方便的实现流量拦截、选址的各种定制逻辑。
Dubbo特性
高性能的 RPC 通信协议: RPC 通信对用户来说是完全透明的,使用者无需关心请求是如何发出去的,发到了哪里,每次调用只需要拿到正确的调用结果.
自动服务(地址)发现:可以让微服务之间可以独立演进并人已部署,消费端可以在无感知服务端部署位置和ip地址的情况下完成通信.Dubbo官方推荐使用 Zookeeper 做为注册中心
运行态流量管控:当需要对流量进行更丰富,更细粒度的管控时,就可以用到Dubbo的流量管控策略,Dubbo提供了负载均衡,流量路由,请求超时,流量降级,重试等策略,还支持包括金丝雀发布(灰度发布)、A/B测试、权重路由、同区域优先等,同时Dubbo支持流控策略在运行态动态生效,无需重新部署.
丰富的扩展组件及生态:可适配更多的周边设施.
Dubbo处理流程
节点说明:
Provider: 暴露服务的服务提供方
Consumer: 调用远程服务的消费方
Registry: 服务注册与发现的注册中心
Monitor: 统计服务的调用次数和调用时间的监控中心 -> 非必要,可不配置
Container: 服务运行容器,负责启动,加载,运行服务提供者
调用流程:
- 服务方在启动时,向注册中心注册自己的服务.
- 服务消费者在启动时,向注册中心订阅自己所需的服务.
- 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心会基于长链接推送变更数据给消费者.
- 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,则重新选择一台.
- 服务提供者和消费者,在内存中的调用次数和调用时间,每分钟会发送给监控中心
dubbo-admin部署
首先前往github下载最新的zip包(0.3.0)->点击跳转
下载后解压,因为最新版的admin采用的前后端分离的形式,所以需要先进行如下配置.
打开 dubbo-admin-master\dubbo-admin-server\src\main\resources 包下的application.properties 配置文件并修改
//修改为对应的zookeeper ip和端口,如果本地运行zookeeper则无需修改
admin.registry.address=zookeeper://192.168.171.128:2181
admin.config-center=zookeeper://192.168.171.128:2181
admin.metadata-report.address=zookeeper://192.168.171.128:2181
//老版本的dubbo-admin默认端口为7001,新版本为8080,建议修改下 -> 注意前端配置也需对应修改
server.port=8082
如果jdk为8以上则需要将jdk降为8,或者在pom中加入以下jar
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
返回 dubbo-admin-master\dubbo-admin-server ,cmd进行打包
//动态打成jar并忽略test测试
mvn clean package -Dmaven.test.skip=true
*注意要先运行zookeeper,如果linux先查看防火墙 ,命令-> system status firewalld
进入target运行jar
java -jar dubbo-admin-server-0.3.0
接下来打开 dubbo-admin-master\dubbo-admin-ui 包下的 vue.config.js 配置文件并修改
module.exports = {
outputDir: "target/dist",
lintOnSave: "warning",
devServer: {
//dubbo-admin 前台地址
port: 8081,
historyApiFallback: {
rewrites: [
{from: /.*/, to: path.posix.join('/', 'index.html')},
],
},
publicPath: '/',
proxy: {
'/': {
// 和 application.properties 设置的端口一致,也就是后端的端口
target: 'http://localhost:8082/',
changeOrigin: true,
pathRewrite: {
'^/': '/'
}
}
}
}
打开cmd,打包并运行前端项目
npm install
npm run dev
打开 localhost:8081 登录,默认用户名密码都是root
其他章节 -> 跳转
end...