微服务——Eureka和Nacos

news/2024/12/29 20:42:19/

目录

提供者和消费者

​编辑 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.ppmy.cn/news/971081.html

相关文章

如何在Visual Studio中安装.net6.0 或者 将在Visual Studio中将.net 5.0更新为6.0

将在Visual Studio中将.net 5.0更新为6.0&#xff1f; 1、如何在Visual Studio中安装.net6.02、要将 visual studio 中的 .net 5.0 更新到 .net 6.0&#xff0c;请按照以下步骤操作&#xff1a; 1、如何在Visual Studio中安装.net6.0 要在visual studio中安装.net 6.0&#xf…

UNH-IOL Reservation 一致性测试用例【2】- Reservation注册

Reservation 系列导航 UNH-IOL Reservation 一致性测试用例【1】- Reservation Report 命令验证 UNH-IOL Reservation 一致性测试用例【2】- Reservation注册 UNH-IOL Reservation 一致性测试用例【3】- 取消注册 UNH-IOL Reservation 一致性测试用例【4】- Reservation Acqui…

Linux操作系统浅析

Linux是一种自由和开放源代码的操作系统&#xff0c;它已经成为了许多企业、机构和个人使用的首选操作系统。Linux操作系统主要由内核、shell和应用程序组成。本文将介绍Linux系统的一些基本知识&#xff0c;包括安装、文件系统、用户和组、网络配置以及一些常见命令的使用。 …

uni-app 小程序 uni.showToast字数超过两行自动省略显示不全问题

如图&#xff1a; uni.showToast({title: res.data.msg,icon: "none" });uni.showToast() 显示消息提示框&#xff0c;显示图标时&#xff0c; title 文本最多显示 7 个汉字长度&#xff0c;在不显示图标的情况下&#xff0c;大于两行不显示。 可以选择更换为使用…

Dart基础语法1

Dart基础 ​ 学习一门新的语言&#xff0c;我们可以以自己现有的熟悉的语言来类比&#xff0c;比如我们非常熟悉Java&#xff0c;那么剩下的就是需要掌握与Java不同的Dart语法&#xff0c;剩下的就需要靠自己多写多看来慢慢熟悉。 ​ 国际惯例&#xff0c;使用Dart完成一个&a…

人工智能机器学习底层原理剖析,人造神经元

按照固有思维方式&#xff0c;人们总以为人工智能是一个莫测高深的行业&#xff0c;这个行业的人都是高智商人群&#xff0c;无论是写文章还是和人讲话&#xff0c;总是讳莫如深&#xff0c;接着就是蹦出一些“高级”词汇&#xff0c;什么“神经网络”&#xff0c;什么“卷积神…

10种实用的Prompt技巧图解

收集整理了prompt engineering的10种实用技巧&#xff0c;以图解的方式解释了它们的主要原理。 本文追求以极简风格逼近这些方法的第一性原理&#xff0c;把黑话翻译成人话&#xff0c;并使用图片范例进行说明。 同时也加入了一些自己的理解&#xff0c;如有出入欢迎指正。 一&…

互联网摸鱼日报(2023-05-12)

互联网摸鱼日报&#xff08;2023-05-12&#xff09; InfoQ 热门话题 建设和改进持续业务交付能力&#xff5c; BizDevOps 公开课 一部手机就可运行&#xff0c;精通Python等20种语言&#xff01;谷歌终于能与OpenAI 打擂台了&#xff0c;全新PaLM 2比肩GPT-4 蚂蚁数科开发者…