springCloud使用nacos作爲註冊中心及配置中心

1.下載及配置nacos服務端,並啓動nacos

  首先到github下載nacos.zip文件,然後解壓文件. .打開目錄結構,到目錄 bin/nacos-mysql.sql文件,將文件運行到自己的數據庫中。然後打開application.properties文件,修改mysq連接

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos-test?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root

server.contextPath=/nacos
server.servlet.contextPath=/nacos
server.port=8848

然後進入到 bin目錄   如果是windows  啓用startup.cmd。如果是linux 啓用startup.sh命令。

打開瀏覽器 輸入http://localhost:8848/nacos    默認賬號 nacos /nacos。可以看到下面頁面

首先我創建了一個空間 test 然後創建了兩個yml文件。

特別要注意我打標記的地方。

2、創建測試project 並配置nacos

 

首先創建springboot項目  然後pom中引入依賴

	<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-alibaba-nacos-config-server</artifactId>
			<version>0.9.0.RELEASE</version>
		</dependency>

		<dependency>
		    <groupId>org.springframework.cloud</groupId>
		    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
		    <version>0.9.0.RELEASE</version>
		</dependency>

然後再啓動類加上@EnableDiscoveryClient註解。

 

現在我們創建了一個springboot項目  然後將配置文件重命名  bootstrap.yml。下面展示配置

server:
  port: 8001

test:
  nacos:
    namespace: a4dbaa04-04fe-48bc-80b8-58360e508b54
    group: bo
    server-addr: localhost:8848

spring:
  application:
    name: biz-server
  cloud:
    nacos:
      discovery:
        server-addr: ${test.nacos.server-addr}
        namespace: ${test.nacos.namespace}
      config:
        file-extension: yaml
        server-addr: ${test.nacos.server-addr}
        namespace: ${test.nacos.namespace}
        group: ${test.nacos.group}
        ext-config:
          - data-id: basic-common.yaml
            group: ${test.nacos.group}
            refresh: true

test標籤下面的nacos配置,這個是我們自定義的。主要是爲了方便切換,然後spring.application.name這個是biz-server ,在nacos中必須有biz-server.yaml  要不然會保存的,在中間可以添加一個環境變量,默認會給你去掉。

然後最主要的配置實在 discovery中,首先配置上面自定義的字段值,然後config下面配置了第一張圖片打箭頭的有地址 命名空間還有組別等等。然後ext-config是引用其他的自定義yaml的配置文件。

配置好後,啓動項目,因爲我再bootstrp.yml配置了端口爲8001 在biz-server配置了8100,項目啓動後,會啓動端口8100,配置文件會覆蓋掉bootstrap.yml中的數據。

自定義一個controller寫個測試看是否能拿到變量

@RestController
@RequestMapping("/api/")
public class TestController {

    @Value("${test.sms.url}")
    private String url;

    @GetMapping("/getUrl")
    public String getConfig(){
        return url;
    }
}

測試結果是能拿到值。

 

3、動態獲取數據

項目已經啓動,拿到的url 是baidu.com  那現在我們在配置環境的修改配置,我們刷新頁面是不生效的。

對controller做如下配置就可以了

@RestController
@RequestMapping("/api/")
@RefreshScope
public class TestController {

    @Value("${test.sms.url}")
    private String url;

    @GetMapping("/getUrl")
    public String getConfig(){
        return url;
    }
}

成功的動態刷新,如果獲取的變量是一個component那麼並不需要使用@RefreshScope便可以動態刷新。

 

對於nacos和eureka1.0做比較,我感覺nacos比較方便,且註冊中心和配置中心在一起。如果使用eureka,那麼還需要去做配置中心還要集合消息隊列,會很麻煩,所以我極力推崇大家微服務的時候使用nacos來做註冊中心和配置中心

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章