微服务——Eureka和Nacos

news2024/11/25 15:52:15

目录

提供者和消费者

​编辑 Eureka注册中心——远程调用的问题

 Eureka注册中心——原理分析

  Eureka注册中心——搭建eureka服务

步骤:

  Eureka注册中心——服务注册

  Eureka注册中心——服务发现

总结

 Ribbon负载均衡——原理

流程:

 Ribbon负载均衡——策略

 Ribbon负载均衡——饥饿加载

 总结

​编辑 Nacos注册中心——认识和安装Nacos

docker拉取镜像

创建日志映射文件 

启动Nacos

访问Nacos

 账号密码

windows安装时的启动方法

  Nacos注册中心——快速入门

  Nacos注册中心——服务多级存储模型

服务集群属性配置 

  Nacos注册中心——NacosRule负载均衡

 Nacos注册中心——服务实例的权重设置

  Nacos注册中心——环境隔离

Nacos和Eureka的对比


提供者和消费者

 针对上面这种情况,要看B相对于谁而言,B既可以是提供者,也可以是消费者。

 Eureka注册中心——远程调用的问题

在之前的案例里面

url出现了硬编码,假如服务换了个服务器,每次都要重新修改代码和打包。

而且如果一个服务使用了多实例形成集群,url就不能指定了。

 Eureka注册中心——原理分析

eureka的客户端包含了消费者和提供者,客户端启动时都会到服务端注册。

消费者要取到提供者的地址信息可以到eurka服务端去找。

并且每个客户都会向服务端发送心跳请求,如果不发了,默认宕机,就会剔除客户信息

 

  Eureka注册中心——搭建eureka服务

步骤:

 这里不需要指定eureka版本是因为在父工程已经通过版本依赖管理指定了版本信息。

创建好后通过浏览器直接访问

可以看见有一个“注册到eureka的实例”,这里现在只有一个服务端,能看见计算机名和端口在后面。 

  Eureka注册中心——服务注册

步骤

将两个服务配置完之后可以看见两个客户端

一个服务启动多个实例

  Eureka注册中心——服务发现

 完成之后重启orderservice.

运行两次之后两个实例分别收到一次查询请求。

总结

 Ribbon负载均衡——原理

流程:

加上那个@LoadBalanced注解后,会有如下的一个拦截器拦截所有来自客户端的http请求。

会拿到userservice根据设定好的规则进行对url和端口号的转换和负载均衡访问。

 

  

 Ribbon负载均衡——策略

在上面可以看见IRule接口定义规则。

有一个RandomRule随机和RoundRobinRule轮询。轮询下还有个根据权重轮询。

默认规则是ZoneAvoidanceRule,其父类中有轮询规则。

常见规则

 

第一种方案是作用于全局的,定义了一个IRule覆盖默认的IRule,不管调用哪一个微服务都是随机。

第二种方案可以针对某一种服务进行负载均衡的规则覆盖 

 Ribbon负载均衡——饥饿加载

 总结

 Nacos注册中心——认识和安装Nacos

 这里的安装使用docker容器化部署。

在云服务器上。

docker拉取镜像

docker pull nacos/nacos-server

创建日志映射文件 

mkdir -p /home/nacos/logs

启动Nacos

docker run \
--name nacos -itd \
-e MODE=standalone \
-p 8848:8848 \
-v /home/nacos/logs:/home/nacos/logs  \
nacos/nacos-server
  1. -p:指定了宿主机端口为8848
  2. -v:指定宿主机与nacos的日志目录映射
  3. -e:指定环境变量(或–env)。MODE=standalone: 单机, MODE=cluster:集群(默认模式)

访问Nacos

http://服务器ip:8848/nacos

 账号密码

nacos:nacos

tmd, 这个nacos放在云端,本地的项目怎么能让云端的东西负载均衡?

还真可以。

windows安装时的启动方法

找bin目录下打开cmd运行

startup.cmd -m standalone

  Nacos注册中心——快速入门

使用Eureka和Nacos时代码不用怎么变化。

一个是依赖改变,一个是地址改变。

  yml配置文件注释eureka的配置,使用nacos的配置

spring:
  cloud:
    nacos:
      server-addr: localhost:8848 #nacos服务地址

修改完之后就可以看见服务列表上出现了对应的项目和实例

最后,这里用云服务器的nacos也照样可以访问,这里版本不同是因为docker拉取默认拉最新版本的。并且负载均衡同样正常执行。 

  Nacos注册中心——服务多级存储模型

 

在某个实例下可以看见默认是没有集群。

服务集群属性配置 

 现在user-service有三个实例,先修改为gz然后启动1和2

 再修改为hz然后启动3

