注册中心 Eureka && Nacos

文章目录

目录

文章目录

1.  什么是注册中心?

2.常见的注册中心

3 . Eureka

4 . Nacos

5 . Nacos与Eureka的区别

总结


1.  什么是注册中心?

在最初的架构体系中, 集群的概念还不那么流行, 且机器数量也比较少, 此时直接使用DNS+Nginx就可以满足几乎所有服务的发现. 相关的注册信息直接配置在Nginx. 但是随着微服务的流行与流量的激增, 机器规模逐渐变大, 并且机器会有频繁的上下线行为, 这种时候需要运维手动地去维护这个配置信息是一个很麻烦的操作. 所以开发者们开始希望有这么一个东西, 它能维护一个服务列表, 哪个机器上线了, 哪个机器宕机了, 这些信息都会自动更新到服务列表上, 客户端拿到这个列表, 直接进行服务调用即可. 这个就是注册中心。

在注册中心中,通常涉及以下几个角色,每个角色在微服务架构中扮演着重要的角色:

  1. 服务提供者(Service Provider):负责向注册中心注册自己的服务实例。服务提供者在启动时将其服务信息(如服务名称、地址、端口等)注册到注册中心。

  2. 服务消费者(Service Consumer):需要调用其他服务的客户端或微服务。服务消费者通过注册中心查询可用的服务实例,以便进行服务调用。

  3. 注册中心(Registry):负责管理服务的注册和发现。注册中心维护一个服务列表,处理服务的注册、注销、健康检查等功能。

2.常见的注册中心

  1. Eureka

    • 描述:由Netflix开发的服务注册与发现工具,支持RESTful API,易于与Spring Cloud集成。
    • 特点:提供自我保护机制,支持客户端负载均衡。
  2. Zookeeper

    • 描述:Apache提供的分布式协调服务,常用于服务注册和发现。
    • 特点:提供高可用性和一致性,适合需要强一致性的场景。
  3. Nacos

    • 描述:阿里巴巴开源的服务发现和配置管理平台,支持动态服务发现和配置管理。
    • 特点:支持多种服务发现模式,易于与Spring Cloud集成。

3 . Eureka

Eureka是Netflix OSS套件中关于服务注册和发现的解决方案。Spring Cloud对Eureka进行了集成,并作为优先推荐方案进行宣传。虽然目前Eureka 2.0已经停止维护,新的微服务架构设计中,也不再建议使用,但是目前依然有大量公司的微服务系统使用Eureka作为注册中心。

构建项目 创建模块 order-server 和 product-server

在各自的pom文件中引入eureka依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

接着创建eureka-server 作为eureka的服务端 接着在pom文件中引入依赖, 因为这里是服务端,所以一路的依赖是服务端的依赖,和上面的不太一样

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

 搞定之后,开始配置文件的编写,直接拷贝,都一样

服务端配置文件

server:
  port: 10010
spring:
  application:
   name: eureka-server
eureka:
  instance:
    hostname: localhost
  client:
    fetch-registry: false # 表⽰是否从Eureka Server获取注册信息,默认为true.
                          # 因为这是⼀个单点的Eureka Server,不需要同步其他的Eureka Server节点的数据,
                          # 这⾥设置为false
    register-with-eureka: false # 表⽰是否将⾃⼰注册到Eureka Server,默认为true.由于当前应⽤就是Eureka Server,故⽽设置为false.
    service-url:
      # 设置 Eureka Server的地址,查询服务和注册服务都需要依赖这个地址.
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

客户端配置文件

spring:
  application:
    name: order-server #配置服务名称
#配置eureka地址
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10010/eureka

 在ioc容器中注册RestTemplate对象来实现远程调用

可以直接在启动类中使用@Bean注解直接添加也可以通过配置类的方式

接着在方法中直接调用 

 

4 . Nacos

Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高

Nacos是SpringCloudAlibaba的组件,而SpringCloudAlibaba也遵循SpringCloud中定义的服务注册、服务发现规范。因此使用Nacos和使用Eureka对于微服务来说,并没有太大区别。

主要差异在于:

  • 依赖不同

  • 服务地址不同

引入依赖

在父工程的pom文件中的<dependencyManagement>中引入SpringCloudAlibaba的依赖:

<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>

然后在user-service和order-service中的pom文件中引入nacos-discovery依赖:

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

编写配置文件

spring:
  cloud:
    nacos:
      server-addr: localhost:8848

集群配置

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ # 集群名称

环境隔离

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ
        namespace: 492a7d5d-237b-46a1-a99a-fa8e98e4b0f9 # 命名空间,填ID 

5 . Nacos与Eureka的区别

 

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

  • 临时实例:如果实例宕机超过一定时间,会从服务列表剔除,默认的类型。

  • 非临时实例:如果实例宕机,不会从服务列表剔除,也可以叫永久实例。

配置一个服务实例为永久实例:

spring:
  cloud:
    nacos:
      discovery:
        ephemeral: false # 设置为非临时实例

Nacos和Eureka整体结构类似,服务注册、服务拉取、心跳等待,但是也存在一些差异:

  • Nacos与eureka的共同点

    • 都支持服务注册和服务拉取

    • 都支持服务提供者心跳方式做健康检测

  • Nacos与Eureka的区别

    • Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式

    • 临时实例心跳不正常会被剔除,非临时实例则不会被剔除

    • Nacos支持服务列表变更的消息推送模式,服务列表更新更及时

    • Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式  


总结

以上就是这篇博客的主要内容了,大家多多理解,下一篇博客见!

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜欢吃animal milk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值