SpringCloud Nacos服务注册中心和配置中心

一、什么是Nacos?

官方介绍是这样的:

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构(例如微服务范式、云原生范式)的服务基础设施。

官方网址:http://nacos.io

二、怎么搭建一个Nacos服务?

(1)先下载一个Nacos服务中间件,然后解压

最新版可以去官网下载:Releases · alibaba/nacos · GitHub

(2)解压之后再bin目录下点击startup.cmd运行(如果使用的是Linux系统则点击startup.sh)

启动后界面如下:

输入网址:http://localhost:8848/nacos/#/login      登录名和密码都是:nacos

登录后界面如下:

 其中【配置列表】可作为配置中心,【服务列表】可作为注册中心

三、什么是配置中心?什么是服务注册中心?

(1)什么是配置中心?

使用过SpringBoot项目的开发者都知道,SpringBoot有一个application.yml或者application.properties作为配置文件,里面有着各种各样的配置,比如数据库的url、username等。但是这个配置文件在文件打包之后就无法修改了,所以这时就需要一个配置中心来管理这些文件以达到配置动态更新的效果。

从微服务的角度来说,微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的,动态的配置管理设施是必不可少的。

(2)什么是注册中心?

注册中心主要包括服务注册和服务发现,可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用。

提高篇:使用Nacos作为注册中心与配置中心

一、新建一个SpringBoot项目:nacos_server

项目结构图如下:

二、在pom.xml文件中添加如下内容:

<dependencies><!--web组件--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--actuator--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--SpringCloud-Nacos相关--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>com.alibaba.boot</groupId><artifactId>nacos-config-spring-boot-starter</artifactId></dependency><dependency><groupId>com.alibaba.boot</groupId><artifactId>nacos-config-spring-boot-actuator</artifactId></dependency><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-spring-context</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--MySQL--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>
</dependencies>

其中SpringCloud的版本为:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Greenwich.SR2</version><type>pom</type><scope>import</scope>
</dependency>
三、在resources目录下新建application.yml与bootstarp.yml配置文件

bootstarp.yml与application.yml的区别:

1、加载顺序

  • bootstrap.yml(bootstrap.properties)先加载
  • application.yml(application.properties)后加载

2、配置区别

  • bootstrap.yml 可以理解成系统级别的一些参数配置,这些参数一般是不会变动的。
  • application.yml 可以用来定义应用级别的,如果搭配 spring-cloud-config 使用 application.yml 里面定义的文件可以实现动态替换。

bootstarp.yml内容如下:

spring:cloud:nacos:discovery:server-addr: 127.0.0.1:8848  #服务注册地址
#        ip: 127.0.0.1application:name: nacos_server

application.yml内容如下:

server:port: 9668
nacos:config:server-addr: 127.0.0.1:8848group: NAOCS-SPRING-CLOUD-SERVICEfile-extension: propertiesdata-id: mysql-config.properties
management:endpoints:web:exposure:include: '*'

四、在NacosServerApplication.java 启动类中加上@EnableDiscoveryClient注解

五、在文件夹config下新建两个类:DatabaseConfig与MybatisConfiguration

DatabaseConfig代码如下:

package com.wzhi.config;import com.alibaba.nacos.api.config.annotation.NacosValue;
import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySource;
import lombok.Data;
import org.springframework.stereotype.Component;/*** 从nacos配置中心中获取数据库连接配置** @author wzhi*/
@Component
@Data
@NacosPropertySource(dataId = "${nacos.config.data-id}", groupId = "${nacos.config.group}", autoRefreshed = true)
public class DatabaseConfig {@NacosValue(value = "${driver_class_name}", autoRefreshed = true)private String driverClassName;@NacosValue(value = "${url}", autoRefreshed = true)private String url;@NacosValue(value = "${user_name}", autoRefreshed = true)private String username;@NacosValue(value = "${password}", autoRefreshed = true)private String password;}

MybatisConfiguration代码如下:

