SpringCloudAlibaba基础二 Nacos注册中心

一 什么是 Nacos

官方:一个更易于构建云原生应用的动态服务发现(Nacos Discovery )、服务配置(Nacos Config)和服务管理平台。

注册中心+配置中心+服务管理 平台。

Nacos 的关键特性包括:

  • 服务发现和服务健康监测
  • 动态配置服务
  • 动态 DNS 服务
  • 服务及其元数据管理

二 Nacos注册中心

管理所有微服务、解决微服务之间调用关系错综复杂、难以维护的问题;

2.1 注册中心演变及其设计思想

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 Nacos注册中心架构

在这里插入图片描述

2.3 核心功能

Nacos Discovery
服务注册: Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如ip地址、端口等信息。Nacos Server接收到注册请求后,就会把这些元数据信息存储在一个双层的内存Map中。
服务心跳: 在服务注册后,Nacos Client会维护一个定时心跳来持续通知Nacos Server,说明服务一直处于可用状态,防止被剔除。默认5s发送一次心跳。
服务同步: Nacos Server集群之间会互相同步服务实例,用来保证服务信息的一致性。 leader raft
服务发现: 服务消费者(Nacos Client)在调用服务提供者的服务时,会发送一个REST请求给Nacos Server,获取上面注册的服务清单,并且缓存在Nacos Client本地,同时会在Nacos Client本地开启一个定时任务定时拉取服务端最新的注册表信息更新到本地缓存
服务健康检查: Nacos Server会开启一个定时任务用来检查注册服务实例的健康情况,对于超过15s没有收到客户端心跳的实例会将它的healthy属性置为false(客户端服务发现时不会发现),如果某个实例超过30秒没有收到心跳,直接剔除该实例(被剔除的实例如果恢复发送心跳则会重新注册)

主流的注册中心
CAP: C 一致性 A可用性 P 分区容错性
在这里插入图片描述

雪崩保护:

  • 保护阈值: 设置0-1之间的值,如 0.6,代表实例
    在这里插入图片描述

  • 临时实例(默认): spring.cloud.nacos.discovery.ephemeral =false, false为永久实例,即当服务宕机了也不会从服务列表中剔除

下图代表永久实例:
在这里插入图片描述

配置为永久实例的话,就存在健康实例和不健康实例;

健康实例数/总实例数 < 保护阈值 时,会把不健康的实例提供给系统使用。这样是为了防止访问量大的时候,把所有健康的服务都压垮。

1/2<0.6,所以此时服务就算不能使用,但是也会提供给其他服务调用。

在这里插入图片描述
结合负载均衡器 权重的机制, 设置的越大,为当前微服务分配的流量就越大
在这里插入图片描述
nacos常用配置:
在这里插入图片描述

更多配置:https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-discovery

三 Nacos Server部署

下载源码编译
源码下载地址:https://github.com/alibaba/nacos/ 可以用迅雷下载

cd nacos/
mvn ‐Prelease‐nacos clean install ‐U
cd nacos/distribution/target/

下载安装包
下载地址:https://github.com/alibaba/Nacos/releases

3.1 单机模式

官方文档: https://nacos.io/zh­cn/docs/deployment.html
解压,进入nacos目录

在这里插入图片描述
单机启动nacos,执行命令

#standalone:单机模式启动
bin/startup.sh ‐m standalone

也可以修改默认启动方式
在这里插入图片描述

在这里插入图片描述
不配置数据源的话,数据默认在内存里,可以配置数据源进行持久化
在这里插入图片描述

访问nocas的管理端:http://192.168.3.14:8848/nacos ,默认的用户名密码是 nocas/nocas
在这里插入图片描述

3.2 集群模式

  1. jdk1.8+
  2. maven 3.3+
  3. nginx 作为负载均衡
  4. mysql

官网文档: https://nacos.io/zh-cn/docs/v2/guide/admin/cluster-mode-quick-start.html
集群部署架构图
在这里插入图片描述

  1. 下载
mkdir nacos
wget https://github.com/alibaba/nacos/releases/download/1.4.1/nacos‐server‐1.4.1.tar.gz

