dubbo+zookeeper注冊(cè)中心的簡(jiǎn)單配置
1.新增一個(gè)父項(xiàng)目,并在父項(xiàng)目中添加依賴
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.8</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.7</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
2.在父項(xiàng)目中添加一個(gè)子模塊dubbo_interface,并新增一個(gè)IHelloInterface的接口
package com.ym.dubbo;
public interface IHelloInterface {
String sayHello(String name);
}
3.在當(dāng)前父項(xiàng)目中添加一個(gè)子模塊dubbo_provider
-
在當(dāng)前子模塊的pom文件中,添加dubbo_interface的依賴
<dependencies> <dependency> <groupId>com.ym</groupId> <artifactId>dubbo_interface</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies>
-
在當(dāng)前子模塊中添加dubbo_interface模塊的實(shí)現(xiàn)類
package com.ym.dubbo; public class HelloName implements IHelloInterface { @Override public String sayHello(String name) { return "hello " + name; } }
-
在當(dāng)前子模塊的resources下新增spring-dubbo.xml的配置文件(注冊(cè)中心的IP地址一定要找準(zhǔn))
<?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"> <!--使用bean,來創(chuàng)建一個(gè)helloName的示例對(duì)象--> <bean id="myDubbo" class="com.ym.dubbo.HelloName" /> <!--定義一個(gè)dubbo的應(yīng)用程序名稱,將來會(huì)在dubbo的管理中心查看--> <dubbo:application name="DubboProvider" /> <!--配置dubbo協(xié)議,dubbo,hession,RMI--> <dubbo:protocol name="dubbo" port="20880" /> <!--將當(dāng)前應(yīng)用注冊(cè)到zookeeper注冊(cè)中心服務(wù)器上--> <dubbo:registry address="zookeeper://192.168.41.106:2181"></dubbo:registry> <!--將當(dāng)前服務(wù)的接口暴露出去,以提供消費(fèi)方來消費(fèi)--> <dubbo:service interface="com.ym.dubbo.IHelloInterface" ref="myDubbo" /> </beans>
-
在當(dāng)前子模塊中新建一個(gè)測(cè)試類將當(dāng)前的spring-dubbo.xml文件加載起來
import org.junit.Test; import org.springframework.context.support.ClassPathXmlApplicationContext; public class DubboTest { @Test public void testProvider(){ //加載spring-dubbo的配置文件 new ClassPathXmlApplicationContext("classpath:spring-dubbo.xml"); //打印提示信息 System.out.println("provider is ready"); //死循環(huán)保證 長(zhǎng)連接 while (true){} } }
4.在父項(xiàng)目中添加一個(gè)子模塊dubbo_consumer
-
在子模塊的pom文件中添加dubbo_interface的依賴(我們也可以添加dubbo_provider的依賴,從而達(dá)到調(diào)用dubbo_interface模塊中的接口方法,但是一般情況下dubbo_provider不一定是我們寫的,所以最好添加dubbo_interface的模塊依賴:就像是門戶網(wǎng)站上面的天氣預(yù)報(bào)功能,門戶網(wǎng)站本身不會(huì)"架一個(gè)鍋"來收集天氣信息,但是天氣預(yù)報(bào)服務(wù)商會(huì)提供一個(gè)接口,供門戶網(wǎng)站使用)
<dependencies> <dependency> <groupId>com.ym</groupId> <artifactId>dubbo_interface</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies>
-
在當(dāng)前子模塊中的resources下新增spring-dubbo.xml的配置文件(注冊(cè)中心的IP地址一定要找準(zhǔn))
<?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"> <!--配置當(dāng)前應(yīng)用的名稱,給監(jiān)控中心來使用--> <dubbo:application name="DubboConsumer" /> <!--設(shè)置注冊(cè)中心,從該注冊(cè)中心去消費(fèi)服務(wù)--> <dubbo:registry address="zookeeper://192.168.41.106:2181" /> <!--獲取提供方提供的接口數(shù)據(jù)--> <dubbo:reference interface="com.ym.dubbo.IHelloInterface" id="testDubbo" /> </beans>
-
在當(dāng)前子模塊新增測(cè)試類加載spring-dubbo的配置信息,并測(cè)試數(shù)據(jù)是否獲取
import com.ym.dubbo.IHelloInterface; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class DubboTest { IHelloInterface helloInterface; @Test public void testConsumer(){ // 加載spring-dubbo的配置文件 ApplicationContext ac=new ClassPathXmlApplicationContext("classpath:spring-dubbo.xml"); // 通過id拿到spring-dubbo中定義的testDubbo節(jié)點(diǎn)對(duì)應(yīng)的對(duì)象 helloInterface=ac.getBean("testDubbo",IHelloInterface.class); // 調(diào)用testdubbo對(duì)象中的方法,完成測(cè)試 String s = helloInterface.sayHello("zhangsan"); //打印結(jié)果 System.out.println(s); //死循環(huán)保證 長(zhǎng)連接 while (true){} } }
5.linux下搭建zookeeper的環(huán)境
通過Xftp將解壓后的zookeeper-3.4.14文件放到/opt/下
-
關(guān)閉防火墻
systemctl stop firewalld
-
切換到zookeeper的bin目錄下,然后運(yùn)行命令啟動(dòng)zookeeper
./zkServer.sh start
-
命令行中出現(xiàn)以下內(nèi)容,說明啟動(dòng)成功
啟動(dòng)zookeeper.png
6.運(yùn)行dubbo_cunsumer子模塊中的測(cè)試類驗(yàn)證
- 如果控制臺(tái)打印正確的內(nèi)容,說明已經(jīng)運(yùn)行過程已經(jīng)通了
7.配置dubbo的環(huán)境(tomcat+dubbo)
-
新建一個(gè)dubbo的文件夾,解壓一個(gè)純凈的tomcat,然后修改tomcat-users.xml的配置文件(添加一下代碼)
<role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <user username="yanm" password="yanm" roles="manager-gui, manager-script, manager-jmx, manager-status"/>
下載dubbo-admin-2.5.8.war并將dubbo-admin-2.5.8.war放到tomcat的webapps包下,啟動(dòng)tomcat(dubbo-admin-2.5.8.war有點(diǎn)問題:如果啟動(dòng)報(bào)錯(cuò),并且進(jìn)入不了頁面,就先啟動(dòng)tomcat,然后再把dubbo-admin-2.5.8.war放到webapps下,然后刷新頁面)
修改tomcat-webapps-(dubbo-admin-2.5.8)-(WEB-INF)-dubbo.properties文件,將里面的IP地址修改成linux中(zookeeper)的IP地址
-
啟動(dòng)tomcat服務(wù),用戶名和密碼都是root,可以在dubbo.properties修改,如果顯示如下頁面,則說明成功
dubbo-admin登陸1.png
- 登陸成功如下
-
查看信息
查看信息.png