3.Nacos服务整合SpringBoot框架技术
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.Nacos服务整合SpringBoot框架技术相关的知识,希望对你有一定的参考价值。
参考技术A添加依赖。
** 注意**:版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版
本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本。
使用@NacosPropertySource加载 dataId 为 example 的配置源,并开启自动更新:
通过 Nacos 的 @NacosValue 注解设置属性值。
内容是 false。
为useLocalCache=true
curl -X POST " http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example&group=DEFAULT_GROUP&content=useLocalCache=true "
再次访问 http://localhost:8080/config/get ,此时返回内容为true,说明程序中的useLocalCache值已经被动态更新了。
添加依赖。
注意 :版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本。
在 application.properties 中配置 Nacos server 的地址:
使用 @NacosInjected 注入 Nacos 的 NamingService 实例:
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
以上是关于3.Nacos服务整合SpringBoot框架技术的主要内容,如果未能解决你的问题,请参考以下文章
分布式事务:SpringBoot+Dubbo+Seata+Nacos 实现案例