也可以在官网先下载后,再上传到linux
下载地址:https://github.com/alibaba/Nacos/releases

创建多个nacos server,重复三次

tar ‐zxvf nacos‐server‐1.4.1.tar.gz
mv nacos nacos8849
  1. 单机搭建伪集群,复制nacos安装包,修改为nacos8849,nacos8850,nacos8851
    在这里插入图片描述
    以nacos8849为例,进入nacos8849目录,修改conf\application.properties的配置,使用外置数据源 要使用mysql5.7+(包括)
#使用外置mysql数据源
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconn
ect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root

在这里插入图片描述
nacos解压后的文件里提供了sql脚本,这个脚本需要在mysql里执行(创建mysql数据库,sql文件位置:conf\nacos-­mysql.sql)
在这里插入图片描述

将conf\cluster.conf.example改为cluster.conf,添加节点配置

# ip:port
192.168.65.220:8849
192.168.65.220:8850
192.168.65.220:8851

nacos8850,nacos8851 按同样的方式配置。

如果出现内存不足:修改启动脚本(bin\startup.sh)的jvm参数

JAVA_OPT="${JAVA_OPT} ‐server ‐Xms512m ‐Xmx512m ‐Xmn256 ‐XX:MetaspaceSize=64m ‐XX:MaxMetaspaceSize=128m"

在这里插入图片描述
分别启动nacos8849,nacos8850,nacos8851;
以nacos8849为例,进入nacos8849目录,启动nacos

bin/startup.sh

在这里插入图片描述
测试:
登录 http://192.168.3.14:8849/nacos ,用户名和密码都是nacos
在这里插入图片描述
下载nginx

#添加官方源仓库
yum install ‐y yum‐utils
yum‐config‐manager ‐‐add‐repo https://openresty.org/package/centos/openresty.repo

#安装openresty
yum install ‐y openresty

cd /usr/local/openresty/

官方推荐,nginx反向代理
192.168.56.220:8847/nacos/

upstream nacoscluster {
 server 127.0.0.1:8849;
 server 127.0.0.1:8850;
 server 127.0.0.1:8851;
}
 server {
 listen 8847;
 server_name localhost;

 location /nacos/{
 	proxy_pass http://nacoscluster/nacos/;
   }
 }

在这里插入图片描述
访问: http://192.168.3.14:8847/nacos
此时,把项目里的配置nacos的地址改为nginx地址即可:
在这里插入图片描述

3.3 prometheus+grafana监控Nacos(扩展)

https://nacos.io/zh-cn/docs/monitor-guide.html
Nacos 0.8.0版本完善了监控系统,支持通过暴露metrics数据接入第三方监控系统监控Nacos运行状态。

  1. nacos暴露metrics数据
management.endpoints.web.exposure.include=*

测试: http://localhost:8848/nacos/actuator/prometheus
在这里插入图片描述
2. prometheus采集Nacos metrics数据
启动prometheus服务

prometheus.exe ‐‐config.file=prometheus.yml

测试:http://localhost:9090/graph
在这里插入图片描述
3. grafana展示metrics数据
测试: http://localhost:3000/
在这里插入图片描述

四 Spring Cloud Alibaba Nacos快速开始

4.1 确认自己需要的版本

在这里插入图片描述

4.2 搭建Nacos-client服务

引入依赖
当前项目, 引入依赖

<dependency>
	 <groupId>com.alibaba.cloud</groupId>
	 <artifactId>spring‐cloud‐starter‐alibaba‐nacos‐discovery</artifactId>
</dependency>

由于父项目里指定了SpringCloudAlibaba的版本了,所以这里不需要再写nacos的版本了
在这里插入图片描述

application.properties中配置

server.port=8002
#微服务名称
spring.application.name=service‐user
#配置 Nacos server 的地址
spring.cloud.nacos.discovery.server‐addr=localhost:8848

或者:
在这里插入图片描述

比较旧的SpringCloudAlibaba,需要在启动类加这个注解@EnableDiscoveryClient,新版后不需要加了
在这里插入图片描述

启动springboot应用,nacos管理端界面查看是否成功注册
在这里插入图片描述
测试
使用RestTemplate进行服务调用,可以使用微服务名称 (spring.application.name)

