dubbo作为微服务框架,了解一下。
dubbo支持三种方式:
1.multicast;
2.zookeeper;
3.redis
本次使用的是multicast
1、建一个maven工程,不添加其他依赖,只作为公共接口,让provider和comsumer保持
下面是公共接口的pom.xml,没有引用什么
2、创建服务提供者工程
3、创建公共接口中的实现类,ServiceImpl.java
4、创建applicationProvider1.xml,内容如下,文件位置如上图工程目录
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<dubbo:application name="hello-world" /><!-- 注册地址 -->
<dubbo:registry address="multicast://224.5.6.7:1234" />
<!-- <dubbo:registry address="127.0.0.1:2181" protocol="zookeeper"/> -->
<dubbo:protocol name="dubbo" port="20880" />
<bean id="provider1" class="com.tu.dubbo.ServiceImpl" />
<dubbo:service interface="com.tu.dubbo.Service"
ref="provider1" executes="10" />
</beans>
5、创建main函数类,App.java,如下:
6、到这里服务提供者就写好了,由于我想测试多个提供者提供服务的情况,这里就直接copy了一份提供者的工程,重命名叫Provider2,但是有一些地方需要注意下:
(1)这里的application name要和Provider1中的一样,表示提供的是相同的服务,到时候dubbo就知道如果消费者需要hello-world这种服务的话,它会从这些提供者中去选取,感觉貌似有点负载均衡的味道
(2)如果是Provider1和Provider2都在同一台机器上,跟我现在一样,那么,这里对注册中心multicast暴露的端口,应该不能相同,否则冲突
(3)为了区分,我把Provider2中的接口实现返回值改了下,便于区分
到此为止,两个提供者就完成了
7、这里开始写消费者,创建maven工程
8、创建applicationConsumer1.xml
9、创建main函数
到这里消费者Comsumer就创建完成
10、然后启动Provider1和Provider2,再运行Comsumer,会看到结果
多次运行Comsumer会发现,使用的服务,有时候是Provider1提供的,有时候是Provider2提供的
最后,希望大家支持博主群springboot-Sundy1群 431445096