AI 赋能项目启航,聊聊微服务注册中心为何不可或缺

最近笔者做了一个AI赋能的项目,在项目构建过程中,使用了springboot的脚手架搭建了基本的框架,同时配置了datasoure和注册中心,今天就来聊聊微服务架构中为什么要用注册中心。

在复杂的微服务环境中,服务数量众多且动态变化,如上线或者掉线。这个时候就需要有一个角色,来统一管理所有服务,而注册中心就充当这一重要角色。

微服务架构中常用的注册中心有eureka、nacos,它们都提供了服务的注册与发现功能。如果没有注册中心,新上线的服务或者下线的服务,其他微服务无法及时感知,这将导致服务调用失败。例如,在一个电商平台中,订单服务可能需要调用库存服务来检查商品库存。如果库存服务进行了更新或部署了新的实例,而订单服务无法及时获取这些变化,就可能出现异常。

它们一般都会结合Ribbon,一个负载均衡器来使用,当有新品发布会或者科技日的时候,同一时刻会有大量请求过来,此刻,ribbon会从注册中心获取到的多个服务实例中,采用一定的负载均衡策略(如轮训、随机等),将请求发送到合适的服务实例上,确保服务的高效响应。

基于springboot的后端项目,服务间通信,基本都会使用feign调用,而feign调用的的底层就是使用ribbon来选择具体的服务实例来进行请求的发送

接下来探讨下它是如何集成到springboot中的,本文以eureka为例。

首先,在pom.xml中引入eureka的client的jar包。

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

接下来通过maven工具检查下有没有依赖冲突。

然后,配置eureka的相关参数。

eureka:
  client:
    # 客户端要连接的服务注册中心的 URL 列表。
    service-url:
      defaultZone: http://eureka1.netflix:10888/eureka/,http://eureka2.netflix:10888/eureka/
    # 从服务端获取最新服务实例的间隔
    registry-fetch-interval-seconds: 5
    # 将当前实例到注册中心
    register-with-eureka: true
  instance:
    # 表示服务更倾向于使用实例的IP地址进行注册
    prefer-ip-address: true
    # 给服务端发送心跳的时间间隔
    lease-renewal-interval-in-seconds: 10
    # 租约的过期时间,在租约过期时间内没有发送心跳进行续约,注册中心将认为该实例已经下线,会将其从服务注册表中移除。
    lease-expiration-duration-in-seconds: 10
    

最后,启动服务,同时在eureka的后台检查服务有没有注册成功。

通常情况下,服务实例通过eureka客户端向服务端注册时,会携带以下信息:

  • 服务实例 ID:order-service
  • 服务名称:订单服务
  • 主机名:server-01
  • IP 地址:192.168.1.188
  • 端口号:8888
  • 健康检查 URL:http://192.168.1.188/health
  • 服务主页:http://192.168.1.188/home
  • 服务状态页:http://192.168.1.188/status
  • 元数据:{"version": "1.0", "environment": "test"} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值