然后在nacos控制台上就可以看见这个项目的三个实例分布在两个不同集群内

 

  Nacos注册中心——NacosRule负载均衡

为里实现order-service远程调用user-service时优先选择本地集群,需要给order-service配置集群属性。

 然后重启order-service。就可以在nacos控制台看见order-service也在gz集群中了。

目前还是轮询访问,因为没有配置IRule.

配置负载均衡规则

如果这里的没有实现在同一个地区的集群访问,可能是因为nacos版本过高,我这里就是,用了服务器上最新的nacos版本,不再支持这里旧的ribbon的负载均衡策略设置。用来提供的低版本nacos就又可以了。 

 Spring Cloud Nacos 2021使用LoadBalancer + Nacos做负载均衡 - 简书

 我是因为写错了要访问的服务名称,所以不关云服务上的nacos版本的事情。

userserver: #要做配置的微服务名称
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule #负载均衡规则

nacosrule优先选择本地集群,在本地集群的多个实例中优先选择随机策略。

并且在本地集群没有实例时会选择其他集群的服务,并且会给出警告让运维及时启动本地集群里面挂的服务。

加了一个注解会一直报错

 The maximum number of tolerable server reconnection errors has been reached

<dependency><groupId>com.alibaba.cloud</groupId>

    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

 Nacos注册中心——服务实例的权重设置

 

 置为0就会导致这个实例访问不了。

 

  Nacos注册中心——环境隔离

服务实例之间隔离之后就无法访问。Group是分组的意思,业务相关度高的服务可以放到一个组里面。

在nacos控制台可以看见有一个public的保留空间。原先的项目实例都在这个空间里面

 

新建一个命名空间

 

 修改一个服务的命名空间

 然后重启order-service。

然后重新访问order-service就有如下错误:找不到可用实例

 

  

 

Nacos和Eureka的对比

 nacos会将提供者划分为临时实例或者非临时实例。

非临时实例无响应时不会从列表剔除,而是等其回复健康。并且主动向消费者推送消息。

 

 

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

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

相关文章

ChatGPT:人工智能语言模型的革命性进步

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

idea中回退远程push过的提交(详细图文操作)

目录 git基本知识回顾git中本地文件保存的3个地方工作区暂存区本地仓库代码提交到远程仓库的流转 reset命令的3个参数softmixedhard 具体操作模拟两次提交远程分支回退到第一次提交第一次reset hard第二次reset soft/mixed git基本知识回顾 git中本地文件保存的3个地方 工作区…

CSS :nth-child

CSS :nth-child :nth-child 伪类根据元素在同级元素中的位置来匹配元素. CSS :nth-child 语法 值是关键词 odd/evenAnB最新的 [of S] 语法权重 浏览器兼容性 很简单的例子, 来直觉上理解这个伪类的意思 <ul><li class"me">Apple</li><li>B…

陪诊小程序搭建|陪诊接单平台开发|医疗陪诊小程序

陪诊小程序是一种提供陪同就诊服务的在线平台&#xff0c;具有广阔的发展前景。下面是对陪诊小程序发展前景的介绍&#xff1a;   随着社会的发展和人们生活水平的提高&#xff0c;人们对医疗服务的需求也越来越高。然而&#xff0c;由于工作繁忙、时间紧张等原因&#xff0c…

【C++】通过栈和队列学会使用适配器和优先队列学会仿函数的使用

&#x1f307;个人主页&#xff1a;平凡的小苏 &#x1f4da;学习格言&#xff1a;命运给你一个低的起点&#xff0c;是想看你精彩的翻盘&#xff0c;而不是让你自甘堕落&#xff0c;脚下的路虽然难走&#xff0c;但我还能走&#xff0c;比起向阳而生&#xff0c;我更想尝试逆风…

网络超时导致namenode被kill的定位

交换机升级导致部分网络通信超时, 集群的namenode主从切换后,主namenode进程被杀死。 网络问题导致namenode与zk间的连接超时触发了hadoop集群的防脑裂机制而主动kill掉了超时的namenode进程。 日志分析发现zk和namenode之间的网络连接超时: 超时触发了namenode切换,并将超时…

flex布局进阶

推荐看一下阮一峰老师的flex布局博客【Flex 布局教程&#xff1a;语法篇】(https://www.ruanyifeng.com/blog/2015/07/flex-grammar.html#)&#xff0c;讲的非常清晰。 一、多行布局大小相同的子盒子技巧 使用弹性布局实现多行均匀布局时&#xff0c;如若子盒子数量不能被每行…

AI Chat 设计模式:9. 命令模式

