首頁>技術>

Spring Cloud Alibaba整合Apache-Dubbo微服務一、Dubbo的起源

大家使用Dubbo應該不陌生,在2012年就開源的一款分散式RPC框架,支援Redis、Zookeeper、Hessian、Memcache、Dubbo等微服務註冊中心。橫掃各大網際網路公司的分散式架構,佔據頭把交椅。

1.1中間插曲

就在大家紛紛轉向Dubbo分散式架構的事後,突然Dubbo陷入了停滯,幾乎4年沒有更新。而此時Spring Cloud橫空出世,佔據了微服務的一席之地。

第一期Dubbo與Spring Cloud的對比:

1.2 Dubbo Spring Cloud破繭而出

就在大家幾乎遺忘Dubbo的時候,阿里恢復了對Dubbo的更新,同時開源了Nacos註冊中心框架。

並且基於舊的Dubbo,推出了Dubbo Spring Cloud的生態圈,擴充套件了Spring Cloud的業務生態,也為Dubbo融入了SC系列。

新版的Dubbo Spring Cloud系列對比:

二、Dubbo Spring Cloud新特性功能

[1]實現面向介面的高效能RPC呼叫;

[2]內建多種負載均衡策略,智慧感知下游節點健康狀況,實現智慧負載均衡系列;

[3]擴充套件支援多種註冊中心服務,比如Nacos、Zookeeper、Apollo;

[4]實現快速可擴充套件;

[5]透過配置不同的路由規則,輕鬆實現灰度釋出;

[6]提供豐富服務治理、運維工具:隨時查詢服務元資料、服務健康狀態及呼叫統計,實時下發路由策略、調整配置引數。

三、例項應用3.1構建服務介面

public interface HelloService {

String hello(String name);

}

3.2提供對Dubbo和Nacos生態環境的依賴

引入API工程:

<dependency>

<groupId>top.onething</groupId>

<artifactId>product-api</artifactId>

<version>1.0.1</version>

</dependency>

引入Nacos座標:

<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>

<version>2.2.1.RELEASE</version>

</dependency>

構建Spring Boot:

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

<version>2.2.5.RELEASE</version>

</dependency>

構建Nacos服務註冊中心:

<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>

<version>2.2.1.RELEASE</version>

</dependency>

構建Spring Starter Dubbo引入Dubbo支援服務

<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-starter-dubbo</artifactId>

<version>2.2.1.RELEASE</version>

</dependency>

3.3實現Spring Cloud Alibaba Dubbo 介面

@Service

public class HelloServiceImpl implements HelloService {

@Override

public String hello(String name) {

return "huahuo " + name;

}

}

注意:@Service註解並不依賴於Spring,而是來自於org.apache.dubbo.config.annotation.Service,Dubbo協議自帶的

3.4實現Dubbo與Spring Cloud Alibaba Nacos的配置

dubbo.protocol: 用來配置Dubbo 服務暴露的協議配置,其中子屬性 name 為協議名稱,port 為特定協議埠。

dubbo.registry: Dubbo 服務註冊中心與配置中心配置,其中子屬性 address 的值 “spring-cloud://localhost”,說明掛載到 Spring Cloud 註冊中心

spring:

application:

name: dubbo-consumer

cloud:

nacos:

discovery:

server-addr: 192.168.3.2:8848 # nacos對應微服務註冊微服務中心的地址

cluster-name: dubbo-cluster #叢集負載名稱

namespace: dd17-amp5-51cg-8a95-ff4aoooc273a #名稱空間

config:

server-addr: 192.168.3.2:8848 # nacos對應微服務配置中心地址

namespace: dd17-amp5-51cg-8a95-ff4aoooc273a #名稱空間

file-extension: yaml #字尾請求

refresh-enabled: true #自動重新整理

dubbo:

protocol: #Dubbo 服務暴露的協議配置,其中子屬性 name 為協議名稱,port 為協議埠( -1 表示自增埠,從 20880 開始)

name: dubbo

port: -1 #dubbo服務協議預設開啟埠為20880,rmi協議服務預設開啟埠為1099,http和hessian協議突破預設埠為80;如果沒有配置port,則自動採用預設開啟埠,如果配置為-1,則會分配一個沒有被佔用的埠。分配的埠在協議預設埠的基礎上增長,確保埠段可使用

registry:

#dubbo服務註冊埠,註冊中心伺服器地址,如果地址沒有埠預設為9090,同一叢集內的多個地址用逗號分隔,如:ip:port,ip:port

#其中字首spring-cloud說明:掛載到 Spring Cloud註冊中心

address: spring-cloud://192.168.3.2:8848

cloud:

subscribed-services: dubbo-provider

consumer:

check: false

四、構建服務消費方

引入第一步中構建的API包以及Spring Cloud Alibaba對Nacos和Dubbo的依賴

<dependency>

<groupId>top.onething</groupId>

<artifactId>product-api</artifactId>

<version>1.0.1</version>

</dependency>

<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>

<version>2.2.1.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

<version>2.2.5.RELEASE</version>

</dependency>

<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>

<version>2.2.1.RELEASE</version>

</dependency>

<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-starter-dubbo</artifactId>

<version>2.2.1.RELEASE</version>

</dependency>

4.1引入消費方服務配置

spring:

application:

name: dubbo-consumer

cloud:

nacos:

discovery:

server-addr: 192.168.3.2:8848 # nacos對應微服務註冊微服務中心的地址

cluster-name: dubbo-cluster #叢集負載名稱

namespace: dd17-amp5-51cg-8a95-ff4aoooc273a #名稱空間

config:

server-addr: 192.168.3.2:8848 # nacos對應微服務配置中心地址

namespace: dd17-amp5-51cg-8a95-ff4aoooc273a #名稱空間

file-extension: yaml #字尾請求

refresh-enabled: true #自動重新整理

dubbo:

protocol: #Dubbo 服務暴露的協議配置,其中子屬性 name 為協議名稱,port 為協議埠( -1 表示自增埠,從 20880 開始)

name: dubbo

port: -1

registry:

#字首spring-cloud含義:實現掛載到 Spring Cloud註冊中心

address: spring-cloud://192.168.3.2:8848 #dubbo服務註冊埠,註冊中心伺服器地址,如果地址沒有埠預設為9090,同一叢集內的多個地址用逗號分隔,如:ip:port,ip:port

cloud:

subscribed-services: dubbo-provider

4.2消費方呼叫介面

@EnableDiscoveryClient

@SpringBootApplication

@RestController

public class DubboConsumerApplication{

@Reference

HelloService helloService;

@GetMapping("/fenbu")

public String fenbu() {

return helloService.hello("www.baihe.cn");

}

}

@Reference註解來自org.apache.dubbo.config.annotation.Reference

本文講解了Dubbo阿里系微服務Spring Cloud Alibaba。透過Dubbo Spring Cloud,廣大程式設計師迎來了春天。後續繼續推出Spring Cloud Alibaba微服務與大資料系列,敬請期待。

14
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 運維監控系統之Prometheus Server安裝