springboot填坑之 -- spring cloud基于ip的discovery服务注册中心配置

spring cloud基于ip的discovery服务注册中心配置

SpringBoot springCloud

简述

Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,集群状态)。分布式系统的协调导致锅炉板模式,并且使用Spring Cloud开发人员可以快速站起来实现这些模式的服务和应用程序。他们将在任何分布式环境中运行良好,包括开发人员自己的笔记本电脑,裸机数据中心,以及Cloud Foundry等托管平台。– 引用自springCloud官网


spring cloud 的注册中心的配置(包括其他的微服务的配置) 都是基于host进行配置的 会产生极大的不变 – 特别是在基于不同网段, 不同网关的 docker 容器之中 host的地址可能会不断变化,且 host不如ip容易维护.

综上所述: 本文将 聊一聊基于ip的注册中心的配置;

代码示例


server:
  port: 8761
eureka:
  instance:
    lease-expiration-duration-in-seconds: 30 //1
    lease-renewal-interval-in-seconds: 10 //2
    prefer-ip-address: true //3
    ip-address: 114.114.114.xxx //4
  server:
    enable-self-preservation: false
    eviction-interval-timer-in-ms: 1200000
  client:
    register-with-eureka: false //5
    fetch-registry: false //6
    service-url:
      defaultZone: http://${eureka.instance.ip-address}:${server.port}/eureka/  //7

现在 来说明下:

  • 首先 1, 2 用来检测 服务是否存在 是否过期的

    (1) 指注册中心在接收到最后一个心跳之后等待的时间(秒),然后才能从此视图中删除此实例,并禁止此实例的流量。
    (2) 指注册的客户端服务需要向注册中心发送心跳以指示它仍然存在的频率(以秒为单位)。如果在leaseExpirationDurationInSeconds中指定的时间段内未收到心跳线,则eureka服务器将从其视图中删除该实例,因此不允许此实例的流量。

  • 其次 (3)用来 开启 是否使用ip识别服务 当该变量为 true 时 此时 将会使用您的 内网ip去注册服务, 当您的服务注册中心是基于内网的服务,那么 配置服务到这一步即可.但是如果您的各项自服务,不再同一个网段中时, 请继续配置(4)

  • 当您配置 (4) 时 即为手动配置ip地址注册服务, 此时 [3] 的配置将无效, 如果ip为指定注册中心所在的公网ip,那么 该注册中心将在公网可见.

  • 当为单注册中心时, 做为注册中心,本服务当然不能注册自己 (5) ,(6) 配置为 false 服务才可以正常启动,当为多注册中心时(5) (6) 可不配置,但是(7)必须配置为非己 的url地址


  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud提供了多种服务注册与发现的解决方案,其中最常用的是基于Eureka的服务注册与发现。 Eureka是Netflix开源的一个基于REST的服务治理组件,主要用于服务注册和发现。Spring Cloud集成了Eureka,通过Eureka实现了微服务架构中的服务注册与发现功能。 具体实现步骤如下: 1. 引入依赖 在pom.xml文件中引入Spring Cloud Eureka的依赖: ``` <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> ``` 2. 配置文件 在application.yml或者application.properties文件中配置Eureka Server的相关信息: ``` # Eureka Server配置 server: port: 8761 # Eureka Server端口号 eureka: instance: hostname: localhost # Eureka Server的主机名 client: register-with-eureka: false # 是否将自己注册到Eureka Server,默认为true fetch-registry: false # 是否从Eureka Server获取注册信息,默认为true service-url: defaultZone: http://localhost:8761/eureka/ # Eureka Server地址 ``` 3. 启动类 在启动类上添加@EnableEurekaServer注解,开启Eureka Server的功能: ``` @SpringBootApplication @EnableEurekaServer public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 4. 注册服务 在微服务配置文件中添加如下配置: ``` # Eureka Client配置 eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ # Eureka Server地址 instance: prefer-ip-address: true # 实例使用IP地址注册到Eureka Server ``` 5. 发现服务 在需要调用其他微服务的地方,通过注入DiscoveryClient对象实现服务的发现: ``` @Autowired private DiscoveryClient discoveryClient; public String getServiceUrl(String serviceName) { List<ServiceInstance> instances = discoveryClient.getInstances(serviceName); if (instances != null && instances.size() > 0) { return instances.get(0).getUri().toString(); } return null; } ``` 以上就是基于Eureka实现服务注册与发现的步骤。除了Eureka之外,Spring Cloud还支持其他多种服务注册与发现的解决方案,例如Consul、Zookeeper等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值