package com.wzhi.config;import com.zaxxer.hikari.HikariDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;import javax.sql.DataSource;/*** 配置Mybatis和连接池* @author wzhi*/
@Configuration
@MapperScan(basePackages={"com.wzhi.dao"})
public class MybatisConfiguration {@Autowiredprivate DatabaseConfig dataBaseConfig;@Beanpublic DataSource dataSource() {HikariDataSource dataSource = new HikariDataSource();System.out.println("获取到的配置文件内容为:"+dataBaseConfig);dataSource.setDriverClassName(dataBaseConfig.getDriverClassName());dataSource.setJdbcUrl(dataBaseConfig.getUrl());dataSource.setUsername(dataBaseConfig.getUsername());dataSource.setPassword(dataBaseConfig.getPassword());return dataSource;}@Beanpublic SqlSessionFactory sqlSessionFactoryBean() throws Exception {SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();sqlSessionFactoryBean.setDataSource(dataSource());ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
//        sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:mybatis/mapper/*.xml"));return sqlSessionFactoryBean.getObject();}}

运行之后,有如下打印内容,说明配置中心搭建成功:

同时Nacos管理界面如下,则说明服务已经注册

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/625186.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用python批量实现文件夹中所有pdf转成图片并插入到一个word文件中

要实现这个任务&#xff0c;你需要使用Python的几个库&#xff1a;PyPDF2 用于处理PDF文件&#xff0c;python-docx 用于操作Word文件&#xff0c;PIL&#xff08;或Pillow&#xff09;用于处理图片。 首先&#xff0c;确保你已经安装了这些库。如果没有&#xff0c;你可以使用…

Java 方法以及在计算机内部的调用问题

修饰符 返回值类型 方法名( 形参列表 ){ 方法体代码(需要执行的功能代码) return 返回值; } 方法在内种没有先后顺序&#xff0c;但是不能把一个方法定义在另一个方法中。 方法的返回值类型写void&#xff08;无返回申明&#xff09;时&#xff0c;方法内不能使用return返回数…

Linux中放大字体

环境&#xff1a;VMware17Pro&#xff0c;Ubuntu22.04 在显示设置外观中只看到图标放大的调整&#xff0c;没看到字体大小设置 不按照常规设置&#xff0c;点开下面的辅助功能->大号文本&#xff08;没有设置具体字号的选项&#xff0c;但是可以放大&#xff09; 效果图如下…

day-10 删除排序链表中的重复元素

思路 先统计每个值出现的次数&#xff0c;然后将出现次数为一的节点链接为一个链表即可 解题方法 while(t!null){ //统计每个值出现次数 arr[t.val100]1; tt.next; } while(t!null&&arr[t.val100]!1) tt.next;//确定返回的头结点 ttt; while(t!null&&t.next…

项目解决方案:多个分厂的视频监控汇聚到总厂

目 录 1、概述 2、建设目标及需求 2.1 建设目标 2.2 需求描述 2.3 需求分析 3. 设计依据与设计原则 3.1 设计依据 3.2设计原则 1、先进性与适用性 2、经济性与实用性 3、可靠性与安全性 4、开放性 5、可扩充性 6、追求最优化的系统设备配置…

Zynq7020 使用 Video Processing Subsystem 实现图像缩放

1、前言 没玩过图像缩放都不好意思说自己玩儿过FPGA&#xff0c;这是CSDN某大佬说过的一句话&#xff0c;鄙人深信不疑。。。 目前市面上主流的FPGA图像缩放方案如下&#xff1a;1&#xff1a;Xilinx的HLS方案&#xff0c;该方案简单&#xff0c;易于实现&#xff0c;但只能用…

MySQL语句 | 使用DATE_FORMAT()对查询结果按日、周、月分组统计

文章目录 语法举个通用的例子 按照年月日进行分组统计举个通用的例子举个实际的例子 在MySQL中&#xff0c; DATE_FORMAT() 函数可用于将日期按照指定的格式进行格式化&#xff0c;也可用于对数据记录按照不同的时间维度进行分组 语法 DATE_FORMAT(date, format)其中&#xf…

java+vue基于Spring Boot的渔船出海及海货统计系统

该渔船出海及海货统计系统采用B/S架构、前后端分离进行设计&#xff0c;并采用java语言以及springboot框架进行开发。该系统主要设计并完成了管理过程中的用户注册登录、个人信息修改、用户信息、渔船信息、渔船航班、海货价格、渔船海货、非法举报、渔船黑名单等功能。该系统操…

Elasticsearch安装Windows版

目录 1.&#xff1a;下载安装包&#xff0c;选择指定的版本&#xff0c;这里选择了7.8.0&#xff0c;官网下载地址&#xff1a; ​编辑 2&#xff1a;下载好之后解压&#xff0c;解压之后是这样的&#xff1a; 3&#xff1a;配置环境变量&#xff0c;跟JDK一样&#xff0c;…

登录页加载图片失败的默认图片占位图如何实现?<img>

问题&#xff1a; 登录页动态显示不同项目的图片的时候&#xff0c;若环境变量的图片加载失败&#xff0c;如何显示占位图logo? 解决&#xff1a; <img :οnerrοr"方法" />注意onerror的是方法 关键代码&#xff1a; <img draggable"false"…

rime中州韵小狼毫 联想词组 滤镜

教程目录&#xff1a;rime中州韵小狼毫须鼠管安装配置教程 保姆级教程 100增强功能配置教程 在 rime中州韵小狼毫 自定义词典 一文中&#xff0c;我们分享了如何在rime中州韵小狼毫须鼠管输入法中定义用户自定义词典&#xff1b;通过自定义词典&#xff0c;我们可以很方便的在…

*(长期更新)软考网络工程师学习笔记——Section 22 无线局域网

目录 一、IEEE 802.11的定义二、IEEE 802.11系列标准三、IEEE 802.11的两种工作模式四、CDMA/CA协议&#xff08;一&#xff09;CDMA/CA协议的定义&#xff08;二&#xff09;CDMA/CA协议的过程 五、AC与AP&#xff08;一&#xff09;接入控制器AC&#xff08;二&#xff09;无…

MySQL解决海量数据和并发性的方案——分库分表

分库分表其实是两个事情&#xff0c;为了解决的东西实际上也是两个&#xff0c;但是一定要注意&#xff0c;不到最后万不得已&#xff0c;不要用分库分表&#xff0c;因为这会对数据查询有极大限制。 数据量太大查询慢的问题。 这里面我们讲的「查询」其实 主要是事务中的查询…

如何实现图片压缩

文章目录 1、canvas实现图片压缩2、其他 1、canvas实现图片压缩 canvas 实现图片压缩&#xff0c;主要是使用 canvas 的drawImage 方法 具体思路 拿到用户上传的文件转成base64创建一个 Image&#xff0c;主要是获取到这个图片的宽度和高度创建一个 2D 的画布&#xff0c;画布…

一文搞懂系列——Linux C线程池技术

背景 最近在走读诊断项目代码时&#xff0c;发现其用到了线程池技术&#xff0c;感觉耳目一新。以前基本只是听过线程池&#xff0c;但是并没有实际应用。对它有一丝的好奇&#xff0c;于是趁这个机会深入了解一下线程池的实现原理。 线程池的优点 线程池出现的背景&#xf…

RocketMQ源码阅读-Message拉取与消费-Broker篇

RocketMQ源码阅读-Message拉取与消费-Broker篇 1. ConsumeQueue是什么2. Message重放2.1 从MappedFile文件读取Message到ConsumeQueue2.2 ConsumeQueue持久化 3. Broker提供的拉取接口3.1 请求Header3.2 拉取消息接口3.3 拉取失败处理 4. Broker提供的更新消费进度接口5. Broke…

C++之类的静态成员

C静态成员是指在类中使用static关键字声明的成员变量或成员函数。静态成员属于类本身&#xff0c;而不是类的对象。它们在所有对象之间共享&#xff0c;只有一份内存空间。静态成员在类外初始化&#xff0c;且只能访问一次。 关键字 static 意味着类中只有一个该成员的实例。静…

Redis面试题16

Redis 的主从复制是什么&#xff1f;它有什么作用&#xff1f; 答&#xff1a;主从复制是指 Redis 中的主节点将自己的数据复制给从节点的过程。主从复制为 Redis 提供了数据的冗余备份、读写分离和故障恢复等功能。 主从复制的过程如下&#xff1a; 主节点将自己的数据变更操…

短视频IP运营流程架构SOP模板PPT

【干货资料持续更新&#xff0c;以防走丢】 短视频IP运营流程架构SOP模板PPT 部分资料预览 资料部分是网络整理&#xff0c;仅供学习参考。 抖音运营资料合集&#xff08;完整资料包含以下内容&#xff09; 目录 抖音15秒短视频剧本创作公式 在抖音这个短视频平台上&#…

【FastAPI】路径参数

路径参数 from fastapi import FastAPIapp FastAPI()app.get("/items/{item_id}") async def read_item(item_id):return {"item_id": item_id}其中{item_id}就为路径参数 运行以上程序当访问 &#xff1a;http://127.0.0.1:8000/items/fastapi时候 将会…