springboot整合SpringCloud Nacos实现配置管理和服务发现

Posted wb54979

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot整合SpringCloud Nacos实现配置管理和服务发现相关的知识,希望对你有一定的参考价值。

微服务注册中心现在常用的主流有三个

Nacos,Eureka与ZooKeeper

Nacos是阿里开源的,Nacos 支持基于 DNS 和基于 RPC 的服务发现。在Spring Cloud中使用Nacos,只需要先下载 Nacos 并启动 Nacos server,Nacos只需要简单的配置就可以完成服务的注册发现。

Nacos除了服务的注册发现之外,还支持动态配置服务。动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。

Nacos = Spring Cloud注册中心 + Spring Cloud配置中心

进入正题,nacos下载 https://github.com/alibaba/nacos/releases?page=1

我这边是简单测试下下载的window下运行的

解压到自己的电脑目录下

点击startup.cmd直接启动,下载后直接启动会报错,因为默认模式是集群方式。在启动文件中做修改

startup.cmd中找到  set MODE="cluster"  修改为 set MODE="standalone"

然后启动

 

 打开浏览器输入http://本机IP:8848/nacos/index.html#/login

默认登录账号  nacos  nacos

 

到这里单机版的nacos注册中心就起来了

下面开始简单的搭建微服务

先创建个user服务如下

启动类

package com.user.wbuser;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableDiscoveryClient
public class WbUserApplication 

    @Bean
    @LoadBalanced//负载均衡+动态路路由
    public RestTemplate restTemplate() 
        return new RestTemplate();
    

    public static void main(String[] args) 
        SpringApplication.run(WbUserApplication.class, args);
    


 yaml文件配置

server:
  port: 8000
spring:
  cloud:
    nacos:
      discovery:
        service: user-server
      server-addr: localhost:8848

添加 web 依赖和 Spring-boot-admin-starter-server 依赖。

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.user</groupId>
    <artifactId>wb-user</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>wb-user</name>

    <properties>
        <java.version>1.8</java.version>
        <spring-nacos.version>2.1.1.RELEASE</spring-nacos.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

运行

WbUserApplication.main

启动以后再nacos里面就可以看到注册的服务了,然后切到nacos管理后台

 继续创建第二个服务

创建过程maven引用同上wb-user

创建好order启动order

 简单的实现order服务调用user服务


@RestController
public class OrderController 

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/order/getOrderRelationUserInfo")
    public String createOrder() 
        // 调用商品服务,通过商品ID获取商品名称
        return restTemplate.getForObject("http://user-server//usser/getUser" , String.class);
    

 

@RestController
public class UserController 


    @GetMapping("/usser/getUser")
    public String createOrder() 
        System.out.println("请求用户模块成功");
          return "获取用户信息成功";
    

 到这里简单的springboot  nacos搭建就完成了,要想实现负载均衡+动态路由,

我这里拿user服务做演示多启动几个更改下端口号如下

 这个时候在去nacos管理控制台查询user服务的详情会多出来一个节点

再去试试order请求到user 负载均衡的一个效果

 连续请求了3次 观察命中率

 在nacos控制台下线掉8000 然后再请求看下效果

 三次都是命中到8006上来了

 将下线的项目服务重新上线
负载均衡测试,应该和正常请求一样这里就不演示了。

源码地址 wb54979 / test-nacos · GitCode

以上是关于springboot整合SpringCloud Nacos实现配置管理和服务发现的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot整合SpringCloud

企业分布式微服务云SpringCloud SpringBoot mybatis (二十)整合 beatlsql

springboot整合SpringCloud Nacos实现配置管理和服务发现

springboot整合SpringCloud Nacos实现配置管理和服务发现

springboot整合SpringCloud Nacos实现配置管理和服务发现

Rabbitmq基本使用 SpringBoot整合Rabbit SpringCloud Stream+Rabbit