首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
大数据
›
数据仓库与分析
›
SpringCloud中Eureka和Nacos的区别和各自的优点 ...
返回列表
发新帖
SpringCloud中Eureka和Nacos的区别和各自的优点
[复制链接]
发表于 2026-2-27 07:51:57
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
Eureka注册中心
Eureka作为一个注册中心,服务提供者把服务注册到注册中心,服务消耗者去注册中心拉取信息, 然后通过
负载
均衡得到对应的
服务器
去访问。
服务提供者每隔30s向注册中心发送哀求,陈诉本身的状态,当高出肯定时间没有发送时,注册中心会以为该服务宕机,会把它剔除。
创建Eureka服务
须要本身手动编写这个步伐和导入依靠
server:
port: 10086 #端口设置
spring:
application:
name: eureka-server #服务名称
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
register-with-eureka: true # false表示不向注册中心注册自己。
fetch-registry: false # false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
复制
代码
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
复制
代码
创建服务注册
往服务提供者的依靠内里到场依靠
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
复制
代码
在设置文件内里到场如下内容用于毗连注册中心将并本身注册进去
spring:
application:
name: userservice
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
复制代码
服务拉取和
负载
均衡
将直连方式改成利用服务名举行毗连,会根据
负载
均衡战略举行选择服务提供者
@LoadBalanced是Spring Cloud中提供的一个注解,它用于将一个RestTemplate对象标记为支持
负载均衡
的,从而可以针对服务名称举行REST调用。
负载均衡
轮询、权重、地区分别、随机,最小毗连数、最少负载等
注意:不能有两种
负载均衡
方式,会出现不知道匹配哪一个方式而报500错误
自界说负载均衡
IRule是负载均衡的核默算法类,若未界说是用什么算法,默认利用轮询RoundRobinRule
内里包罗7种算法提供利用(若不想利用这7种算法,可以自界说算法)
可以通过javaBean,也可以通过设置文件
通过javaBean是全局设置,通过设置文件是指定某一个服务设置
@Bean
public IRule randomRule(){
return new RandomRule();
}
复制代码
写在服务调用者中
userservice: # 给某个
微服务
配置
负载均衡规则,这里是userservice服务
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则
复制代码
饥饿加载
Ribbon默认是采取懒加载,即第一次访问时才会去创建LoadBalanceClient,哀求时间会很长。
而饥饿加载则会在项目启动时创建,低沉第一次访问的耗时,通过下面设置开启饥饿加载:
ribbon:
eager-load:
enabled: true
clients: userservice # 指定被调用
微服务
饥渴加载
复制代码
Ribbon是什么
Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的框架。
Nacos注册中心
相比于Eureka在市面上更盛行
在父工程中引入阿里巴巴的依靠
通过导入此依靠,你在项目中直接利用Spring Cloud Alibaba的其他组件时,只需声明组件的groupId和artifactId,而无需指定
版本
号,由于
版本
管理已颠末这个BOM同一处置处罚。
<dependencyManagement>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
复制代码
在须要被注入的工程中到场这个依靠
该依靠包罗了主动设置的类,可以在Spring Boot应用中主动设置Nacos作为服务发现的组件。这意味着你无需手动编写大量的设置代码,Spring框架会在应用启动时主动读取Nacos的设置信息,资助你的服务注册到Nacos服务列表中,并可以或许发现和调用其他已注册的服务。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
复制代码
在被注册到nacos中的工程添加设置信息
spring:
cloud:
nacos:
server-addr: localhost:8848
复制代码
集群战略
能访问同集群下的服务,则不会访问其他集群下的服务,只有该集群下没有服务,才会访问其他的集群下的服务
集群访问方式有两种方式
一种是设置文件举行设置
userservice:
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则
复制代码
一种是全局设置(利用java代码举行设置)
@Bean
public IRule nacosRule(){
return new NacosRule();
}
复制代码
但是NacosRule是同集群内随机挑选,不会思量呆板的
性能
题目。
因此,Nacos提供了权重设置来控制访问频率,权重越大则访问频率越高。
环境隔离
nacos中可以有多个namespace
namespace下可以有group、service等
差别namespace之间相互隔离,比方差别namespace的服务相互不可见
创建定名空间
给
微服务
设置定名空间,将服务调用者设置到另一个定名空间,两个定名空间相互隔离,因此,服务调用者调用不到另一个定名空间的服务提供者了
spring:
cloud:
nacos:
server-addr: localhost:8848 discovery: cluster-name: HZ namespace: 492a7d5d-237b-46a1-a99a-fa8e98e4b0f9 # 定名空间,填ID
复制代码
效果
Nacos与Eureka的区别
Nacos的服务实例分为两种l范例:
暂时实例:如果实例宕机高出肯定时间,会从服务列表剔除,默认的范例。
非暂时实例:如果实例宕机,不会从服务列表剔除,也可以叫永世实例。
spring:
cloud:
nacos:
discovery:
ephemeral: false # 设置为非临时实例
复制代码
非暂时服务实例宕机后,不会从nacos中举行删除
Nacos的团体过程
1. Nacos与eureka的共同点
都支持服务注册和服务拉取
都支持服务提供者心跳方式做康健检测
2. Nacos与Eureka的区别
Nacos支持服务端主动检测提供者状态:暂时实例采取心跳模式,非暂时实例采取主动检测模式
暂时实例心跳不正常会被剔除,非暂时实例则不会被剔除
Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
Nacos集群默认采取AP方式,当集群中存在非暂时实例时,采取CP模式;Eureka采取AP方式
Nacos的集群采取的模式:
Nacos是Alibaba的产物,支持AP和CP模子,Nacos集群默认采取AP方式,当集群中存在非暂时实例时,采取CP模式;
AP和CP仅存在于微服务中
AP指的是可用性,指的是在节点N1上举行写操纵的时间,N2可以继承举行其他操纵,但是如许的话就违背了同等性
CP指的是同等性,指的是在节点N1上举行写操纵的时间,N2可以不继承举行其他操纵,必须保持数据同等,因此就违背了可用性。
回复
使用道具
举报
返回列表
浏览过的版块
物联网
Oracle
DevOps与敏捷开发
云原生
分布式数据库
天津储鑫盛钢材现货供应商
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表