dubbo service注解用法_Dubbo---开源分布式服务框架(一)
當(dāng)一個(gè)人先從自己的內(nèi)心開始奮斗,他就是個(gè)有價(jià)值的人
【Dubbo】
主要內(nèi)容
一、 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í)行流程
三、 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:21812.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:21813. 新建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)題。
- 上一篇: 饸饹怎么读?
- 下一篇: 一键清除bios密码_电脑忘记开机密码?