日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

dubbo service注解用法_Dubbo---开源分布式服务框架(一)

發(fā)布時(shí)間:2025/4/5 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dubbo service注解用法_Dubbo---开源分布式服务框架(一) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

當(dāng)一個(gè)人先從自己的內(nèi)心開始奮斗,他就是個(gè)有價(jià)值的人

【Dubbo】

主要內(nèi)容

  • Dubbo簡(jiǎn)介
  • Dubbo架構(gòu)講解
  • Dubbo支持的協(xié)議
  • Dubbo支持的注冊(cè)中心
  • 第一個(gè)Dubbo的Provider
  • Admin管理界面搭建
  • 完成Dubbo的Consumer
  • 完整Dubbo項(xiàng)目演示
  • 一、 Dubbo簡(jiǎn)介

    1. 官方說(shuō)明

    Apache Dubbo 是一個(gè)高可用的,基于Java的開源RPC框架。

    Dubbo框架不僅僅是具備RPC訪問(wèn)功能,還包含服務(wù)治理功能。

    2. 發(fā)展歷史

    • Dubbo是最開始是阿里巴巴內(nèi)部使用的RPC框架。
    • 2011年對(duì)外提供。
    • 2012年停止更新。
    • 2017年開始繼續(xù)更新。
    • 2019年捐獻(xiàn)給Apache,由Apache維護(hù)2.7以上版本。

    二、 Dubbo架構(gòu)講解

    1. 架構(gòu)圖

    2. 架構(gòu)說(shuō)明

    2.1 虛線

    虛線表示異步,實(shí)線表示同步。異步不阻塞線程性能高,同步阻塞線程必須等待響應(yīng)結(jié)果才能繼續(xù)執(zhí)行,相對(duì)性能低。

    2.2 Provider

    提供者。編寫持久層、業(yè)務(wù)層和事務(wù)代碼。

    2.3 Container

    容器(Spring容器),Dubbo完全基于Spring實(shí)現(xiàn)的。

    2.4 Registry

    注冊(cè)中心。放置所有Provider對(duì)外提供的信息。包含Provider的IP,訪問(wèn)端口,訪問(wèn)遵守的協(xié)議,對(duì)外提供的接口,接口中有哪些方法等相關(guān)信息。

    2.5 Consumer

    消費(fèi)者(RPC調(diào)用者,SOA調(diào)用服務(wù)的項(xiàng)目)開發(fā)中也是一個(gè)項(xiàng)目,編寫service和controller(還可以包括頁(yè)面等)。調(diào)用遠(yuǎn)程服務(wù)實(shí)現(xiàn)(XXXXServiceImpl)中的方法。

    2.6 Monitor

    監(jiān)控中心。監(jiān)控Provider的壓力情況等。每隔2分鐘Consumer和Provider會(huì)把調(diào)用次數(shù)發(fā)送給Monitor,由Monitor進(jìn)行統(tǒng)計(jì)。

    3. 執(zhí)行流程

  • start:啟動(dòng)Spring容器時(shí)會(huì)把Provider啟動(dòng)。
  • register:把Provider相關(guān)信息注冊(cè)到Registry里
  • subscribe:Consumer從Registry中訂閱Provider的信息
  • notify:通知給Consumer
  • invoke:Consumer根據(jù)Registry通知的信息進(jìn)行調(diào)用Provider中方法。
  • count:Consumer和Provider把調(diào)用次數(shù)信息異步發(fā)送給Monitor進(jìn)行統(tǒng)計(jì)。
  • 三、 Dubbo支持的協(xié)議

    1. Dubbo協(xié)議(官方推薦協(xié)議)

    • 優(yōu)點(diǎn):

    采用NIO復(fù)用單一長(zhǎng)連接,并使用線程池并發(fā)處理請(qǐng)求,減少握手和加大并發(fā)效率,性能較好(推薦使用)

    • 缺點(diǎn):

    大文件上傳時(shí),可能出現(xiàn)問(wèn)題(不使用Dubbo實(shí)現(xiàn)文件傳輸)

    2. RMI(Remote Method Invocation)協(xié)議

    • 優(yōu)點(diǎn):

    JDK自帶的能力。

    • 缺點(diǎn):

    偶爾連接失敗.

    3. Hessian協(xié)議

    • 優(yōu)點(diǎn):

    可與原生Hessian互操作,基于HTTP協(xié)議

    • 缺點(diǎn):

    需hessian.jar支持,http短連接的開銷大

    四、 Dubbo支持的注冊(cè)中心

    1. Zookeeper(官方推薦)

    • 優(yōu)點(diǎn):

    支持分布式.很多周邊產(chǎn)品.

    • 缺點(diǎn):

    受限于Zookeeper軟件的穩(wěn)定性.Zookeeper專門分布式輔助軟件,穩(wěn)定較優(yōu)

    2. Multicast

    • 優(yōu)點(diǎn):

    去中心化,不需要單獨(dú)安裝軟件.

    • 缺點(diǎn):

    2.2.1 Provider、Consumer和Registry不能跨機(jī)房(路由)

    3. Redis

    • 優(yōu)點(diǎn):

    支持集群,性能高

    • 缺點(diǎn):

    要求服務(wù)器時(shí)間同步.否則可能出現(xiàn)集群失敗問(wèn)題.

    4. Simple

    • 優(yōu)點(diǎn):

    標(biāo)準(zhǔn)RPC服務(wù).沒(méi)有兼容問(wèn)題

    • 缺點(diǎn):

    不支持集群.

    五、 第一個(gè)Dubbo的Provider

    新建父項(xiàng)目Parent1。最終結(jié)構(gòu)如下:

    編寫pom.xml繼承SpringBoot父項(xiàng)目。

    <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.5.RELEASE</version> </parent>

    1. 新建api項(xiàng)目

    1.1 創(chuàng)建接口

    創(chuàng)建com.bjsxt.dubbo.service.DemoDubboService接口

    public interface DemoDubboService {String demo(); }

    2 新建provider項(xiàng)目

    2.1 編寫pom.xml

    注意:不需要依賴web,如果依賴spring-boot-start-web還需要考慮端口問(wèn)題。

    <dependencies><dependency><artifactId>api</artifactId><groupId>com.bjsxt</groupId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.3</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>4.2.0</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>4.2.0</version></dependency> </dependencies>

    2.2 編寫配置文件

    新建application.yml

    dubbo:application:name: dubbo-providerregistry:address: zookeeper://192.168.32.128:2181

    2.3 新建實(shí)現(xiàn)類

    新建com.bjsxt.dubbo.service.impl.DemoDubboServiceImpl

    注意:注解是apache的注解。

    import com.bjsxt.dubbo.service.DemoDubboService; import org.apache.dubbo.config.annotation.Service;@Service public class DemoDubboServiceImpl implements DemoDubboService {@Overridepublic String demo() {System.out.println("demo方法");return "123";} }

    2.4 新建啟動(dòng)類

    新建com.bjsxt.ProviderApplication。

    必須要有@EnableDubbo注解,否則Dubbo不生效。

    @SpringBootApplication @EnableDubbo public class ProviderApplication {public static void main(String[] args) {SpringApplication.run(ProviderApplication.class,args);} }

    六、admin管理界面搭建

    1. dubbo-admin-server-0.2.0.jarBOOT-INFclasses 中application.properties里面注冊(cè)中心的ip設(shè)置正確

    2. 使用java -jar dubbo-admin-server-0.2.0.jar運(yùn)行即可。訪問(wèn)http://localhost:8080可以進(jìn)入Dubbo Admin管理控制臺(tái)。

    注意:占用8080端口,不要沖突了。

    七、 完成Dubbo的Consumer

    創(chuàng)建consumer項(xiàng)目

    1. 編寫pom.xml

    <dependencies><dependency><artifactId>api</artifactId><groupId>com.bjsxt</groupId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.3</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>4.2.0</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>4.2.0</version></dependency> </dependencies>

    2. 新建配置文件

    新建application.yml

    dubbo:application:name: dubbo-consumerregistry:address: zookeeper://192.168.32.128:2181

    3. 新建service及實(shí)現(xiàn)類

    新建com.bjsxt.service.DemoService

    public interface DemoService {String consumerDemo(); }

    新建com.bjsxt.service.impl.DemoServiceImpl

    調(diào)用服務(wù)使用@Reference注解,不要導(dǎo)錯(cuò)包了,有兩個(gè)。

    import com.bjsxt.dubbo.service.DemoDubboService; import com.bjsxt.service.DemoService; import org.apache.dubbo.config.annotation.Reference; import org.springframework.stereotype.Service;@Service public class DemoServiceImpl implements DemoService {@Referenceprivate DemoDubboService demoDubboService;@Overridepublic String consumerDemo() {return demoDubboService.demo();} }

    4. 新建控制器

    新建控制器com.bjsxt.controller.DemoController

    @Controller public class DemoController {@Autowiredprivate DemoService demoService;@RequestMapping("/demo")@ResponseBodypublic String demo(){return demoService.consumerDemo();} }

    5. 新建啟動(dòng)器

    新建com.bjsxt.ConsumerApplication

    @SpringBootApplication @EnableDubbo public class ConsumerApplication {public static void main(String[] args) {SpringApplication.run(ConsumerApplication.class,args);} }

    需要更多Java學(xué)習(xí)資料的可以到評(píng)論區(qū)留言或者私信哦,視頻、源碼、項(xiàng)目,通通都給你

    總結(jié)

    以上是生活随笔為你收集整理的dubbo service注解用法_Dubbo---开源分布式服务框架(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。