概述
注冊配置中心提供多種類型的引擎,您可以按需創建滿足您需求的服務實例,不需要實現和維護這些基礎微服務組件,開發者可以完全專注微服務應用本身的開發。
以下步驟將演示創建一個注冊配置中心實例,并改造一個微服務快速接入您創建的注冊配置中心。演示中開通的引擎類型為Nacos。
創建一個注冊配置中心實例
- 首先,從天翼云官網控制中心> 微服務工具與平臺 > 微服務引擎MSE,點擊進入產品頁面。
- 左上角選擇目標資源,這里以華東1為例,進入微服務引擎控制臺。
- 左側菜單欄點擊注冊配置中心> 實例列表,進入注冊配置中心控制臺實例列表頁面。
- 點擊實例列表左上角的創建實例跳轉至產品訂購頁面。
- 選擇系列/引擎類型,實例規格,選擇節點數量,選擇子網、VPC和安全組后,點擊確認訂單。不同資源池節點訂購方式有所不同,以具體功能頁面為準。
- 點擊下一步、跳轉至訂單確認頁面,點擊確認提交訂單,支付完成后等待5~10分鐘,可以在控制臺頁面看到開通成功的實例。
進入實例的管理頁面
實例開通完成后,進入實例列表頁面,點擊實例ID或者實例名稱,即可進入實例的管理頁面。
獲取實例的內網連接地址,該地址就是您在VPC內部連接該Nacos引擎的訪問地址。
另外基礎信息還包括規格、磁盤、網絡以及節點狀態等一系列信息。
將SpringBoot類型的微服務集成Nacos
配置管理
為您的Spring Boot 應用集成Nacos配置管理功能,在工程中引入nacos-config-spring-boot-starter和nacos-discovery-spring-boot-starter的 Maven坐標。
注意版本 0.2.x.RELEASE 對應的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE?對應的是 Spring Boot 1.x 版本。
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>${latest.version}</version>
</dependency>
在application.properties 中配置 實例配置中心的連接地址,即前述步驟的內網地址。
nacos.config.server-addr=127.0.0.1:8848
配置管理示例:使用@NacosPropertySource 加載 dataId 為 example 的配置源,并開啟自動更新,通過 Nacos 的 @NacosValue 注解設置屬性值。
@Controller
@RequestMapping("discovery")
public class DiscoveryController {
@NacosInjected
private NamingService namingService;
@RequestMapping(value = "/get", method = GET)
@ResponseBody
public List get(@RequestParam String serviceName) throws NacosException {
return namingService.getAllInstances(serviceName);
}
}
@SpringBootApplication
public class NacosDiscoveryApplication {
public static void main(String[] args) {
SpringApplication.run(NacosDiscoveryApplication.class, args);
}
}
啟動NacosConfigApplication,調用 curl //localhost:8080/config/get,返回內容是 false。通過控制臺向Nacos server 發布配置:dataId 為example,內容為useLocalCache=true。可參考:Nacos-配置管理
再次訪問//localhost:8080/config/get,此時返回內容為true,說明程序中的useLocalCache值已經被動態更新了。
服務發現
如果需要在Spring Boot 應用集成Nacos服務發現和管理功能,在工程中引入nacos-discovery-spring-boot-starter的 Maven坐標。
注意版本 0.2.x.RELEAS?對應的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE?對應的是 Spring Boot 1.x 版本。
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-discovery-spring-boot-starter</artifactId>
<version>${latest.version}</version>
</dependency>
在application.properties 中配置 實例注冊中心的連接地址,即前述步驟的內網地址。
nacos.discovery.server-addr=127.0.0.1:8848
服務發現示例:使用@NacosInjected 注入 Nacos 的 NamingService 實例。
@Controller
@RequestMapping("discovery")
public class DiscoveryController {
@NacosInjected
private NamingService namingService;
@RequestMapping(value = "/get", method = GET)
@ResponseBody
public List get(@RequestParam String serviceName) throws NacosException {
return namingService.getAllInstances(serviceName);
}
}
@SpringBootApplication
public class NacosDiscoveryApplication {
public static void main(String[] args) {
SpringApplication.run(NacosDiscoveryApplication.class, args);
}
}
啟動NacosDiscoveryApplication,調用 curl //localhost:8080/discovery/get?serviceName=example,此時返回為空 JSON 數組[]。
通過調用Nacos Open API 向 Nacos server 注冊一個名稱為 example 服務:
curl -X POST '//127.0.0.1:8848/nacos/v1/ns/instance?serviceName=example&ip=127.0.0.1&port=8080'
再次訪問curl //localhost:8080/discovery/get?serviceName=example,此時返回內容為:
[
{
"instanceId": "127.0.0.1-8080-DEFAULT-example",
"ip": "127.0.0.1",
"port": 8080,
"weight": 1.0,
"healthy": true,
"cluster": {
"serviceName": null,
"name": "",
"healthChecker": {
"type": "TCP"
},
"defaultPort": 80,
"defaultCheckPort": 80,
"useIPPort4Check": true,
"metadata": {}
},
"service": null,
"metadata": {}
}
]
服務管理
進入實例控制臺頁面,即可查看和管理已經注冊的服務。若上個步驟中客戶端注冊成功,即可在服務列表中查看到對應的服務。詳細內容請參見管理服務。
