技术标签: SpringCloud组件 spring boot java 后端
Nacos(Dynamic Naming and Configuration Service) 是阿里巴巴2018年7月开源的项目。它专注于服务发现和配置管理领域 致力于帮助您发现、配置和管理微服务。Nacos 支持几乎所有
主流类型的“服务”的发现、配置和管理。
一句话总结就是:Nacos = Spring Cloud注册中心 + Spring Cloud配置中心
两个核心功能:服务注册与发现,动态配置管理
构建分布式项目或者说构建微服务时使用
1.下载安装nacos https://github.com/alibaba/nacos/releases
2.启动nacos windows下直接点击解压后文件中的“startup.cmd”运用
3.访问nacos所提供的管理后台: http://localhost:8848/nacos 登录名:nacos 密码:nacos
4.将微服务集成到nacos中
4.1 在服务的pom.xml文件中加入依赖
4.2 在application.yml文件中进行配置
1.下载安装nacos
2.启动nacos
3.访问nacos所提供的管理后台: http://localhost:8848/nacos 登录名:nacos 密码:nacos
4.1 在服务的pom.xml文件中加入依赖
<!--nacos-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>1.1.0</version>
</dependency>
4.2 在application.yml文件中进行配置
server:
port: 8000 //不同服务使用不同端口号
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 # 配置nacos 服务端地址
application:
name: nacos-provider # 服务名称
先简单介绍一下配置中心,在微服务系统架构中为了保证系统的高性能和高可靠性,每一个微服务在部署的时候采用的都是集群部署。
每一个服务中都存在自己所对应的配置文件。后期如果我们需要更改商品服务的配置信息,那么按照目前的部署架构来讲,就需要修改每一个服务中所对应的配置文件(application.yml)。当部
署的服务数量较小的时候,修改还是比较方便的,但是当服务变的越来越多,这种修改就变的非常的麻烦。太不利于后期的维护了。为了提高这个系统配置信息的维护性,我们可以使用一个
统一的配置中心,使用这个配置中心来统一存储配置文件。
一句话:大大的提高了各个服务配置文件的维护性
1.在nacos服务端创建一个配置文件:配置文件的唯一性是通过dataId + group确定的
2.在服务中导入依赖
3.创建配置文件(bootstrap.yml)
4.加上实时刷新注解 为了不用重启服务器直接可以加载使用修改后的配置文件
5.测试使用nacos服务端修改后的配置文件内容
1.在nacos服务端创建一个配置文件:配置文件的唯一性是通过dataId + group确定
dataId
的完整格式如下:
${prefix}-${spring.profile.active}.${file-extension}
prefix
默认为 spring.application.name
的值,也可以通过配置项 spring.cloud.nacos.config.prefix
来配置。
spring.profile.active
即为当前环境对应的 profile, 注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
file-exetension
配置文件的后缀名,可以通过配置项 spring.cloud.nacos.config.file-extension
来配置。目前只支持 properties
和 yaml(yml)
类型
例:
nacos-config-module-dev.yml
代表服务的名称为nacos-config-module 环境为dev表示生产环境 文件格式为yml
2.在服务中导入依赖
<!-- 加入web的依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- nacos作为配置文件的依赖包 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
3.创建配置文件(bootstrap.yml,注意和application.yml同级层创建。啰嗦一句,bootstrap.yml和application.yml作用一样都可以被加载到,但是bootstrap属于系统级别的,比application的配置文件提前加载)
spring:
application:
name: nacos-config-module # 应用的名称(如果没有指定spring.cloud.nacos.config.prefix配置,这个应用名称需要和nacos配置文件的前缀一致)
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848 # nacos服务端的ip地址以及端口号
file-extension: yml # 配置文件的后缀名
profiles:
active: dev # 环境配置
注意:一般有了bootstrap配置文件后,只需要在application中配置一下当前的配置环境即可,例如(dev,pro等),在bootstrap中配置nocas作为服务中心和配置中心等。。。
4.加上实时刷新注解 为了不用重启服务器直接可以加载使用修改后的配置文件
默认情况下,当nacos服务端配置文件的内容发送更新了以后。应用方是无法获取到最新的配置。要想在应用方获取最新的配置信息可以使用spring cloud提供的注解:@RefreshScope
该注解需要使用在读取配置文件的类上:
@RestController
@RequestMapping(value = "/nacos")
@RefreshScope //实时刷新
public class NacosController {
@Value("${userName}")
private String userName ;
@RequestMapping(value = "/findAll")
public ResponseEntity<Map<String , Object>> findAll() {
System.out.println("findAll.....");
Map<String , Object> hashMap = new HashMap<String , Object>() ;
hashMap.put("result" , userName) ;
return ResponseEntity.ok(hashMap) ;
}
}
5.测试使用nacos服务端修改后的配置文件内容
@RestController
@RequestMapping(value = "/nacos")
@RefreshScope
public class NacosController {
@Value("${userName}")
private String userName ;
@RequestMapping(value = "/findAll")
public ResponseEntity<Map<String , Object>> findAll() {
System.out.println("findAll.....");
Map<String , Object> hashMap = new HashMap<String , Object>() ;
hashMap.put("result" , userName) ;
return ResponseEntity.ok(hashMap) ;
}
}
HTML侧边栏菜单用div做一个侧边菜单栏样式,没有导航功能,还没学会,大家不要介意。HTML:<div class="sidebar"> <div class="tab" id="cate0"><i class="reorder"></i> 全部教程</div> <div class="design" id=...
mysql是BigDecimal类型存两位小数,前端显示百分数private BigDecimal money;public String money_str() { if (money!= null) { return money.multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_UP).toString().concat("%"); } return "";}...
在前四期的文章中,我们分别学习了“环境搭建与开发接入”、“文本消息的接收与响应”、“被关注回复与关键词回复”、“图文消息的发送与响应”等环节。那么,从本篇博文开始,我们将进去更高级的开发层面,调用微信公众平台提供的各种接口。 今天,我们来学习一下微信公众平台最基础的一个接口——access_token,access_token是公众号的全局唯一票据,公众号调用各接口时都需使用acc...
一、表格自动换页1、导言区输入宏包:\usepackage{supertabular}2、表格命令(示例)\begin{center} \bottomcaption{results of function\label{results of function}} \tablefirsthead{\hline number&$x_0$&$k$&termina...
本文将介绍一种通过teamviewer的vpn功能实现外网访问内网的操作,简单来说,就是通过teamviewer的vpn实现外网访问内网的代理,再通过Proxifier辅助实现全局代理,即可实现外网访问内网的操作。这样的方法相对于proxychains4、端口转发等操作来说更方便,这里不做过多阐述。首先我们要有一部内网中的电脑,并且安装好teamviewer。一、安装teamviewer的vp...
### 问题描述执行Redis订阅后,无法执行其他操作了### Swoole版本,PHP版本,以及操作系统版本信息swoole-4.5.7php-7.4.12CentOS 8### 相关代码```phperror_reporting(0);if (php_sapi_name() !== 'cli') {die();}$a = swoole_get_local_ip();$ip = $a['ens3...
M数Time Limit: 1000 MSMemory Limit: 32768 KTotal Submit: 62(32 users)Total Accepted: 34(30 users)Rating: Special Judge: NoDescriptionMac最近YY了
设备思科公司自适应安全设备(ASA)ASDM启动ASDM并连接到您的设备 转到配置>管理访问> SNMP 添加您的社区字符串 在“ SNMP主机访问列表”部分中添加您的LibreNMS服务器IP地址 单击应用并保存命令行界面# SNMPv2csnmp-server community <YOUR-COMMUNITY>snmp-server contact <YOUR-CONTACT>snmp-server location <
20年前,CPU的主流设计是流水线架构,增长流水线层级就可以提升性能。然而AMD的K8架构证明intel的发展方向是偏激的,它用更低的功耗和频率,战胜了使用31级流水线的Pentium 4 Intel被迫解散了NetBurst小组,承认了其失败,转而发展Core 2系列,借鉴了AMD将IMC加入CPU DIE的设计,大大加快内存的处理速度,解放了CPU性能。紧接着又转向了多核心处理器的研发,从单条流水线转向了并行流水线,打的AMD毫无还手之力。 十多年过去,截止目前的主流CP...
php memcached 使用教程在php提供的用于与memcached交互的扩展模块中有memcached与memcache,前者提供方法getAllKeys用于遍历所有Memcached服务器上的key,但是并不保证原子操作,而后者却没有提供任何方法,虽然在PHP官方文档中有人给出使用方法getExtendedStats来间接获取Memcached服务器上的所有key,但是给出的代码是有不少...
大家好,又见面了,我是夜阑的狗,本文是专栏【微信小程序开发教程】专栏的第23篇文章;今天开始学习微信小程序的第九天,开启新的征程,记录最美好的时刻,每天进步一点点。此专栏是我是夜阑的狗微信小程序开发过程的总结,希望能够加深自己的印象,以及帮助到其他的小伙伴。如果文章有什么需要改进的地方还请大佬不吝赐教。 也欢迎你,关注我。 !! 最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!下期再见。
linux设备驱动 驱动程序英文全称Device Driver,也称作设备驱动程序。驱动程序是用于计算机和外部设备通信的特殊程序,相当于软件和硬件的接口,通常只有操作系统能使用驱动程序。 在现代计算机体系结构中,操作系统并不直接于硬件打交道,而是通过驱动程序于硬件通信。设备驱动介绍 驱动程序是附加到操作系统的一段程序,通常用于硬件...