關於dubbox的核心原理和細節會另開一篇文章來介紹,這篇文章主要是從配置和應用層面來介紹dubbox 2.8.4的使用。html
一、準備工做java
-下載zookeeper
官方地址:http://apache.fayea.com/zookeeper/zookeeper-3.4.6/
下載版本:zookeeper-3.4.6.tar.gzmysql
-下載JDK
下載地址:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html
下載版本:JDK1.7.X版本,32位或64位看操做系統
JDK的安裝就跳過了,直接百度一大堆,必定記得設置PATH,classpath,JAVA_HOME環境變量git
二、解壓和安裝zookeeper
zookeeper的目錄我是放置在/usr/zookeeper-3.4.6/這個位置,因此:
tar -zxvf ./zookeeper-3.4.6.tar.gz
mv ./zookeeper-3.4.6 /usr/zookeeper-3.4.6/
github
一樣的,設置全局環境變量:
export PATH=/usr/zookeeper-3.4.6/bin:$PATH
web
好的,安裝完成了,是否是簡單。接下來,咱們講解一下zookeeper的主配置文件。zookeeper的主配置文件所在的地址是:${您的zookeeper安裝位置}/conf/zoo.cfg
可是,解壓後的zookeeper並無這個配置文件,有一個名叫zoo_sample.cfg,因此,咱們複製一個zoo.cfg文件:
cp /usr/zookeeper-3.4.6/conf/zoo_sample.cfg /usr/zookeeper-3.4.6/conf/zoo.cfg
spring
最後,使用zkServer.sh start命令,啓動zookeeper:sql
[root@vm2 ~]# zkServer.sh start JMX enabled by default Using config: /usr/zookeeper-3.4.6/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
一、準備工做
下載dubbox的源代碼
下載地址:https://github.com/dangdangdotcom/dubbox數據庫
二、編譯源碼(此處默認你們會用maven了)
運行maven命令:mvn clean install -Dmaven.test.skip=true
將dubbox的源碼打包發佈到本地倉庫,目的是爲了獲取:dubbo-admin-2.8.4.war和dubbo-monitor.warapache
懶人下載:http://download.csdn.net/detail/u011282930/9477514
一、部署dubbo-admin管理端,將dubbo-admin-2.8.4.war放置到準備好的tomcat目錄
二、修改WEB-INF下dubbo.properties
主要是修改zookeeper的地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
三、運行tomcat
輸入地址:http://localhost:8080/dubbo-admin-2.8.4
默認登陸帳戶和密碼均爲:root
四、登陸後首頁
到此爲止,dubbox的後臺管理端就配置成功了
懶人下載:http://download.csdn.net/detail/u011282930/9477515
咱們對於dubbo的監控用的是改裝後的(頁面很是好看)
下載dubbox-monitor的源代碼
下載地址:http://git.oschina.net/handu/dubbo-monitor
Dubbo-Monitor配置介紹
一、建立數據庫 首先建立名稱爲monitor數據庫,編碼格式UTF-8。而後將項目sql文件夾下面的create.sql導入到數據庫,生成dubbo_invoke表表明成功導入。
二、編輯項目中application.properties,配置以下:
####Dubbo Settings dubbo.application.name=dubbo-monitor dubbo.application.owner=handu.com dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.protocol.port=6060 ####Database Settings db.url=jdbc:mysql://<database_host>:<database_port>/monitor?prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8 db.username=root db.password=root db.maxActive=500 ####System Manager manager.username=admin manager.password=admin</database_port></database_host>
三、打包運行項目 執行maven命令:mvn clean package target文件夾下生成的dubbo-monitor.war即爲項目部署文件,將其放置到對應服務器目錄下,啓動服務器便可。例如:tomcat的webapps文件夾下。
四、訪問項目 啓動web服務器後,訪問地址:http://IP:[port]/dubbo-moniotor,採用配置文件中manager.username和manager.password設置值進行登陸。
五、透過dubbox服務管理端,咱們會發現多了一個monitor的服務
具體依賴jar包以下圖所示
maven依賴庫
<dependency> <groupid>com.alibaba</groupid> dubbo</artifactid> <version>2.8.4</version> </dependency> <dependency> <groupid>com.alibaba</groupid> dubbo-rpc-rest</artifactid> <version>2.8.4</version> </dependency> <dependency> <groupid>com.alibaba</groupid> dubbo-rpc-webservice</artifactid> <version>2.8.4</version> </dependency> <dependency> <groupid>com.101tec</groupid> zkclient</artifactid> <version>0.2</version> </dependency> <dependency> <groupid>org.apache.zookeeper</groupid> zookeeper</artifactid> <version>3.3.6</version> <exclusions> <exclusion> <groupid>log4j</groupid> log4j</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>log4j</groupid> log4j</artifactid> <version>1.2.16</version> </dependency>
一、定義一個Service接口和相關實現類
定義一個接口,IUserService.java
package service; public interface IUserService { public void sayHello(); }
實現這個接口,UserService.java
package service; public class UserService implements IUserService { @Override public void sayHello() { System.err.println("HELLO WORLD!"); } }
二、配置這個接口的xml文件,dubbo-provider.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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-app" owner="whb"></dubbo:application> <!--zookeeper註冊中心 --> <dubbo:registry address="zookeeper://172.17.84.84:2181"></dubbo:registry> <!--使用multicast廣播註冊中心暴露服務地址 --> <!--<dubbo:registry address="multicast://10.57.41.19:1234" /> --> <dubbo:protocol name="dubbo" port="20880"></dubbo:protocol> <!-- 配置監控的服務地址和IP--> <dubbo:monitor address="127.0.0.1:7070"></dubbo:monitor> <!-- 發佈這個服務 --> <dubbo:service connections="100" interface="service.IUserService" protocol="dubbo" ref="userService" timeout="2000"></dubbo:service> <!-- 和本地bean同樣實現服務 --> <bean class="service.UserService" id="userService"></bean> </beans>
三、運行發佈咱們的接口,LuncherProvider.java
package demo; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class LuncherProvider { public static void main(String[] args) throws InterruptedException { LuncherProvider luncher = new LuncherProvider(); luncher.start(); Thread.sleep(1000 * 60 * 10); } void start() { String configLocation = "classpath*:/dubbo-provider.xml"; ApplicationContext context = new ClassPathXmlApplicationContext( configLocation); String[] names = context.getBeanDefinitionNames(); System.out.print("Beans:"); for (String string : names) System.out.print(string + ","); System.out.println(); } }
控制檯輸出以下內容,爲成功
經過dubbox管理端來查看咱們的服務,經過下圖,咱們能夠看到咱們的服務已經註冊到zookeeper了
如何調用咱們發佈的服務呢?
一、定義一個如出一轍的接口,IUserService.java
package service; public interface IUserService { public void sayHello(); }
二、配置這個接口調用信息,
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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="consumer-of-helloworld-app"></dubbo:application> <!--zookeeper註冊中心 --> <dubbo:registry address="172.17.84.84:2181" protocol="zookeeper"></dubbo:registry> <!--使用multicast廣播註冊中心暴露的服務地址 --> <!--<dubbo:registryaddress="multicast://10.57.41.19:1234" /> --> <!-- <dubbo:monitor address="127.0.0.1:7070" /> --> <!-- 生成遠程服務代理,能夠和本地bean同樣使用IUserService--> <dubbo:reference id="userService" interface="service.IUserService"></dubbo:reference> </beans>
三、測試調用服務的代碼,LuncherConsumer.java
package demo; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import service.IUserService; public class LuncherConsumer { public static void main(String[] args) throws InterruptedException{ LuncherConsumer luncher=new LuncherConsumer(); String configLocation="classpath*:/dubbo-consumer.xml"; ApplicationContext context =new ClassPathXmlApplicationContext(configLocation); IUserService us=(IUserService) context.getBean("userService"); String[] names=context.getBeanDefinitionNames(); us.sayHello(); } }
觀察服務端的控制檯,會輸出「HELLO WORLD」
至此,dubbox的配置和使用就成功了!