String url = "http://service‐order/order/findOrderByUserId/"+id;
List<Order> orderList = restTemplate.getForObject(url, List.class);

注意:需要添加@LoadBalanced注解,因为nacos本身无法解析服务名与地址映射关系的,需要依赖负载均衡器来解析,默认轮询

 @Bean
 @LoadBalanced
 public RestTemplate restTemplate() {
	 return new RestTemplate();
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【教程】让小爱音箱Play增强版接入Mi-GPT

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 项目地址&#xff1a;https://github.com/idootop/mi-gpt MiIOT&#xff1a;小米小爱音箱Play 增强版 - 产品规格 - Xiaomi Miot Spec 实现效果图&…

Eslint配置指南

1. Eslint配置指南 1.1. 安装 ESLint1.2. 生成配置文件1.3. 修改配置文件1.4. 创建 .eslintignore 文件1.5. 运行 ESLint1.6. 整合到编辑器/IDE1.7. 自动修复 2. 配置prettier 2.1. 安装依赖包2.2. .prettierrc.json添加规则2.3. .prettierignore忽略文件2.4. 保存自动格式化 3…

二进制中1的个数-java

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、二进制中1的个数 二、算法思路 1.将一个整数转化成二进制形式 2.查询一个数的二进制数中的第k位是多少 3.lowbit(x)操作 三、代码如下 1.代码如下&…

Docker的资源限制

文章目录 一、什么是资源限制1、Docker的资源限制2、内核支持Linux功能3、OOM异常4、调整/设置进程OOM评分和优先级4.1、/proc/PID/oom_score_adj4.2、/proc/PID/oom_adj4.3、/proc/PID/oom_score 二、容器的内存限制1、实现原理2、命令格式及指令参数2.1、命令格式2.2、指令参…

docker部署redis实践

1.拉取redis镜像 # 拉取镜像 sudo docker pull redis2.创建映射持久化目录 # 创建目录 sudo mkdir -p $PWD/redis/{conf,data}3. 运行redis 容器&#xff0c;查看当前redis 版本号 # 运行 sudo docker run --name redis -d -p 6379:6379 redis # 查看版本号 sudo docker ex…

coap:安装libcoap

# 称最新版的openssl 安装依赖东东 yum install -y libtool doxygen asciidoc perl-IPC-Cmd下载解压 cd /chz/install/openssl wget https://www.openssl.org/source/openssl-3.3.1.tar.gz tar zxvf openssl-3.3.1.tar.gz编译安装 cd /chz/install/openssl/openssl-3.3.1 .…

数据挖掘--聚类分析:基本概念和方法

数据挖掘--引论 数据挖掘--认识数据 数据挖掘--数据预处理 数据挖掘--数据仓库与联机分析处理 数据挖掘--挖掘频繁模式、关联和相关性&#xff1a;基本概念和方法 数据挖掘--分类 数据挖掘--聚类分析&#xff1a;基本概念和方法 聚类分析 聚类分析是把一个数据对象&…

计算机组成原理复习笔记

前言 就是按照考试的题型写的总结 非常应试版 题型 一、进制转换 只考 十进制 二进制 十六进制 之间的相互转换 一个个看 &#xff08;1&#xff09;十进制 转其他 转二进制&#xff1a;除以2 从小到大取余数&#xff08;0或1&#xff09; 转十六进制 &#xff1a; 除以1…

进军rust:从0开始学习rust语法

一.变量类型 Rust语言中的基础数据类型有以下几种&#xff1a; 1.整数型 整数型简称整型&#xff0c;按照比特位的长度和有无符号位可以分为以下几种 isize和usize两种整数类型是用来衡量数据大小的&#xff0c;它们的位长度取决于所运行的目标平台&#xff0c;如果是32位架…

如何在 iPhone 上恢复已删除的短信

本文介绍如何检索已删除的短信和 iMessage 以及恢复丢失的消息。说明适用于 iOS 17 及更高版本。 如何在 iOS 17及更高版本中恢复文本 恢复已删除短信的最简单方法是使用 iOS 17。从删除短信到恢复它有 30 到 40 天的时间。 在“信息”的对话屏幕中&#xff0c;选择“过滤器”…

老旧机子装linux——Xubuntu

目录 前言 正文 下载系统 ​编辑 制作系统盘&#xff1a; 安装界面 Xubuntu ​编辑 lubuntu 后语 前言 有两台电脑&#xff0c;一台装了Ubuntu22&#xff0c;一台装了debuntu。虽然debuntu界面与乌班图大体一样&#xff0c;但是编译器好像有点区别。由于机子为10年前的老…

二分【1】二分查找框架 查找指定元素

目录 二分查找 基本思想 几种情况汇总 一。严格递增序列 1.查找本身 2.查找第一个大于等于自己的 3.查找第一个大于自己的 4.严格递减序列 二。有重复元素 1.取其中第一个出现的 2.取其中最后一个出现的 二分查找 基本思想 几种情况汇总 一。严格递增序列 1.查找本身…

【UML用户指南】-11-对高级结构建模-高级关系

目录 1、依赖&#xff08;dependency&#xff09; 1.1.1、绑定&#xff08;bind&#xff09; 1.1.2、导出&#xff08;derive&#xff09; 1.1.3、允许&#xff08;permit&#xff09; 1.1.4、实例&#xff08;instanceOf&#xff09; 1.1.5、实例化&#xff08;instanti…

解锁俄罗斯市场:如何选择优质的俄罗斯云服务器

在当前云计算市场上&#xff0c;很多大型的云厂商并没有俄罗斯服务器的云节点&#xff0c;这给许多企业在拓展海外业务时带来了一定的困扰。然而&#xff0c;俄罗斯作为一个经济发展迅速的国家&#xff0c;其市场潜力不可忽视。因此&#xff0c;选择一台优质的俄罗斯云服务器成…

Docker搭建可道云

Docker搭建可道云&#xff08;存储&#xff09; 文章目录 Docker搭建可道云&#xff08;存储&#xff09;介绍资源列表基础环境一、安装Docker二、配置Docker加速器三、搭建可道云私有云盘3.1、编写Dockerfile3.2、上传资源到指定目录3.3、查看目录下所有资源 四、构建镜像五、…

Java | Leetcode Java题解之第140题单词拆分II

题目&#xff1a; 题解&#xff1a; class Solution {public List<String> wordBreak(String s, List<String> wordDict) {Map<Integer, List<List<String>>> map new HashMap<Integer, List<List<String>>>();List<List…

HC05蓝牙模块与笔记本蓝牙连接

文章目录 1. 电脑和蓝牙模块连接 2. 串口软件调试 1. 电脑和蓝牙模块连接 HC05支持SPP协议&#xff0c;使用PC主机自带蓝牙&#xff0c;或者笔记本加蓝牙适配器。与HC05连接后&#xff0c;可在电脑端虚拟出串口&#xff0c;这样上位机软件就可以像操作串口一样与HC05通信。对…

Kafka监控系统efak的安装

下载地址Kafka Eaglehttp://download.kafka-eagle.org/下载地址连接不稳定&#xff0c;可以多次尝试直到成功连接下载 1.解压安装包并重命名 tar -zxvf kafka-eagle-bin-3.0.1.tar.gz 查看到解压后包含一个安装包&#xff0c;再解压 tar -zxvf efak-web-3.0.1-bin.tar.gz 移…

Spring Boot集成pmd插件快速入门Demo

1.什么是pmd插件&#xff1f; PMD 插件允许您在项目的源代码上自动运行PMD代码分析工具&#xff0c;并生成带有其结果的站点报告。它还支持与 PMD 一起分发的单独的复制/粘贴检测器工具&#xff08;或 CPD&#xff09;。 此版本的 Maven PMD 插件使用 PMD 6.42.0 并且需要 Jav…

在Java中使用SeleniumAPI,超详细

Java中 Selenium相关操作 1 定位元素 1.1 css选择器定位元素 就是定位到页面的元素&#xff0c;本质上就是一个一个的语法 下面举几个具体的例子&#xff1a; 类选择器 按照给定的 class 属性的值&#xff0c;选择所有匹配的元素。 语法&#xff1a;.classname 例子&am…