一起来学SpringCloud 服务发现Eureka

序言

​ Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

此文章仅限入门 SpringCloud版本为 Greenwich

​ 学过Dubbo的朋友应该知道,zookeeper,对学名注册中心,那么在Spring Cloud 里的注册中心呢,你一定要只要Eureka。虽然现在2不开发了,但是1还是在维护的,已经可以能满足大部分生产的需求,何况Spring Cloud 还提供了 ConsulZooKeeperEtcd 等多种服务注册发现功能的框架,当然呢还有 Spring Cloud Alibaba新出的 Nacos,以后我么着重去讲这个。

搭建一个EurekaServer

首先呢引入依赖

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

然后来在配置文件中配置下

server:
  port: 8761
spring:
  application:
    name: spring-cloud-action-eureka
eureka:
  instance:
    hostname: localhost
    prefer-ip-address: true  # 生产环境中官方是不建议修改默认配置,因为那样会破坏 eureka server 的保护模式
  server:
    enable-self-preservation: false  # 关闭保护模式(生产环境不建议修改)
    eviction-interval-timer-in-ms: 60000  # 清理间隔(默认是60 * 1000 毫秒)(生产环境不建议修改)
    remote-region-registry-fetch-interval: 5 # Eureka 拉取服务列表时间(默认:30秒)(生产环境不建议修改)
  client:
    registerWithEureka: false  # eureka server 没必要自己把自己注册上去,所以可以设置成 false
    fetchRegistry: false  # 是否从Eureka Server上获取注册信息,默认为true,此处建议修改成 false (单机设置的意义不大,如果设置成 true 启动会去抓取一次注册表,获取不到更新缓存就会出错(该错误不影响 eureka 正常使用))
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
      registry-fetch-interval-seconds: 5    # 从 Eureka 服务器端获取注册信息的间隔时间(默认:30秒)

然后在主函数中配置一下即可

@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}

启动后访问 http://localhost:8761 那 这个显示这个就ok了 ,图中红色的表示我们关闭了 Eureka 保护模式,在网络波动的情况下 Eureka Server 可能无法及时的保护客户端实例

搭建一个EurekaClient

有了Server了 咱们就在来创建一个Client

首先呢就是导入依赖

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

然后呢就是在yml里配置

server:
  port: 7001
spring:
  application:
    name: spring-cloud-action-server-order
eureka:
  instance:
    prefer-ip-address: true
    instance-id: ${spring.cloud.client.ip-address}:${spring.application.instance_id:${server.port}}
    hostname: localhost
  client:
    service-url:
      defaultZone: http://${eureka.instance.hostname}:8761/eureka/

最后呢就是在启动类上加入一个注解即可

@SpringBootApplication
@EnableDiscoveryClient
public class OrderApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }
}

其中呢,这里的 @EnableDiscoveryClient 注解,用来标识当前工程是Discovery Client。因为 Spring Cloud 提供了非常多的服务注册发现的组件,如 euerkazookeeperconsuletcd、所以为统一标识客户端身份,所以它用的是 @EnableDiscoveryClient 注解 。

然后启动下看下效果

看到如下效果表示服务已经注册完毕。

然后就是在说下集群

spring:
  application:
    name: spring-cloud-action-server-order

注册中心中的名字其实就是你spring.application.name 的名字 只要端口不同 名字一样,就可以达到集群的效果。
在idea的启动配置中 复制一个在vm选项中加入 -Dserver.port=7002 然后在启动一下咱们看看效果。

看这样就表示这个client 处于集群状态了。

此文章仅限入门,切记啊不会用找不到多去官网看文档!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值