本文是该系列的第九篇&#xff0c;采用问答式的方式展开&#xff0c;问题由我提出&#xff0c;答案由 Chat AI 作出&#xff0c;灰色背景的文字则主要是我的一些思考和补充。 问题列表 Q.1 介绍下命令模式A.1Q.2 详细说说命令模式适用于啥场景呢A.2Q.3 举一个命令模式的例子&a…

网络知识点之-BGP协议

边界网关协议&#xff08;BGP&#xff09;是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议&#xff0c;也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系…

SQL 连接(JOIN)

SQL 连接&#xff08;JOIN&#xff09;是一种用于将两个或多个表中的数据相互匹配的操作&#xff0c;从而形成一个新的数据集合。JOIN 操作常用于查询和分析数据库中的数据&#xff0c;可以根据不同的连接方式返回不同的结果集。 SQL join 用于把来自两个或多个表的行结合起来…

明解STM32—GPIO理论基础知识篇之寄存器原理​

一、前言 在之前的STM32的GPIO理论基础知识中&#xff0c;分别对基本结构和工作模式进行了详细的介绍。GPIO基本结构中主要对GPIO内部的各个功能电路逐一的进行的分析&#xff1b;GPIO工作模式中主要介绍GPIO应用在不同的使用场景下&#xff0c;GPIO端口的静态特征配置和动态的…

FinClip 小程序桌面端商店上线啦

随着技术的不断进步和用户需求的增长&#xff0c;移动应用程序市场日益蓬勃发展。 然而&#xff0c;开发者们面临着一个严峻的挑战&#xff1a;“如何在不同的操作系统上开发和发布应用程序&#xff0c;以满足不同用户群体的需求&#xff1f;”在这方面&#xff0c;使用小程序…

【C++】深层次了解继承,从基础概念到复杂菱形继承问题(文章结尾有菱形继承常见面试题)

1.继承的概念及定义 继承的概念 继承是面向对象设计使代码可以复用的重要手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生的类&#xff0c;称为派生类。 继承的概念并不是固定的&#xff0c;只要能够通过自己的语言…

浅聊webpack的工作原理

参考文献: https://webpack.docschina.org/concepts/ 简述一下 WebPack 是一个模块打包工具&#xff0c;可以使用 WebPack 管理模块。在 webpack 看来&#xff0c;项目里所有资源皆模块&#xff0c;分析模块间的依赖关系&#xff0c;最终编绎输出模块为 HTML、JavaScript、CS…

C++OpenCV(5):图像模糊操作(四种滤波方法)

&#x1f506; 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 &#x1f506; OpenCV项目地址及源代码&#xff1a;点击这里 文章目录 图像模糊操作均值滤波高斯滤波中值滤波双边滤波 图像模糊操作 关于图片的噪声&#xff1a;指的是图片中存在的不必要或者多余的干扰数…

MySQL-多表查询-案例1

案例 根据需求完成多表查询的SQL语句的编写将资料汇中准备好的数据的SQL脚本导入到数据库中准备数据中各表的关系如下 具体代码 -- 分类表 create table category(id int unsigned primary key auto_increment comment 主键ID,name varchar(20) not null unique comment 分类名…

ARM练习

通过汇编语言完成LED1-3循环点亮练习 .text .global _start _start: /**********LED1点灯**************/ /*初始化RCC*/ RCC_INIT:LDR R0,0X50000A28LDR R1,[R0]ORR R1,R1,#(0X1<<4)ORR R2,R1,#(0x1<<5)STR R1,[R0]STR R2,[R0]LED1_INIT:设置输出模式LDR R0,0X5…

Spring(10) 生成和替换Banner启动图案

目录 1.背景2.推荐网站3.如何集成到spring项目中4.效果展示 1.背景 我们在启动 Spring 项目的时候经常会看到一个 Spring 字样的启动图案。如下所示&#xff1a; 如果我们也想根据我们的内容生成这样的图案&#xff0c;应该怎么操作呢&#xff1f; 2.推荐网站 可以生成这种图…

Docker 制作镜像

自定义制作镜像 我们学习了Dockerfile语法,那么如何应用Dockerfile制作自定义的镜像呢?那今天我们就来实战一下,以主流的微服务Jar 为例子,开启我们自定义制作镜像之旅。 建立简单Springboot项目,并打包成jar 简历demo项目(访问路径 /start/springboot)配置端口,以及利…

P2196 [NOIP1996 提高组] 挖地雷

[NOIP1996 提高组] 挖地雷 题目描述 在一个地图上有 N ( N ≤ 20 ) N\ (N \le 20) N (N≤20) 个地窖&#xff0c;每个地窖中埋有一定数量的地雷。同时&#xff0c;给出地窖之间的连接路径。当地窖及其连接的数据给出之后&#xff0c;某人可以从任一处开始挖地雷&#xff0c;…