RPC框架Dubbo服务与客户端
Dubbo的学习和入门demo的开发
-
使用Dubbo 来服务化(基于Spring)。 使用Zookeeper集群 作为Dubbo服务 的注册中心 (Zookeeper简介与安装)。 使用Dubbo - admin提供的一个JavaWeb 项目作为Dubbo服务 管理控制台。 创建了一个服务提供者项目(pom父项目) :dubbo-provider。 创建了一个服务消费者项目(pom父项目) :dubbo-consumer。 这只是练习项目,使用一个项目既是提供者也是消费者。
服务提供者-provider
- 先建一个dubbo的空项目
- 然后在dubbo项目中新建一个mudule,创建名为dubbo-provider的springboot项目
- 引入dubbo 和zookeeper依赖
- 创建application.yml,在里面加入dubbo 配置
- 第4步 springboot利用IOC引入配置文有很多种 可以利用application.properties方式直接在里面注入, 可以利用引入外部文件的方式, 可以利用自己创建的bean,利用Value注解
- springboot启动类DubboProviderApplication,注意使用dubbo-spring-boot-starter版本的必须在启动类上加@EnableDubboConfiguration注解来启用dubbo
- 创建ProviderService
- 创建ProviderServiceImpl,创建实现类,这个时候实现类上面需要用到dubbo 的@Service 注解。其他版本的dubbo 暴露服务接口的方式可以通过<dubbo:service/>或者spring.dubbo.scan, 但是dubbo-spring-boot-starter版本的只需要在@Service注解上interfaceClass 属性来指定当前要暴露的服务。如下:
- 将本地的zookeeper打开,跑DubboProviderApplication就可以此服务暴露。
服务消费者-consumer
- 然后创建消费者项目dubbo-consumer,引入相同依赖并添加spring-boot-starter-web依赖
- yml内容如下:
- 我们需要创建和 ProviderService相同的接口类,不需要写实现 下面我们可以看到,创建controller来进行远程调用,我们可以看到这里的提供者Service 不再是用@Autowired去装载了,而是用dubbo的@Reference注解去连接提供者提供服务了。 当然有可能业务需求,需要我们指定提供者服务版本,我们可以在@Service加上属性@Service(version="1.0.0"),@Reference去链接的时候也同样指定@Reference(version="1.0.0")。
- springboot启动类DubboConsumerApplication
dubbo监控中心
现在dubbo官网已经提供springboot版本啦(而且还是前后端不分离的),直接IDEA工具启动springboot工程就行:
传送门:
(master分支的代码是前后端不分离的)
使用方法:
- 可以使用git clone -b master
- 成功导入后,可以直接运行dubbo-admin-server中的DubboAdminApplication
- dubbo-admin的端口默认是7001,dubbo注册中心的地址是本机的2181端口
- 启动后,浏览器输入http://localhost:7001即可访问,默认的用户名密码输入root,即进入首页。
参考资料:官方文档