javascript
dubbo web工程示例_带有Dubbo的Spring Cloud Alibaba
在優銳課的學習分享中,我們可以看到關于如何在阿里巴巴的Spring Cloud實現中使用這個流行的RPC框架。
1、Spring Cloud Alibaba
Spring Cloud Alibaba是Alibaba Cloud的Spring Cloud版本。 它由幾個阿里巴巴的開源項目Nacos,Sentinel和RocketMQ以及幾個阿里云原生商業產品組成,以增強用戶在阿里云上的體驗。 Spring Cloud Alibaba的新版本還將提供Dubbo作為RPC選擇。
Dubbo是一個經過嚴格實踐的RPC框架。 在另一篇文章中,我演示了如何將其與注釋一起使用。 該示例使用的是Spring Boot。 Dubbo與Spring Boot緊密集成。 將Dubbo放在Spring Cloud Alibaba上似乎很自然。
在本文中,我們將使用一個簡單的echo示例來說明在Spring Cloud Alibaba上使用Dubbo的步驟。
定義Dubbo接口
首先定義一個接口:
public該接口將向遠程客戶端公開。 這里的提示是將此接口打包到第二或第三方工件(jar)中,以便該jar可用于spring-cloud-dubbo-sample-api。
2、實施Dubbo服務
在Maven中創建一個項目
讓我們用artifactIdId spring-cloud-dubbo-server-sample創建一個Maven項目。 然后,將依賴項添加到pom.xml中。。
<dependencies><!-- Sample API --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dubbo-sample-api</artifactId><version>${project.version}</version></dependency><!-- Spring Boot dependencies --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-actuator</artifactId></dependency><!-- Dubbo Spring Cloud Starter --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId></dependency><!-- Spring Cloud Nacos Service Discovery --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency> </dependencies>在上面的pom.xml中:
· spring-cloud-dubbo-sample-api:這是工件ID
· spring-boot-actuator:這是Spring Boot生產就緒的工件
· spring-cloud-starter-dubbo:這是Dubbo Spring Cloud Starter工件
· spring-cloud-starter-alibaba-nacos-discovery:這是Nacos Spring Cloud服務注冊表工件
在繼續之前,我們需要在定義中添加一個版本:
<dependencyManagement><dependencies><!-- Spring Cloud Alibaba dependencies --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>0.9.0.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>3、服務代碼實施
這是實現的Java代碼:
@org.apache.dubbo.config.annotation.Service class EchoServiceImpl implements EchoService {@Overridepublic String echo(String message) {return "[echo] Hello, " + message;} }@ org.apache.dubbo.config.annotation.Service注釋將其聲明為Dubbo服務。
4、配置Dubbo服務
建議的公開服務的方法是使用@DubboComponentScanannotation。
該配置涉及兩個部分:Dubbo和Spring Cloud。
dubbo:scan:base-packages: org.springframework.cloud.alibaba.dubbo.bootstrapprotocol:name: dubbo# -1 means self-definedport: -1registry:address: spring-cloud://localhost spring:application:name: spring-cloud-alibaba-dubbo-servermain:allow-bean-definition-overriding: truecloud:nacos:# Nacosdiscovery:server-addr: 127.0.0.1:88485、Spring Boot應用程序類
這與其他Spring Boot應用程序類相同:
@EnableDiscoveryClient @EnableAutoConfiguration public class DubboSpringCloudServerBootstrap {public static void main(String[] args) {SpringApplication.run(DubboSpringCloudServerBootstrap.class);} }這里唯一值得一提的是,我們應該在此之前啟動Nacos服務,以便Nacos可以發現該服務。
6、實施Dubbo客戶
創建spring-cloud-dubbo-client-sample Maven項目
與服務端配置類似,我們需要指定依賴項:
<dependencyManagement><dependencies><!-- Spring Cloud Alibaba dependencies --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>0.9.0.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies> </dependencyManagement> <dependencies><!-- Sample API --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dubbo-sample-api</artifactId><version>${project.version}</version></dependency><!-- Spring Boot dependencies --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-actuator</artifactId></dependency><!-- Dubbo Spring Cloud Starter --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId></dependency><!-- Spring Cloud Nacos Service Discovery --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency> </dependencies>與服務端的主要區別在于客戶端將是一個使用spring-boot-starter-web的Web Servlet應用程序。
7、配置客戶端
與服務端類似,配置分為兩個部分:Dubbo和Spring。
dubbo:registry:address: spring-cloud://localhostcloud:subscribed-services: spring-cloud-alibaba-dubbo-server spring:application:# Dubboname: spring-cloud-alibaba-dubbo-clientmain:# Spring Boot 2.1allow-bean-definition-overriding: truecloud:nacos:# Nacosdiscovery:server-addr: 127.0.0.1:8848在這里,我們通過將dubbo.cloud.subscribed-services綁定到spring-cloud-dubbo-server-sample來指定要使用的服務。
· dubbo.cloud.subscribed-services:要訂閱多個服務,請使用“,”作為分隔符。
由于它是一個Web應用程序,因此默認端口為8080。 可以通過修改server.port屬性來更改。
8、Spring Boot應用程序類和實現Java代碼
分為兩個步驟:
@EnableDiscoveryClient @EnableAutoConfiguration @RestController public class DubboSpringCloudClientBootstrap {@Referenceprivate EchoService echoService;@GetMapping("/echo")public String echo(String message) {return echoService.echo(message);}public static void main(String[] args) {SpringApplication.run(DubboSpringCloudClientBootstrap.class);} }由于這是一個Web客戶端,因此我們可以使用curl進行嘗試。 如果我們跑
curl http://127.0.0.1:8080/echo?message=yourmessage或者我們可以運行Java客戶端來獲得相同的結果。
We should see the result [echo] Hello, yourmessage9、結論
Spring Cloud阿里巴巴現在有兩個發行版,其中包括Dubbo。 它們是與Spring Cloud Finchley兼容的0.2.2版本和與Spring Cloud Greenwich兼容的0.9.0版本。 無論你是嘗試適應Spring Cloud阿里巴巴的Dubbo用戶,還是相反,經驗都應該是無縫的。
> 喜歡這篇文章的可以點個贊,歡迎大家留言評論,記得關注我,每天持續更新技術干貨、職場趣事、海量面試資料等等
> 不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代
還有就是這我總結出了一些架構視頻資料和互聯網公司java程序員面試涉及到的絕大部分面試題和答案做成了文檔和架構視頻資料還有完整高清的java進階架構學習思維導圖分享給大家(包括Dubbo、Redis、Netty、redis、mysql、zookeeper、Spring cloud、分布式、高并發等架構技術資料),也節省大家在網上搜索資料的時間來學習。
總結
以上是生活随笔為你收集整理的dubbo web工程示例_带有Dubbo的Spring Cloud Alibaba的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 选举新的业委会时,投票表决用什么软件方便
- 下一篇: 与孩子一起学编程python_与的解释|