天天看點

Nacos 配置注冊中心安裝部署1 安裝和運作Nacos2 Nacos入門:服務提供者3 Nacos入門:服務消費者4 後續還有進階版本

Nacos入門

  • 1 安裝和運作Nacos
    • 1.1 安裝Nacos
    • 1.2 運作Nacos
  • 2 Nacos入門:服務提供者
    • 2.1 編寫一個服務,并成功注冊到nacos中
      • 2.1.1 打開Idea建立一個maven父項目,在pom檔案中導入以下坐标
      • 2.1.2 建立服務提供者子產品,在pom檔案中導入以下坐标
      • 2.1.3 然後編寫application.yml檔案
      • 2.1.4 然後建立啟動類和contller方法
      • 2.1.5 運作
  • 3 Nacos入門:服務消費者
    • 3.1 編寫一個服務,并成功注冊到nacos中
      • 3.1.1 建立服務消費者子產品,并導入pom坐标
      • 3.1.2 編寫yml檔案
      • 3.1.3 建立啟動類,RestTemplate方法和controller方法
      • 3.1.4 運作
  • 4 後續還有進階版本

1 安裝和運作Nacos

1.1 安裝Nacos

  • nacos是一個獨立的軟體,需要下載下傳與安裝,自行去官網安裝,官網位址:https://nacos.io/zh-cn/docs/quick-start.html。附帶安裝方法。

1.2 運作Nacos

  • 打開nacos所安裝的檔案夾,進入bin目錄,輕按兩下startup.cmd來運作cmd
    Nacos 配置注冊中心安裝部署1 安裝和運作Nacos2 Nacos入門:服務提供者3 Nacos入門:服務消費者4 後續還有進階版本
  • 如果上述啟動方法報錯,那麼在bin目錄直接打開cmd輸入指令startup.cmd -m standalone
    Nacos 配置注冊中心安裝部署1 安裝和運作Nacos2 Nacos入門:服務提供者3 Nacos入門:服務消費者4 後續還有進階版本
  • 看到此日式資訊即為啟動成功,注意:cmd指令框不可關閉,也可以把nacos注冊成服務
    Nacos 配置注冊中心安裝部署1 安裝和運作Nacos2 Nacos入門:服務提供者3 Nacos入門:服務消費者4 後續還有進階版本
  • 啟動成功後去登入Nacos,登入位址:http://192.168.98.227:8848/nacos/index.html
  • 賬号和密碼均為:nacos

2 Nacos入門:服務提供者

2.1 編寫一個服務,并成功注冊到nacos中

2.1.1 打開Idea建立一個maven父項目,在pom檔案中導入以下坐标

<!-- 1 确定spring boot的版本-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
    </parent>

    <!--2  确定版本-->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <spring-cloud-release.version>Hoxton.SR3</spring-cloud-release.version>
        <nacos.version>1.1.0</nacos.version>
        <alibaba.cloud.version>2.2.1.RELEASE</alibaba.cloud.version>
    </properties>

    <!-- 3 鎖定版本-->
    <dependencyManagement>
        <dependencies>
            <!-- sprig cloud-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud-release.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--nacos -->
            <dependency>
                <groupId>com.alibaba.nacos</groupId>
                <artifactId>nacos-client</artifactId>
                <version>${nacos.version}</version>
            </dependency>

            <!--nacos cloud 發現 -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <version>${alibaba.cloud.version}</version>
            </dependency>

            <!--nacos cloud 配置 -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
                <version>${alibaba.cloud.version}</version>
            </dependency>

            <!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-sentinel -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
                <version>${alibaba.cloud.version}</version>
            </dependency>


        </dependencies>

    </dependencyManagement>
           

2.1.2 建立服務提供者子產品,在pom檔案中導入以下坐标

<dependencies>
        <!-- web 啟動類 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- nacos 用戶端 -->
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
        </dependency>

        <!-- nacos 服務發現 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>
           

2.1.3 然後編寫application.yml檔案

