關于dubbox的核心原理和細節會另開一篇文章來介紹,這篇文章主要是從配置和應用層面來介紹dubbox 2.8.4的使用。
dubbox的服務監控和日志采集:http://blog.csdn.net/u011282930/article/details/52786414
zookeeper的安裝
1、準備工作
-下載下傳zookeeper
官方位址:http://apache.fayea.com/zookeeper/zookeeper-3.4.6/
下載下傳版本:zookeeper-3.4.6.tar.gz
-下載下傳JDK
下載下傳位址:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html
下載下傳版本:JDK1.7.X版本,32位或64位看作業系統
JDK的安裝就跳過了,直接百度一大堆,一定記得設定PATH,classpath,JAVA_HOME環境變量
2、解壓和安裝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/
同樣的,設定全局環境變量:
export PATH=/usr/zookeeper-3.4.6/bin:$PATH
好的,安裝完成了,是不是簡單。接下來,我們講解一下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
最後,使用zkServer.sh start指令,啟動zookeeper:
[[email protected] ~]# zkServer.sh start
JMX enabled by default
Using config: /usr/zookeeper-/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
dubbox
1、準備工作
下載下傳dubbox的源代碼
下載下傳位址:https://github.com/dangdangdotcom/dubbox
2、編譯源碼(此處預設大家會用maven了)
運作maven指令:mvn clean install -Dmaven.test.skip=true
将dubbox的源碼打包釋出到本地倉庫,目的是為了擷取:dubbo-admin-2.8.4.war和dubbo-monitor.war
dubbox-admin管理端
懶人下載下傳:http://download.csdn.net/detail/u011282930/9477514
1、部署dubbo-admin管理端,将dubbo-admin-2.8.4.war放置到準備好的tomcat目錄
2、修改WEB-INF下dubbo.properties
主要是修改zookeeper的位址
dubbo.registry.address=zookeeper://127.0.0.1:2181
3、運作tomcat
輸入位址:http://localhost:8080/dubbo-admin-2.8.4
預設登入賬戶和密碼均為:root
4、登入後首頁

到此為止,dubbox的背景管理端就配置成功了
dubbox-monitor監控端
懶人下載下傳:http://download.csdn.net/detail/u011282930/9477515
我們對于dubbo的監控用的是改裝後的(頁面非常好看)
下載下傳dubbox-monitor的源代碼
下載下傳位址:http://git.oschina.net/handu/dubbo-monitor
Dubbo-Monitor配置介紹
1、建立資料庫 首先建立名稱為monitor資料庫,編碼格式UTF-8。然後将項目sql檔案夾下面的create.sql導入到資料庫,生成dubbo_invoke表代表成功導入。
下載下傳位址:http://download.csdn.net/detail/u011282930/9650381
2、編輯項目中application.properties,配置如下:
####Dubbo Settings
dubbo.application.name=dubbo-monitor
dubbo.application.owner=handu.com
dubbo.registry.address=zookeeper://:
dubbo.protocol.port=
####Database Settings
db.url=jdbc:mysql://<database_host>:<database_port>/monitor?prepStmtCacheSize=&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-
db.username=root
db.password=root
db.maxActive=
####System Manager
manager.username=admin
manager.password=admin
3、打包運作項目 執行maven指令:mvn clean package target檔案夾下生成的dubbo-monitor.war即為項目部署檔案,将其放置到對應伺服器目錄下,啟動伺服器即可。例如:tomcat的webapps檔案夾下。
4、通路項目 啟動web伺服器後,通路位址:http://IP:[port]/dubbo-moniotor,采用配置檔案中manager.username和manager.password設定值進行登入。
5、透過dubbox服務管理端,我們會發現多了一個monitor的服務
下文預設大家已經用maven引入相關依賴或者導入相關包了
具體依賴jar包如下圖所示
maven依賴庫
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.8.4</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo-rpc-rest</artifactId>
<version>2.8.4</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo-rpc-webservice</artifactId>
<version>2.8.4</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.2</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.3.6</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
服務提供者執行個體開發
1、定義一個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!");
}
}
2、配置這個接口的xml檔案,dubbo-provider.xml
<?xml version="1.1" 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 owner="whb" name="hello-world-app" />
<!--zookeeper注冊中心 -->
<dubbo:registry address="zookeeper://172.17.84.84:2181"/>
<!--使用multicast廣播注冊中心暴露服務位址 -->
<!--<dubbo:registry address="multicast://10.57.41.19:1234" /> -->
<dubbo:protocol name ="dubbo" port="20880" />
<!-- 配置監控的服務位址和IP-->
<dubbo:monitor address="127.0.0.1:7070" />
<!-- 釋出這個服務 -->
<dubbo:service protocol="dubbo" timeout="2000" connections="100" interface ="service.IUserService" ref="userService" />
<!-- 和本地bean一樣實作服務 -->
<bean id="userService"
class="service.UserService" />
</beans>
3、運作釋出我們的接口,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( * * );
}
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了
消費者執行個體開發
如何調用我們釋出的服務呢?
1、定義一個一模一樣的接口,IUserService.java
package service;
public interface IUserService {
public void sayHello();
}
2、配置這個接口調用資訊,
<?xml version="1.1" 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="consumer-of-helloworld-app" />
<!--zookeeper注冊中心 -->
<dubbo:registry protocol="zookeeper" address="172.17.84.84:2181" />
<!--使用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" />
</beans>
3、測試調用服務的代碼,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的配置和使用就成功了!