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

alibaba-cloud

本項目演示如何使用 spring cloud alibaba系列html

引入依賴

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

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

  • 官方文檔目前推薦的SpringBoot 2.0.6.RELEASE版本。若是註冊不了通常都是版本不對。能夠去官方文檔查看對應的版本 若是須要使用已發佈的版本,在 dependencyManagement 中添加以下配置。web

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

而後在 dependencies 中添加本身所需使用的依賴便可使用。spring

若是您想體驗最新的 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 應用的服務註冊與發現bash

建立服務提供者

新建一個項目 cloud-clientapp

  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/…

相關文章
相關標籤/搜索