dubbo初探

  1. 定義
  2. 快速開始

2.1 demo-provider部分
2.2 demo-consumer部分
2.3 啟動

1.定義

Dubbo是阿里巴巴公司開源的一個高性能優(yōu)秀的服務(wù)框架熄捍,使得應(yīng)用可通過高性能的 RPC 實現(xiàn)服務(wù)的輸出和輸入功能卤橄,可以和Spring框架無縫集成。

2.快速開始

Dubbo最常用的使用方式是運行在spring 框架中淆九。
創(chuàng)建一個簡單的demo我們需要創(chuàng)建兩個部分
demo-provider、demo-consumer

demo-provider部分

此部分的結(jié)構(gòu)


image.png

github地址
git clone https://github.com/apache/incubator-dubbo.git
運行時加上 -Djava.net.preferIPv4Stack=true 如果你使用的IDE 是 Intellij Idea

DemoService.java

package org.apache.dubbo.demo;
public interface DemoService {
    String sayHello(String name);
}

DemoServiceImpl.java

package org.apache.dubbo.demo.provider;
import org.apache.dubbo.demo.DemoService;

public class DemoServiceImpl implements DemoService {
    public String sayHello(String name) {
        return "Hello " + name;
    }
}

provider.xml

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
       http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">

    <!-- provider's application name, used for tracing dependency relationship -->
    <dubbo:application name="demo-provider"/>
    <!-- use multicast registry center to export service -->
    <dubbo:registry address="multicast://224.5.6.7:1234"/>
    <!-- use dubbo protocol to export service on port 20880 -->
    <dubbo:protocol name="dubbo" port="20880"/>
    <!-- service implementation, as same as regular local bean -->
    <bean id="demoService" class="org.apache.dubbo.demo.provider.DemoServiceImpl"/>
    <!-- declare the service interface to be exported -->
    <dubbo:service interface="org.apache.dubbo.demo.DemoService" ref="demoService"/>
</beans>

使用multicast不需要額外安裝且簡單 也可以使用zookeeper

log4j.properties 支持slf4j

###set log levels###
log4j.rootLogger=info, stdout
###output to the console###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d{dd/MM/yy hh:mm:ss:sss z}] %t %5p %c{2}: %m%n

Provider.java

package org.apache.dubbo.demo.provider;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Provider {

    public static void main(String[] args) throws Exception {
        System.setProperty("java.net.preferIPv4Stack", "true");
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"META-INF/spring/dubbo-demo-provider.xml"});
        context.start();
        System.out.println("Provider started.");
        System.in.read(); // press any key to exit
    }
}

demo-consumer部分

此部分結(jié)構(gòu)


image.png

github地址:
git clone https://github.com/apache/incubator-dubbo.git
運行前先啟動provider
如果IDE使用的是Intellij IDEA 請在運行時加上 -Djava.net.preferIPv4Stack=true

配置
配置文件 resource/META-INFO.spring/dubbo-demo-consumer.xml
修改dubbo:registery 為真正的registery center 地址

consumer.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
       http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">

    <!-- consumer's application name, used for tracing dependency relationship (not a matching criterion),
    don't set it same as provider -->
    <dubbo:application name="demo-consumer"/>
    <!-- use multicast registry center to discover service -->
    <dubbo:registry address="multicast://224.5.6.7:1234"/>
    <!-- generate proxy for the remote service, then demoService can be used in the same way as the
    local regular interface -->
    <dubbo:reference id="demoService" check="false" interface="org.apache.dubbo.demo.DemoService"/>
</beans>

Consumer.java

import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.apache.dubbo.demo.DemoService;
 
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();
        // Obtaining a remote service proxy
        DemoService demoService = (DemoService)context.getBean("demoService");
        // Executing remote methods
        String hello = demoService.sayHello("world");
        // Display the call result
        System.out.println(hello);
    }
}

配置log4j類似provider中的那樣

啟動

運行org.apache.dubbo.demo.provider.Provider
再運行org.apache.dubbo.demo.provider.Consumer能看到打印結(jié)果:
Hello world

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子斟览,更是在濱河造成了極大的恐慌毁腿,老刑警劉巖辑奈,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異已烤,居然都是意外死亡鸠窗,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門胯究,熙熙樓的掌柜王于貴愁眉苦臉地迎上來稍计,“玉大人,你說我怎么就攤上這事裕循〕枷” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵剥哑,是天一觀的道長硅则。 經(jīng)常有香客問我,道長株婴,這世上最難降的妖魔是什么怎虫? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮困介,結(jié)果婚禮上大审,老公的妹妹穿的比我還像新娘。我一直安慰自己座哩,他們只是感情好徒扶,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著根穷,像睡著了一般酷愧。 火紅的嫁衣襯著肌膚如雪驾诈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天溶浴,我揣著相機與錄音乍迄,去河邊找鬼。 笑死士败,一個胖子當著我的面吹牛闯两,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谅将,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼漾狼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了饥臂?” 一聲冷哼從身側(cè)響起逊躁,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎隅熙,沒想到半個月后稽煤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡囚戚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年酵熙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驰坊。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡匾二,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拳芙,到底是詐尸還是另有隱情察藐,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布舟扎,位于F島的核電站分飞,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏浆竭。R本人自食惡果不足惜浸须,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望邦泄。 院中可真熱鬧删窒,春花似錦、人聲如沸顺囊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽特碳。三九已至诚亚,卻和暖如春晕换,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背站宗。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工闸准, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人梢灭。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓夷家,卻偏偏與公主長得像,于是被迫代替她去往敵國和親敏释。 傳聞我的和親對象是個殘疾皇子库快,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344