Dubbo是什么
Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。
Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:
- 面向接口的远程方法调用
- 智能容错和负载均衡
- 以及服务自动注册和发现。
Dubbo官网
http://dubbo.apache.org/zh-cn/index.html
在官网中,可以查看以下特性:
-
了解Dubbo的特性
-
查看官方文档
Dubbo原理
Dubbo官网上的运作原理图如下:
图片说明:
-
服务提供者(Provider):暴露服务的服务提供方,服务提供者在启动时,向注册中心注册自己提供的服务。
-
服务消费者(Consumer): 调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
-
注册中心(Registry):注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
-
监控中心(Monitor):服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心
调用关系说明:
-
服务容器负责启动,加载,运行服务提供者。
-
服务提供者在启动时,向注册中心注册自己提供的服务。
-
服务消费者在启动时,向注册中心订阅自己所需的服务。
-
注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
-
服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
-
服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
Dubbo环境搭建
前提
在安装Dubbo前,阅读Dubbo的官方文档,可以知晓Dubbo使用Zookeeper作为注册中心,所以最好率先下载Zookeeper,参考博客:https://blog.csdn.net/qq_41151659/article/details/99672978
步骤
本次安装是在Windows系统下,在Linux或者其他操作系统下安装可去参考其他博客。
事实上,Dubbo本身并不是一个服务软件。它其实就是一个jar包,能够将java程序连接到zookeeper,并利用zookeeper消费、提供服务。
但是为了让用户更好的管理监控众多的dubbo服务,官方提供了一个可视化的监控程序dubbo-admin,不过这个监控即使不装也不影响使用。
- 下载dubbo-admin,地址如下:https://github.com/apache/dubbo-admin/tree/master
- 将dubbo-admin解压到本地目录,修改 dubbo-admin\src\main\resources\application.properties,用于指定zookeeper地址,代码如下(一般默认不用修改):
server.port=7001
spring.velocity.cache=false
spring.velocity.charset=UTF-8
spring.velocity.layout-url=/templates/default.vm
spring.messages.fallback-to-system-locale=false
spring.messages.basename=i18n/message
spring.root.password=root
spring.guest.password=guest
dubbo.registry.address=zookeeper://127.0.0.1:2181
- 在项目目录(即Gdubbo-admin-master) 下打开CMD窗口,输入以下命令,通过Maven以打包dubbo-admin(Maven安装可参考此篇博客:https://blog.csdn.net/qq_41151659/article/details/96299660):
mvn clean package -Dmaven.test.skip=true
- 等待打包完成,直到成功,如图所示:
- 执行dubbo-adme
java -jar dubbo-admin-0.0.1-SNAPSHOT.jar
- 执行完毕,可以去访问http://localhost:7001/ ,这时候提示需要输入登录账号和密码,默认的账号密码均为root,登录成功后即可看到界面,如图所示:
Dubbo详细学习
建议参考官方中文文档:http://dubbo.apache.org/zh-cn/docs/user/quick-start.html