alibaba-cloud
本專案演示如何使用 spring cloud alibaba系列
引入依賴
-
版本 0.2.1.RELEASE 對應的是 Spring Cloud Finchley 版本,
-
版本 0.1.1.RELEASE 對應的是 Spring Cloud Edgware 版本。
-
官方文件目前推薦的SpringBoot 2.0.6.RELEASE版本。如果註冊不了一般都是版本不對。可以去官方文件檢視對應的版本 如果需要使用已釋出的版本,在
org.springframework.cloud spring-cloud-alibaba-dependencies 0.2.1.RELEASE pom importdependencyManagement
中新增如下配置。
然後在 dependencies
中新增自己所需使用的依賴即可使用。
如果您想體驗最新的 BUILD-SNAPSHOT 的新功能,則可以將版本換成最新的版本,但是需要在 pom.xml 中配置 Spring BUILDSNAPSHOT 倉庫,注意: SNAPSHOT 版本隨時可能更新
<repositories>
<repository>
<id>spring-snapshot</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
複製程式碼
服務的註冊發現(Nacos Discovery)
Nacos 是阿里巴巴開源的一個更易於構建雲原生應用的動態服務發現、配置管理和服務管理平臺。 如何使用Nacos Discovery Starter 完成 Spring Cloud 應用的服務註冊與發現
建立服務提供者
新建一個專案 cloud-client
- 引入Nacos Discovery Starter
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
複製程式碼
- 配置Nacos Server地址
server.port=18082
#服務名稱
spring.application.name=cloud-client
#Nacos Server 地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
複製程式碼
- 啟動類上使用 @EnableDiscoveryClient 註解開啟服務註冊與發現功能
4 下載 Nacos Server :github.com/alibaba/nac…
- 啟動 Server
-
Linux/Unix/Mac 作業系統,執行命令 sh startup.sh -m standalone
-
Windows 作業系統,執行命令 cmd startup.cmd
-
訪問控制檯:http://127.0.0.1:8848/nacos/index.html
0.8版本預設登入賬號的密碼nacos/nacos.
啟動
出現如下資訊說明註冊到nacos成功
nacos控制條介面就會出現註冊的服務以上步驟向您展示瞭如何將一個服務註冊到 Nacos。
建立消費者
新建一個專案 cloud-consumer.配置檔案和消費者一樣更換下埠即可。
server.port=18083
spring.application.name=service-consumer
#Nacos Server 地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
management.endpoints.web.exposure.include=*
複製程式碼
啟動類同樣新增@EnableDiscoveryClient 註冊到nacos
@EnableDiscoveryClient
@SpringBootApplication
public class CloudConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(CloudConsumerApplication.class, args);
}
//例項化 RestTemplate 例項
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
複製程式碼
新建一個 ConsumerController
@RestController
public class ConsumerController {
@Autowired
private LoadBalancerClient loadBalancerClient;
@Autowired
private RestTemplate restTemplate;
@Value("${spring.application.name}")
private String appName;
/**
* 通過帶有負載均衡的RestTemplate 和 FeignClient 也是可以訪問的
* @return
*/
@GetMapping("/echo/app-name")
public String echoAppName(){
//使用 LoadBalanceClient 和 RestTemolate 結合的方式來訪問
ServiceInstance serviceInstance = loadBalancerClient.choose("service-provider");
String url = String.format("http://%s:%s/echo/%s",serviceInstance.getHost(),serviceInstance.getPort(),appName);
System.out.println("request url:"+url);
return restTemplate.getForObject(url,String.class);
}
}
複製程式碼
分別啟動cloud-client和cloud-consumer重新整理nacos
兩個服務都註冊成功 ##測試 訪問 http://127.0.0.1:18083/echo/app-name 消費者輸出訪問日誌說明請求成功瀏覽器出現 第一個Nacos 程式service-consumer 到此Over 基於Nacos實現的服務註冊發現已經呼叫就到此為止。入門還是很簡單的 阿里巴巴大法好!
Nacos更多配置資訊
spring.cloud.nacos.discovery.server-addr #Nacos Server 啟動監聽的ip地址和埠
spring.cloud.nacos.discovery.service #給當前的服務命名
spring.cloud.nacos.discovery.weight #取值範圍 1 到 100,數值越大,權重越大
spring.cloud.nacos.discovery.network-interface #當IP未配置時,註冊的IP為此網路卡所對應的IP地址,如果此項也未配置,則預設取第一塊網路卡的地址
spring.cloud.nacos.discovery.ip #優先順序最高
spring.cloud.nacos.discovery.port #預設情況下不用配置,會自動探測
spring.cloud.nacos.discovery.namespace #常用場景之一是不同環境的註冊的區分隔離,例如開發測試環境和生產環境的資源(如配置、服務)隔離等。
spring.cloud.nacos.discovery.access-key #當要上阿里雲時,阿里雲上面的一個雲賬號名
spring.cloud.nacos.discovery.secret-key #當要上阿里雲時,阿里雲上面的一個雲賬號密碼
spring.cloud.nacos.discovery.metadata #使用Map格式配置,使用者可以根據自己的需要自定義一些和服務相關的後設資料資訊
spring.cloud.nacos.discovery.log-name 日誌檔名
spring.cloud.nacos.discovery.enpoint #地域的某個服務的入口域名,通過此域名可以動態地拿到服務端地址
ribbon.nacos.enabled #是否整合Ribbon 一般都設定成true即可
複製程式碼
Demmo原始碼:github.com/a870439570/…