分佈式服務治理框架dubbo

 

Dubbo最主要功能有兩個html

 1 RPC調用  java

 2 SOA服務治理方案git

Dubbo的架構github

Dubbo常見的註冊中心有2中,zookeeper以及redisredis

這篇文章講解的是採用的zookeeper,要求讀者對zookeeper有必定的認識。json

http://www.cnblogs.com/javabigdata/p/7491116.html zookeeper相關知識看這裏 架構

服務的提供者Provider將服務註冊到Registryapp

消費者Consumer須要從Registry中發現、監聽到服務的變更dom

Provider須要運行在Container容器中maven

Monitor(監控中心) 主要是用來對服務的調用次數統計等。

 

如下主要是一個快速入門,怎麼使用dubbo

咱們須要建立多個項目

Provider (服務提供者) 包括實現類 一個項目,接口定義爲一個項目

Consumer (服務消費者) 一個項目

 

這裏我定義一個公用的pom項目來對maven依賴作一個統一的管理

 

總體項目採用maven構建,使用dubbox (2.8.4) ,並提供源碼下載

 ======================================================================

test-parent (pom項目)主要定義jar版本信息

 

======================================================================

服務提供者接口定義(所謂的發佈服務,就是將接口對外暴露,生產者和消費者都是須要引用接口的,因此在這裏接口將在test-facade中提供)

 

這個項目主要是定義接口

主要代碼以下

@Path("/userTestService")
@Consumes({ MediaType.APPLICATION_JSON, MediaType.TEXT_XML })
@Produces({ ContentType.APPLICATION_JSON_UTF_8, ContentType.TEXT_XML_UTF_8 })
public interface IUserTestService {
	@GET
	User getUserTest();

	@GET
	@Path("/testGet")
	public void testget();
}

  

註解代碼說明:

  @Path:表明服務的訪問路徑,如「user」,則訪問路徑爲domain:port/context/user,在方法上註解是相對類上面的。依次展開路徑便可。

  @POST:服務請求的方式,支持POST、GET等。

  @Consumes:表示將接收到的數據自動轉換爲何格式的,支持json和xml。

  @Produces:表示將結果返回時候輸出爲何格式的,支持json和xml。

======================================================================

服務接口實現(通常來講,服務提供者咱們使用註解開發)

 

部分代碼以下

@Service
@com.alibaba.dubbo.config.annotation.Service(interfaceClass = com.cc.facade.IUserTestService.class, protocol = { "rest",
		"dubbo" })
public class UserServImpl implements IUserTestService {
	@Override
	public User getUserTest() {
		User user = new User();
		user.setId(1);
		user.setName("cc");
		return user;
	}

	@Override
	public void testGet() {
		System.out.println("test=get");
	}
}

  

解釋:

@com.alibaba.dubbo.config.annotation.Service 表示將該服務註冊到dubbo

 

dubbo-provider.xml 文件內容以下 ,

 

 

<!-- 引入配置文件 -->
	<context:property-placeholder location="classpath:config.properties" />

	<dubbo:application name="${dubbox.application}"
		owner="programmer" organization="dubbox" />

	<!-- zookeeper註冊中心 -->
	<dubbo:registry address="${dubbox.registry.address}"
		timeout="100000" />
    <!- dubbo  service自動掃描 -->
	<dubbo:annotation package="com" />

	<!-- kryo實現序列化 -->
	<dubbo:protocol name="dubbo" host="192.168.1.7" port="20883"
		serialization="kryo" optimizer="com.cc.serial.SerializationOptimizerImpl" />

	<!-- 發佈rest服務 -->
	<dubbo:protocol name="rest" host="192.168.1.7" server="${dubbox.rest.server}"
		port="${dubbox.rest.port}" contextpath="${dubbox.rest.contextpath}"
		threads="${dubbox.rest.threads}" accepts="${dubbox.rest.accepts}" />
</beans>

 

======================================================================

服務消費者(通常使用xml配置

dubbo-provider.xml配置文件以下

<!-- 引入配置文件 -->
	<context:property-placeholder location="classpath:config.properties" />

	<!-- 消費服務名稱 -->
	<dubbo:application name="${dubbox.application}"
		owner="programmer" organization="dubbox" />

	<!-- zookeeper註冊中心 zookeeper://192.168.1.111:2181 -->
	<dubbo:registry address="${dubbox.registry.address}"
		timeout="30000" />

	<!-- 掃描dubbox註解位置 -->
	<dubbo:annotation package="com.cc" />

	<!-- kryo實現序列化 -->
	<dubbo:protocol name="dubbo" serialization="kryo"
		optimizer="com.cc.serial.SerializationOptimizerImpl" />

	<!-- 生成遠程服務接口配置 -->
	<dubbo:reference interface="com.cc.facade.IUserTestService"
		id="testFacade" />


</beans>

  

最後,咱們先運行

test-service/src/test/java/ProviderTest.java   main方法,註冊服務到zookeeper

 

接着運行

test-consumer/src/test/java/ConsumerTest.java main方法

能夠看到控制檯打印

源碼下載:https://pan.baidu.com/s/1KdUDjJZdmftsdXW4iQoGZA

注意:

1導入源碼的時候注意修改zookeeper地址

 

2 dubbox並無發佈到maven中央倉庫的包,目前代碼在github上,須要本身down下來編譯,基於maven開發的。

 

   項目GitHub地址:https://github.com/dangdangdotcom/dubbox

 

 

好了,快速入門到這裏就結束了,更多細節請看 dubbo官方用戶手冊。

http://dubbo.io/books/dubbo-user-book/ 

相關文章
相關標籤/搜索