dubbo service注解用法_Dubbo---开源分布式服务框架(一)
當一個人先從自己的內心開始奮斗,他就是個有價值的人
【Dubbo】
主要內容
一、 Dubbo簡介
1. 官方說明
Apache Dubbo 是一個高可用的,基于Java的開源RPC框架。
Dubbo框架不僅僅是具備RPC訪問功能,還包含服務治理功能。
2. 發展歷史
- Dubbo是最開始是阿里巴巴內部使用的RPC框架。
- 2011年對外提供。
- 2012年停止更新。
- 2017年開始繼續更新。
- 2019年捐獻給Apache,由Apache維護2.7以上版本。
二、 Dubbo架構講解
1. 架構圖
2. 架構說明
2.1 虛線
虛線表示異步,實線表示同步。異步不阻塞線程性能高,同步阻塞線程必須等待響應結果才能繼續執行,相對性能低。
2.2 Provider
提供者。編寫持久層、業務層和事務代碼。
2.3 Container
容器(Spring容器),Dubbo完全基于Spring實現的。
2.4 Registry
注冊中心。放置所有Provider對外提供的信息。包含Provider的IP,訪問端口,訪問遵守的協議,對外提供的接口,接口中有哪些方法等相關信息。
2.5 Consumer
消費者(RPC調用者,SOA調用服務的項目)開發中也是一個項目,編寫service和controller(還可以包括頁面等)。調用遠程服務實現(XXXXServiceImpl)中的方法。
2.6 Monitor
監控中心。監控Provider的壓力情況等。每隔2分鐘Consumer和Provider會把調用次數發送給Monitor,由Monitor進行統計。
3. 執行流程
三、 Dubbo支持的協議
1. Dubbo協議(官方推薦協議)
- 優點:
采用NIO復用單一長連接,并使用線程池并發處理請求,減少握手和加大并發效率,性能較好(推薦使用)
- 缺點:
大文件上傳時,可能出現問題(不使用Dubbo實現文件傳輸)
2. RMI(Remote Method Invocation)協議
- 優點:
JDK自帶的能力。
- 缺點:
偶爾連接失敗.
3. Hessian協議
- 優點:
可與原生Hessian互操作,基于HTTP協議
- 缺點:
需hessian.jar支持,http短連接的開銷大
四、 Dubbo支持的注冊中心
1. Zookeeper(官方推薦)
- 優點:
支持分布式.很多周邊產品.
- 缺點:
受限于Zookeeper軟件的穩定性.Zookeeper專門分布式輔助軟件,穩定較優
2. Multicast
- 優點:
去中心化,不需要單獨安裝軟件.
- 缺點:
2.2.1 Provider、Consumer和Registry不能跨機房(路由)
3. Redis
- 優點:
支持集群,性能高
- 缺點:
要求服務器時間同步.否則可能出現集群失敗問題.
4. Simple
- 優點:
標準RPC服務.沒有兼容問題
- 缺點:
不支持集群.
五、 第一個Dubbo的Provider
新建父項目Parent1。最終結構如下:
編寫pom.xml繼承SpringBoot父項目。
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.5.RELEASE</version> </parent>1. 新建api項目
1.1 創建接口
創建com.bjsxt.dubbo.service.DemoDubboService接口
public interface DemoDubboService {String demo(); }2 新建provider項目
2.1 編寫pom.xml
注意:不需要依賴web,如果依賴spring-boot-start-web還需要考慮端口問題。
<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 新建實現類
新建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 新建啟動類
新建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里面注冊中心的ip設置正確
2. 使用java -jar dubbo-admin-server-0.2.0.jar運行即可。訪問http://localhost:8080可以進入Dubbo Admin管理控制臺。
注意:占用8080端口,不要沖突了。
七、 完成Dubbo的Consumer
創建consumer項目
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及實現類
新建com.bjsxt.service.DemoService
public interface DemoService {String consumerDemo(); }新建com.bjsxt.service.impl.DemoServiceImpl
調用服務使用@Reference注解,不要導錯包了,有兩個。
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. 新建啟動器
新建com.bjsxt.ConsumerApplication
@SpringBootApplication @EnableDubbo public class ConsumerApplication {public static void main(String[] args) {SpringApplication.run(ConsumerApplication.class,args);} }需要更多Java學習資料的可以到評論區留言或者私信哦,視頻、源碼、項目,通通都給你
總結
以上是生活随笔為你收集整理的dubbo service注解用法_Dubbo---开源分布式服务框架(一)的全部內容,希望文章能夠幫你解決所遇到的問題。