Dubbo是阿里巴巴公司开源的一个 高性能 优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成 。
它提供了三大核心能力:
可以看出图中存在着五种角色:
图上的过程可以这么来解释:
这里我们采用 zookeeper 作为服务注册中心,这里我查阅官方文档发现 Redis 也可以作为Dubbo的注册中心,只不过在应用中比较少见,而且官方文档中也说明了:
如果我们想用的话,只需要把 dubbo.registry.addrss
的值改为 redis://127.0.0.1:6379
即可使用。
理论到这里,下面就让我们来进入实战吧~
这里我是在 Mac OS 环境下进行安装,你可以在本地安装虚拟机来完成这个操作。
首先我们需要前往官网下载安装包。
# 0. 解压 tar -zxvf zookeeper-3.4.13.tar.gz # 1. 切换到解压后的目录下 cd zookeeper-3.4.13/ # 2. 建立data和logs目录 mkdir data mkdir logs # 3. 复制zoo_sample.cfg 为 zoo.cfg cd conf/ cp zoo_sample.cfg zoo.cfg # 4. 修改配置 vi zoo.cfg dataDir=刚刚新建的data目录的绝对路径 logDir=刚刚新建的data目录的绝对路径 # 5. 启动 cd ../bin ./zkServer.sh start # 6. 检测是否启动成功 ./zkServer.sh status 复制代码
引入我们项目需要的Maven依赖:
<! --这里的包不要写错了,我试了一下阿里的starter,发现有很多问题,并没有这个好用 --> <dependency> <groupId>io.dubbo.springboot</groupId> <artifactId>spring-boot-starter-dubbo</artifactId> <version>1.0.0</version> </dependency> 复制代码
然后对注册中心以及服务接口包的暴露的配置
spring.dubbo.application.name=provider spring.dubbo.registry.address=zookeeper://127.0.0.1:2181 spring.dubbo.protocol.name=dubbo spring.dubbo.protocol.port=27899 spring.dubbo.scan=indi.viyoung.dubbo.provider.service 复制代码
编写 Service
接口和实现类:
public interface TestService { String test(); } 复制代码
@Service public class TestServiceImpl implements TestService { @Override public String test() { return "Hello Wolrd"; } } 复制代码
需要注意的是这里的 Service
注解必须是dubbo包下的哟,可千万别写错了!
同样要引入依赖:
<dependency> <groupId>io.dubbo.springboot</groupId> <artifactId>spring-boot-starter-dubbo</artifactId> <version>1.0.0</version> </dependency> 复制代码
Consumer的配置的话比较少:
spring.dubbo.application.name=consumer spring.dubbo.registry.address=zookeeper://127.0.0.1:2181 复制代码
直接在Controller中引用
public class TestController { @Reference private TestService testService; @RequestMapping() public String hello() { return testService.test(); } } 复制代码
注意这里的 @Reference
注解不要写错,应该是Dubbo包下的!
然后把项目启动后,我们访问一下:
Nice,访问成功!
下面,我们来学习一下Dubbo-Admin的使用
Dubbo-Admin之前给我的感觉就是没有UI的样子:
大概就长这个样子,贼丑,但是不知道啥时候悄悄摸摸的更新了一波,变得让颜值控也是非常满意,而且支持jar包启动,不用再去单独的安装Tomcat~
git clone https://github.com/apache/incubator-dubbo-ops.git 复制代码
首先从Git上把这个项目拉下来,用IDEA打开:
只需要添加一个端口号的配置,然后使用左侧的maven打包工具打包:
然后去dubbo-admin-server的target的目录下使用以下命令:
java -jar dubbo-admin-server-0.1.jar >run.log & 复制代码
然后打开浏览器,输入localhost:7070
对比之前的UI简直强了无数倍,而且贼方便!
具体的功能大家可以跟着操作之后去探讨,这里就不再展开来说了。