Spring cloud Alibaba Nacos服務註冊發現和配置中心
阿新 • • 發佈:2020-08-28
-
Nacos使服務易於註冊自己並通過DNS或HTTP介面發現其他服務。Nacos還提供服務的實時執行狀況檢查,以防止向不正常的主機或服務例項傳送請求。
-
動態配置管理
動態配置服務使您可以在所有環境中以集中和動態的方式管理所有服務的配置。Nacos消除了在更新配置時重新部署應用程式和服務的需求,這使配置更改更加有效和敏捷。
-
動態DNS服務
Nacos支援加權路由,使您可以更輕鬆地在資料中心內的生產環境中實施中間層負載平衡,靈活的路由策略,流控制和簡單的DNS解析服務。它可以幫助您輕鬆實現基於DNS的服務發現,並防止應用程式耦合到特定於供應商的服務發現API。
-
服務和元資料管理
Nacos提供了易於使用的服務儀表板,可幫助您管理服務元資料,配置,kubernetes DNS,服務執行狀況和指標統計資訊。
1.下載nacos
2.開啟bin目錄下的startup.cmd
3.訪問http://localhost:8848/nacos/
服務端:
<dependencies> <!--SpringCloud ailibaba nacos --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- SpringBoot整合Web元件 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!--日常通用jar包配置--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
server:
port: 9001
spring:
application:
name: nacos-payment-provider
cloud:
nacos:
discovery:
server-addr: localhost:8848
management:
endpoints:
web:
exposure:
include: '*'
@SpringBootApplication @Slf4j @EnableDiscoveryClient public class PaymentMain9001 { public static void main(String[] args) { SpringApplication.run( PaymentMain9001.class,args); log.info("****************PaymentMain9001 啟動 ************ "); } }
@RestController @Slf4j public class PaymentController { @Value("${server.port}") private String serverPort; @GetMapping(value = "/payment/nacos/{id}") public String getPayment(@PathVariable("id") Integer id) { return "nacos registry, serverPort: " + serverPort + "\t id" + id; } }
客戶端:
server:
port: 83
spring:
application:
name: nacos-order-consumer
cloud:
nacos:
discovery:
server-addr: localhost:8848
#消費者將要去訪問的微服務的名稱(註冊成功進入nacos的微服務提供者)
service-url:
nacos-user-service: http://nacos-payment-provider
dev開發環境
test測試環境
prod生產環境
nacos 給我提供 了 dataid group namespace
<dependencies> <!--nacos-config--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <!--nacos-discovery--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!--web + actuator--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!--一般基礎配置--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
application.yml
spring:
profiles:
active: dev
bootstarp.xml
server:
port: 3377
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848
config:
server-addr: localhost:8848 # nacos作為配置中心的地址
file-extension: yaml # 指定yaml格式的配置
group: DEV_GROUP
namespace: 122de11e-bb29-40e7-bc8e-06436b105ed1
# 配置規則
# ${spring.appliction.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
# nacos-config-client-dev.yaml
@EnableDiscoveryClient @SpringBootApplication @Slf4j public class ConfigNacosMain3377 { public static void main(String[] args) { SpringApplication.run( ConfigNacosMain3377.class,args); log.info("****************ConfigNacosMain3377 啟動 ************ "); } }
@RefreshScope @RestController @Slf4j public class ConfigController { @Value("${config.info}") private String configInfo; @GetMapping("/config/info") public String getConfigInfo() { return configInfo; } }
在nacos上更改後可實現動態重新整理
namespace: