Dubbo官方入門Demo(翻譯自http://dubbo.io/主頁入門教程)

擁抱心中的夢想發表於2017-12-18

一、總覽

Dubbo|ˈdʌbəʊ|是一個高效能的、由阿里巴巴開源的、基於Java的RPC框架。像其他許多RPC框架一樣,Dubbo基於定義一個服務的思想,並指定一個通過可以傳入引數和返回型別被遠端呼叫的方法。在伺服器端,伺服器實現這個介面並執行一個dubbo伺服器來處理客戶端呼叫。在客戶端提供一個與服務端相同方法的副本。

Dubbo官方入門Demo(翻譯自http://dubbo.io/主頁入門教程)
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使用者資訊,以幫助我們更好地提高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

Dubbo官方入門Demo(翻譯自http://dubbo.io/主頁入門教程)

  • 啟動Consumer

Dubbo官方入門Demo(翻譯自http://dubbo.io/主頁入門教程)


OK!官方入門就翻譯完成了!雖然翻譯的質量不是特別滴好,但我覺得翻譯的過程是非常享受且學的最多的。如有翻譯不對的地方,請您在評論區發表評論告訴小編,麼麼噠!小編在校大四學生、年後實習工作咯!小編微訊號:lifvalue,加我請備註掘金,大家一起交流學習!

相關文章