SpringCloudチュートリアル|2.Nacosサービスの構成と発見

5489 ワード

構成管理
サンプルコード:nacos-spring-boot-config-example
1.Nacos Serverの起動
2.pomファイル依存性の追加

        
            org.springframework.boot
            spring-boot-starter
        

        
            org.projectlombok
            lombok
            true
        
        
            com.alibaba.boot
            nacos-config-spring-boot-starter
            0.2.1
        
        
            org.springframework.boot
            spring-boot-starter-web
        
    

3.application.properties
nacos.config.server-addr=127.0.0.1:8848

4.@NacosPropertySourceを使用してdataIdをexampleの構成ソースとしてロードし、自動更新をオンにします.
@NacosPropertySource(dataId = "example",groupId = "own_test",autoRefreshed = true)
@SpringBootApplication
public class SpringcloudApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringcloudApplication.class, args);
    }
}

5.Nacosの@NacosValue注記で属性値を設定する
import com.alibaba.nacos.api.config.annotation.NacosValue;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("config")
public class ConfigController {
    @NacosValue(value = "${useLocalCache:false}", autoRefreshed = true)
    private boolean useLocalCache;

    @RequestMapping(value = "/get",method = RequestMethod.GET)
    @ResponseBody
    public boolean get() {
        return useLocalCache;
    }
}

6.プロジェクトを開始した後、ブラウザでhttp://localhost:8080/config/getを要求し、コンテンツはfalseである.
7.Nacos Open APIを呼び出してNacos serverに構成を公開する:dataIdはexample、内容はuseLocalCache=true
POST   "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example&group=DEFAULT_GROUP&content=useLocalCache=true"

8.再アクセスhttp://localhost:8080/config/getを選択すると、返される内容がtrueになり、プログラム内のuseLocalCache値が動的に更新されたことを示します.
 
 
サービス発見
サンプルコード:nacos-spring-boot-discovery-example
1.Nachos Serverサービスの起動
2.依存関係の追加

        
            org.springframework.boot
            spring-boot-starter
        
        
            org.projectlombok
            lombok
            true
        
        
            com.alibaba.boot
            nacos-discovery-spring-boot-starter
            0.2.1
        
        
            org.springframework.boot
            spring-boot-starter-web
        
    

3.application.properties
nacos.discovery.server-addr=127.0.0.1:8848

4.@NacosInjectedを使用してNacosに注入したNamingServiceの例:
import com.alibaba.nacos.api.annotation.NacosInjected;
import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.naming.NamingService;
import com.alibaba.nacos.api.naming.pojo.Instance;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;

/**
 * Description:
 *   :gu.weidong(Marco)
 * date:2019/9/10
 * ProjectName:alibaba-nacos-discovery-server
 */
@Controller
@RequestMapping("discovery")
public class DiscoveryController {
    @NacosInjected
    private NamingService namingService;

    @RequestMapping(value = "/get", method = RequestMethod.GET)
    @ResponseBody
    public List get(@RequestParam String serviceName) throws NacosException {
        return namingService.getAllInstances(serviceName);
    }
}

5.プロジェクトの開始、ブラウザの要求http://localhost:8080/discovery/get?serviceName=exampleを選択すると、空のJSON配列[]に戻ります.
6.Nacos Open APIを呼び出してNacos serverにexampleサービスという名前のサービスを登録する
post   'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=example&ip=127.0.0.1&port=8080'

7.再アクセスhttp://localhost:8080/discovery/get?serviceName=exampleを選択すると、次のように返されます.
[{
	"instanceId": "127.0.0.1#8080#DEFAULT#DEFAULT_GROUP@@example",
	"ip": "127.0.0.1",
	"port": 8081,
	"weight": 1.0,
	"healthy": true,
	"cluster": {
		"serviceName": null,
		"name": "",
		"healthChecker": {
			"type": "TCP"
		},
		"defaultPort": 80,
		"defaultCheckPort": 80,
		"useIPPort4Check": true,
		"metadata": {}
	},
	"service": null,
	"metadata": {}
}]