spring cloud alibaba系列(一) 服務註冊

codeing_docs發表於2019-01-26

alibaba-cloud

本專案演示如何使用 spring cloud alibaba系列

引入依賴

  • 版本 0.2.1.RELEASE 對應的是 Spring Cloud Finchley 版本,

  • 版本 0.1.1.RELEASE 對應的是 Spring Cloud Edgware 版本。

  • 官方文件目前推薦的SpringBoot 2.0.6.RELEASE版本。如果註冊不了一般都是版本不對。可以去官方文件檢視對應的版本 如果需要使用已釋出的版本,在 dependencyManagement 中新增如下配置。

    org.springframework.cloud spring-cloud-alibaba-dependencies 0.2.1.RELEASE pom import

然後在 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

  1. 引入Nacos Discovery Starter
	  <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
複製程式碼
  1. 配置Nacos Server地址
server.port=18082
#服務名稱
spring.application.name=cloud-client
#Nacos Server 地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
複製程式碼
  1. 啟動類上使用 @EnableDiscoveryClient 註解開啟服務註冊與發現功能

4 下載 Nacos Server :github.com/alibaba/nac…

  1. 啟動 Server

輸入圖片說明
輸入圖片說明
登入介面

啟動

出現如下資訊說明註冊到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/…

相關文章