一、總覽
Dubbo
|ˈdʌbəʊ|是一個高效能的、由阿里巴巴開源的、基於Java的RPC框架。像其他許多RPC框架一樣,Dubbo
基於定義一個服務的思想,並指定一個通過可以傳入引數和返回型別被遠端呼叫的方法。在伺服器端,伺服器實現這個介面並執行一個dubbo
伺服器來處理客戶端呼叫。在客戶端提供一個與服務端相同方法的副本。
Dubbo
提供包含基於介面的遠端呼叫、容錯、負載均衡和自動服務註冊和發現的三大主要功能。Dubbo
框架廣泛應用於阿里巴巴內外,其他公司包括京東,噹噹,qunar,kaola等。
二、快速入門
本指南讓你從一個簡單的工作例子開始在Java中使用dubbo
。您可以在github上的dubbo
專案中找到目錄dubbo-demo
中的完整工作示例。
1、先決條件
- JDK:6或6以上
- Maven:3或3以上
2、Maven 依賴
您可能需要使用最新版本來構建您的dubbo應用程式。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.8</version>
</dependency>
複製程式碼
3、定義服務介面
因為服務提供者和服務消費者都依賴於相同的介面,因此我們強烈推薦您將介面的定義放在能被服務提供者模組、服務消費者模組共享的獨立模組中(用Maven構建的話可以放在子Maven專案中
)。
package com.alibaba.dubbo.demo;
public interface DemoService {
String sayHello(String name);
}
複製程式碼
4、服務提供者實現服務定義
package com.alibaba.dubbo.demo.provider;
import com.alibaba.dubbo.demo.DemoService;
public class DemoServiceImpl implements DemoService {
public String sayHello(String name) {
return "Hello " + name;
}
}
複製程式碼
5、配置服務提供者
下面的程式碼片段展示瞭如何使用Spring框架配置一個服務提供者。使用Spring框架配置是我們推薦的做法,當然,你也可以使用API的方式進行配置。
<?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="demo-provider"/>
<dubbo:registry address="multicast://224.5.6.7:1234"/>
<dubbo:protocol name="dubbo" port="20880"/>
<dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoService"/>
<bean id="demoService" class="com.alibaba.dubbo.demo.provider.DemoServiceImpl"/>
</beans>
複製程式碼
6、啟動服務提供者
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Provider {
public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
new String[] {"META-INF/spring/dubbo-demo-provider.xml"});
context.start();
System.in.read(); // press any key to exit
}
}
複製程式碼
7、配置服務消費者
同樣,下面的程式碼也繼承了Spring框架:
<?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="demo-consumer"/>
<dubbo:registry address="multicast://224.5.6.7:1234"/>
<dubbo:reference id="demoService" interface="com.alibaba.dubbo.demo.DemoService"/>
</beans>
複製程式碼
8、啟動服務消費者
import com.alibaba.dubbo.demo.DemoService;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Consumer {
public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
new String[]{"META-INF/spring/dubbo-demo-consumer.xml"});
context.start();
DemoService demoService = (DemoService) context.getBean("demoService"); // obtain proxy object for remote invocation
String hello = demoService.sayHello("world"); // execute remote invocation
System.out.println(hello); // show the result
}
}
複製程式碼
三、接下來讀什麼?
- 深入
Dubbo
使用者指南或下載PDF查詢更多細節,或chat on gitter
。 - 閱讀dubbo管理員指南或下載pdf
dubbo
應用管理主題。 - 有興趣知道
Dubbo
是如何設計的,或者想貢獻一下? 閱讀dubbo開發人員指南或下載pdf,並開始寫程式碼。
四、我們需要你的幫助
我們現在正在收集Dubbo
使用者資訊,以幫助我們更好地提高Dubbo
,請通過issue#1012: Wanted: who’s using dubbo提供你的幫助!
以下是小編的下載github上的dubbo
專案中的dubbo-demo
並匯入 Eclipse
中執行的bug,Bug總是那麼噁心,但能幫你少走點彎路。
- 官方的例項使用的是廣播的形式註冊我們的服務,我們也可以使用
zookeeper
進行服務的註冊。 - 我首先啟動
Provider
,再啟動Consumer
時發現報dubbo:com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method
錯誤,此時我們只需要檢查本地是否搭建了虛擬機器,如果有,把虛擬機器服務禁用掉。如果沒有安裝虛擬機器而有無線wifi等,也將其關閉,因為這會導致你的服務釋出ip和你的consumer發現服務的ip不一致。 - 啟動
Provider
- 啟動
Consumer
OK!官方入門就翻譯完成了!雖然翻譯的質量不是特別滴好,但我覺得翻譯的過程是非常享受且學的最多的。如有翻譯不對的地方,請您在評論區發表評論告訴小編,麼麼噠!小編在校大四學生、年後實習工作咯!小編微訊號:lifvalue
,加我請備註掘金
,大家一起交流學習!