Nacos 配置注冊中心安裝部署1 安裝和運作Nacos2 Nacos入門:服務提供者3 Nacos入門:服務消費者4 後續還有進階版本
server:
  port: 8070

spring:
  application:
    name: service-provider          #服務名
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848   #nacos服務位址
           

2.1.4 然後建立啟動類和contller方法

  • 服務提供者啟動類
    Nacos 配置注冊中心安裝部署1 安裝和運作Nacos2 Nacos入門:服務提供者3 Nacos入門:服務消費者4 後續還有進階版本
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * @Author: Kj
 * @Date: 2021/4/19 17:14
 */
@SpringBootApplication
@EnableDiscoveryClient
public class TestNacosProViderApplication {
    public static void main(String[] args) {
        SpringApplication.run(TestNacosProViderApplication.class,args);
    }
}
           
  • 服務提供者controller方法
    Nacos 配置注冊中心安裝部署1 安裝和運作Nacos2 Nacos入門:服務提供者3 Nacos入門:服務消費者4 後續還有進階版本
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

/**
 * @Author: Kj
 * @Date: 2021/4/19 17:16
 */
@RestController
public class EchoController {

    @Resource
    private HttpServletRequest request;

    @GetMapping("/echo/{str}")
    public String echo(@PathVariable("str") String str){
        int serverPort = request.getServerPort();
        return "hello : " + str + " , " + serverPort;
    }

}
           

2.1.5 運作

  • 運作啟動類,運作成功後登入nacos檢視注冊的服務
    Nacos 配置注冊中心安裝部署1 安裝和運作Nacos2 Nacos入門:服務提供者3 Nacos入門:服務消費者4 後續還有進階版本
  • 然後在浏覽器輸入位址:http://localhost:8070/echo/123檢視效果
    Nacos 配置注冊中心安裝部署1 安裝和運作Nacos2 Nacos入門:服務提供者3 Nacos入門:服務消費者4 後續還有進階版本

3 Nacos入門:服務消費者

3.1 編寫一個服務,并成功注冊到nacos中

3.1.1 建立服務消費者子產品,并導入pom坐标

<dependencies>
        <!-- web 啟動類 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- nacos 用戶端 -->
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
        </dependency>

        <!-- nacos 服務發現 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <!-- openfeign 遠端調用 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

    </dependencies>
           

3.1.2 編寫yml檔案

#端口号
server:
  port: 8071

spring:
  application:
    name: service-consumer          #服務名
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848   #nacos服務位址
           

3.1.3 建立啟動類,RestTemplate方法和controller方法

  • 啟動類
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * @Author: Kj
 * @Date: 2021/4/19 17:16
 */
@SpringBootApplication
@EnableDiscoveryClient  //服務發現
public class TestNacosConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(TestNacosConsumerApplication.class, args);
    }
}
           
  • RestTemplate方法,一定要支援負載均衡
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

/**
 * @Author: Kj
 * @Date: 2021/4/19 17:16
 */
@Configuration
public class RestTemplateConfig {
    @Bean
    @LoadBalanced   // 支援負載均衡
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}
           
  • controller方法
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;

/**
 * @Author: Kj
 * @Date: 2021/4/19 17:16
 */
@RestController
@RequestMapping("/rest")
public class TestRestController {

    @Resource
    private RestTemplate restTemplate;

    @GetMapping("/echo/{str}")
    public String echo(@PathVariable("str") String str) {
        // 方案1:通路完整路徑
        //return restTemplate.getForObject("http://localhost:8070/echo/" + str, String.class);
        // 方案2:通過服務名通路
        return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);
    }
}
           

3.1.4 運作

  • 運作啟動類,登入nacos檢視服務
    Nacos 配置注冊中心安裝部署1 安裝和運作Nacos2 Nacos入門:服務提供者3 Nacos入門:服務消費者4 後續還有進階版本
  • 然後在浏覽器輸入位址:http://localhost:8071/rest/echo/123檢視效果
    Nacos 配置注冊中心安裝部署1 安裝和運作Nacos2 Nacos入門:服務提供者3 Nacos入門:服務消費者4 後續還有進階版本

4 後續還有進階版本