SpringCloud中Eureka和Nacos的区别和各自的优点

[复制链接]
发表于 2026-2-27 07:51:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Eureka注册中心

Eureka作为一个注册中心,服务提供者把服务注册到注册中心,服务消耗者去注册中心拉取信息, 然后通过负载均衡得到对应的服务器去访问。

服务提供者每隔30s向注册中心发送哀求,陈诉本身的状态,当高出肯定时间没有发送时,注册中心会以为该服务宕机,会把它剔除。
创建Eureka服务

须要本身手动编写这个步伐和导入依靠
  1. server:
  2.   port: 10086 #端口设置
  3. spring:
  4.   application:
  5.     name: eureka-server #服务名称
  6. eureka:
  7.   client:
  8.     service-url:
  9.       defaultZone: http://127.0.0.1:10086/eureka
  10.     register-with-eureka: true # false表示不向注册中心注册自己。
  11.     fetch-registry: false # false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
复制代码
  1.     <dependencies>
  2.         <dependency>
  3.             <groupId>org.springframework.cloud</groupId>
  4.             <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  5.         </dependency>
  6.     </dependencies>
复制代码
创建服务注册

往服务提供者的依靠内里到场依靠
  1. <dependency>
  2.     <groupId>org.springframework.cloud</groupId>
  3.     <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  4. </dependency>
复制代码
在设置文件内里到场如下内容用于毗连注册中心将并本身注册进去
  1. spring:
  2.   application:
  3.     name: userservice
  4. eureka:
  5.   client:
  6.     service-url:
  7.       defaultZone: http://127.0.0.1:10086/eureka
复制代码

服务拉取和负载均衡

将直连方式改成利用服务名举行毗连,会根据负载均衡战略举行选择服务提供者

@LoadBalanced是Spring Cloud中提供的一个注解,它用于将一个RestTemplate对象标记为支持负载均衡的,从而可以针对服务名称举行REST调用。


负载均衡

轮询、权重、地区分别、随机,最小毗连数、最少负载等
注意:不能有两种负载均衡方式,会出现不知道匹配哪一个方式而报500错误


自界说负载均衡

IRule是负载均衡的核默算法类,若未界说是用什么算法,默认利用轮询RoundRobinRule
内里包罗7种算法提供利用(若不想利用这7种算法,可以自界说算法)
可以通过javaBean,也可以通过设置文件
通过javaBean是全局设置,通过设置文件是指定某一个服务设置
  1. @Bean
  2. public IRule randomRule(){
  3.     return new RandomRule();
  4. }
复制代码
写在服务调用者中
  1. userservice: # 给某个微服务配置负载均衡规则,这里是userservice服务
  2.   ribbon:
  3.     NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则
复制代码
饥饿加载

Ribbon默认是采取懒加载,即第一次访问时才会去创建LoadBalanceClient,哀求时间会很长。
而饥饿加载则会在项目启动时创建,低沉第一次访问的耗时,通过下面设置开启饥饿加载:
  1. ribbon:
  2.   eager-load:
  3.     enabled: true
  4.     clients: userservice # 指定被调用微服务饥渴加载
复制代码
Ribbon是什么

Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的框架。
Nacos注册中心

相比于Eureka在市面上更盛行
在父工程中引入阿里巴巴的依靠
通过导入此依靠,你在项目中直接利用Spring Cloud Alibaba的其他组件时,只需声明组件的groupId和artifactId,而无需指定版本号,由于版本管理已颠末这个BOM同一处置处罚。
  1. <dependencyManagement>
  2. <dependency>
  3.     <groupId>com.alibaba.cloud</groupId>
  4.     <artifactId>spring-cloud-alibaba-dependencies</artifactId>
  5.     <version>2.2.6.RELEASE</version>
  6.     <type>pom</type>
  7.     <scope>import</scope>
  8. </dependency>
复制代码
在须要被注入的工程中到场这个依靠
该依靠包罗了主动设置的类,可以在Spring Boot应用中主动设置Nacos作为服务发现的组件。这意味着你无需手动编写大量的设置代码,Spring框架会在应用启动时主动读取Nacos的设置信息,资助你的服务注册到Nacos服务列表中,并可以或许发现和调用其他已注册的服务。
  1. <dependency>
  2.     <groupId>com.alibaba.cloud</groupId>
  3.     <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  4. </dependency>
复制代码
在被注册到nacos中的工程添加设置信息
  1. spring:
  2.   cloud:
  3.     nacos:
  4.       server-addr: localhost:8848
复制代码
集群战略

能访问同集群下的服务,则不会访问其他集群下的服务,只有该集群下没有服务,才会访问其他的集群下的服务
集群访问方式有两种方式
一种是设置文件举行设置
  1. userservice:
  2.   ribbon:
  3.     NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则
复制代码
一种是全局设置(利用java代码举行设置)
  1.   @Bean
  2.     public IRule nacosRule(){
  3.         return new NacosRule();
  4.     }
复制代码
但是NacosRule是同集群内随机挑选,不会思量呆板的性能题目。
因此,Nacos提供了权重设置来控制访问频率,权重越大则访问频率越高。
环境隔离



  • nacos中可以有多个namespace
  • namespace下可以有group、service等
  • 差别namespace之间相互隔离,比方差别namespace的服务相互不可见

创建定名空间


给微服务设置定名空间,将服务调用者设置到另一个定名空间,两个定名空间相互隔离,因此,服务调用者调用不到另一个定名空间的服务提供者了
  1. spring:
  2.   cloud:
  3.     nacos:
  4.       server-addr: localhost:8848      discovery:        cluster-name: HZ        namespace: 492a7d5d-237b-46a1-a99a-fa8e98e4b0f9 # 定名空间,填ID
复制代码
效果



Nacos与Eureka的区别

Nacos的服务实例分为两种l范例:


  • 暂时实例:如果实例宕机高出肯定时间,会从服务列表剔除,默认的范例。
  • 非暂时实例:如果实例宕机,不会从服务列表剔除,也可以叫永世实例。
  1. spring:
  2.   cloud:
  3.     nacos:
  4.       discovery:
  5.         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可以不继承举行其他操纵,必须保持数据同等,因此就违背了可用性。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表