Dubbo在項(xiàng)目中的應(yīng)用(一)

Dubbo作為分布式服務(wù)治理框架在企業(yè)級(jí)應(yīng)用開發(fā)中運(yùn)用的特別廣泛独令,它打破了傳統(tǒng)垂直項(xiàng)目架構(gòu)的開發(fā)模式,將各個(gè)模塊更細(xì)粒度的切分部署,在解耦的同時(shí)也提高了代碼的重用性丧肴。

2018-01-09_111925.png

部分代碼,

service-product工程

TestTbServiceImpl.java

@Service("testTbService")
@Transactional
public class TestTbServiceImpl implements TestTbService {   
    @Autowired
    private TestTbDao testTbDao;
    
    public void insertTestTb(TestTb testTb){
        testTbDao.insertTestTb(testTb);
    }
}

dubbo-provider.xml

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:task="http://www.springframework.org/schema/task"
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd 
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-4.0.xsd 
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop-4.0.xsd 
        http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
        http://www.springframework.org/schema/task
        http://www.springframework.org/schema/task/spring-task-4.0.xsd
        http://code.alibabatech.com/schema/dubbo        
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
        
    <!-- Dubbo提供方 -->
    <!-- 1:名稱  計(jì)算機(jī) 區(qū)別 唯一 -->
    <dubbo:application name="babasport-service-product"/>
    <!-- 2:設(shè)置注冊(cè)中心  地址  zookeeper在哪里  redis ...(集群的zk執(zhí)行以“胧后,”相隔芋浮,寫入ip即可) -->
    <dubbo:registry address="192.168.90.201:2181" protocol="zookeeper"/>
    <!-- 3:dubbo://192.168.39.80:20880  默認(rèn)  設(shè)置提供服務(wù)的端口號(hào) -->
    <dubbo:protocol port="20881" name="dubbo"/>
    <!-- 4: 暴露實(shí)現(xiàn)類-->
    <dubbo:service interface="cn.babasport.core.service.TestTbService" ref="testTbService"/>
        
    <!-- 5:服務(wù)端的全局配置 -->
    <dubbo:provider></dubbo:provider>   
</beans>

區(qū)別zk啟動(dòng),并發(fā)布服務(wù)


2018-01-09_113627.png

看日志很明顯壳快,服務(wù)接口以及在zk中注冊(cè)成功纸巷,我們可以去dubbo的控制臺(tái)確認(rèn)

2018-01-09_113808.png
console工程調(diào)用

controller.java

@Controller
public class CenterController {

    @Autowired
    private TestTbService testTbService;//注意這里注入的是接口,interface工程的
    
    //入口
    /**
     * ModelAndView  : 跳轉(zhuǎn)視圖+數(shù)據(jù)     不用
     * void  : 異步時(shí) ajax    
     * String  : 跳轉(zhuǎn)視圖      +  Model
     */
    @RequestMapping(value = "/test/index.do")
    public String index(Model model){
        TestTb testTb = new TestTb();
        testTb.setName("zhangsan");
        testTbService.insertTestTb(testTb);
        
        System.out.println("-----------");
        return "index";
    }   
}

dubbo-consumer.xml調(diào)用配置

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:task="http://www.springframework.org/schema/task"
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd 
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-4.0.xsd 
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop-4.0.xsd 
        http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
        http://www.springframework.org/schema/task
        http://www.springframework.org/schema/task/spring-task-4.0.xsd
        http://code.alibabatech.com/schema/dubbo        
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
        
    <!-- Dubbo消費(fèi)方 -->
    <!-- 1:名稱  計(jì)算機(jī) 區(qū)別 唯一 -->
    <dubbo:application name="babasport-console"/>
    <!-- 2:設(shè)置注冊(cè)中心  地址  zookeeper在哪里  redis ...(集群的zk執(zhí)行以“眶痰,”相隔瘤旨,寫入ip即可) -->
    <dubbo:registry address="192.168.90.201:2181" protocol="zookeeper"/>
    <!-- 3: 調(diào)用此接口對(duì)應(yīng)的實(shí)現(xiàn)類-->
    <dubbo:reference interface="cn.babasport.core.service.TestTbService" id="testTbService"/>
    
    <!-- dubbo全局設(shè)置超時(shí)時(shí)間 -->
    <dubbo:consumer timeout="600000" check="false"></dubbo:consumer>
</beans>

當(dāng)然 在springMVC的配置中也少不了對(duì)dubbo消費(fèi)配置的讀取
springMVC.xml配置

//引入即可
<import resource="dubbo-consumer.xml"/> 

以上要注意的是在dubbo服務(wù)暴露接口的配置中ref屬性的值要與service實(shí)現(xiàn)類在注入service中的值相同@Service("testTbService"),當(dāng)然凛驮,這里用的是spring中的service注解裆站,而非dubbo中的service注解

<dubbo:service interface="cn.babasport.core.service.TestTbService" ref="testTbService"/>
dubbo優(yōu)化

我們知道,dubbo需要注冊(cè)中心,在開發(fā)過程中宏胯,我們完全可以使用dubbo直連的方式避開注冊(cè)中心羽嫡,這樣就不用去啟用ZK了,另外去check也可以提高dubbo的效率

優(yōu)化1肩袍,直連
//即將服務(wù)提高和服務(wù)消費(fèi)方的注冊(cè)中心設(shè)為“N/A”即可
<dubbo:registry address="N/A"/>
優(yōu)化2杭棵,停止檢查
<!-- dubbo全局設(shè)置超時(shí)時(shí)間 -->
<dubbo:consumer timeout="600000" check="false"></dubbo:consumer>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市氛赐,隨后出現(xiàn)的幾起案子魂爪,更是在濱河造成了極大的恐慌,老刑警劉巖艰管,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滓侍,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡牲芋,警方通過查閱死者的電腦和手機(jī)撩笆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缸浦,“玉大人夕冲,你說我怎么就攤上這事×阎穑” “怎么了歹鱼?”我有些...
    開封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)卜高。 經(jīng)常有香客問我弥姻,道長(zhǎng),這世上最難降的妖魔是什么篙悯? 我笑而不...
    開封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任蚁阳,我火速辦了婚禮,結(jié)果婚禮上鸽照,老公的妹妹穿的比我還像新娘。我一直安慰自己颠悬,他們只是感情好矮燎,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赔癌,像睡著了一般诞外。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上灾票,一...
    開封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天峡谊,我揣著相機(jī)與錄音,去河邊找鬼。 笑死既们,一個(gè)胖子當(dāng)著我的面吹牛濒析,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播啥纸,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼号杏,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了斯棒?” 一聲冷哼從身側(cè)響起盾致,我...
    開封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎荣暮,沒想到半個(gè)月后庭惜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡穗酥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年护赊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片迷扇。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡百揭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蜓席,到底是詐尸還是另有隱情器一,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布厨内,位于F島的核電站祈秕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏雏胃。R本人自食惡果不足惜请毛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瞭亮。 院中可真熱鬧方仿,春花似錦、人聲如沸统翩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)厂汗。三九已至委粉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間娶桦,已是汗流浹背贾节。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工汁汗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人栗涂。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓知牌,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親戴差。 傳聞我的和親對(duì)象是個(gè)殘疾皇子送爸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容