天天看点

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 后续还有进阶版本