首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Cloud 微服务学习笔记 - Eureka 服务注册与发现

Spring Cloud 微服务学习笔记 - Eureka 服务注册与发现

作者头像
泰坦HW
发布2021-02-01 15:10:59
3860
发布2021-02-01 15:10:59
举报
文章被收录于专栏:Titan笔记Titan笔记

4.1 Eureka的概念

4.1.1 什么是Eureka

Spring-Cloud Euraka是Spring Cloud集合中一个组件,它是对Euraka的集成,用于服务注册和发现。Eureka是Netflix中的一个开源框架。它和 zookeeper、Consul一样,都是用于服务注册管理的,同样,Spring-Cloud 还集成了Zookeeper和Consul。

4.1.2 Eureka的用途

Eureka相当于一个服务注册和发现的中心,Eureka的客户端连接到Eureka的服务端并通过心跳包保持连接,服务端就可以通过这种方式来判断各个微服务是否正常运行,并且能够动态的将非正常运行的微服务实例节点移出。

4.2 Eureka单机模式构建

4.2.1 IDEA生成EurekaServer端服务注册中心
4.2.1.1 新建模块

新建一个Module:Cloud-Eureka-Server-7001,包含 Eureka Server服务

4.2.1.2 application.yml中进行配置
server:
  port: 7001
spring:
  application:
    name: cloud-eureka-server-7001
eureka:
  instance:
    hostname: localhost
  client:
    register-with-eureka: false # 不向注册中心注册自己(本身是服务端)
    fetch-registry: false
    service-url:
      # 设置 Eureka Server交互地址 (查询服务和注册服务都要依赖这个地址)
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
4.2.1.3 在SpringBoot启动类中添加注解

添加 @EnableEurekaServer 注解

4.2.1.4 访问Eureka的Web面板

通过访问 http://localhost:7001/ 即可查看Eureka当前状态

4.2.2 Cloud-Provider-Payment-8001微服务注册进入Eureka
4.2.2.1 在Payment微服务的pom.xml中添加dependency
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
4.2.2.2 添加相关配置文件至application.yml
eureka:
  client:
    register-with-eureka: true # 向注册中心注册自己(本身是客户端)
    fetch-registry: true # 抓取已有的注册信息
    service-url:
      # 设置 Eureka Server交互地址 (查询服务和注册服务都要依赖这个地址)
      defaultZone: http://localhost:7001/eureka/
4.2.2.3 添加@EnableEurekaClient注解
4.2.3 Cloud-Consumer-Order-80微服务注册进入Eureka

与4.2.2步骤类似^_^

4.3 Eureka集群环境部署

4.3.1 Eureka集群原理

Eureka集群依据”互相注册“原理,所有集群中的单节点相互注册,相互守望,对外是作为一个整体。

4.3.2 Eureka Server 集群部署记录

4.4 微服务使用Eureka集群注册与发现

4.4.1 微服务注册进入Eureka集群

只需要修改微服务对应的 Application.yml即可

server:
  port: 80
spring:
  application:
    name: cloud-order-service
eureka:
  client:
    register-with-eureka: true # 向注册中心注册自己(本身是客户端)
    fetch-registry: true # 抓取已有的注册信息
    service-url:
      # 设置 Eureka Server交互地址 (查询服务和注册服务都要依赖这个地址)
      defaultZone: http://eureka7001.test:7001/eureka/,http://eureka7002.test:7002/eureka/
4.4.2 Cloud-Provider-Payment微服务提供者集群搭建
4.4.2.1 微服务提供者集群部署

基于Cloud-Provider-Payment-8001,搭建Cloud-Provider-Payment-8002微服务

4.4.2.2 Cloud-Consumer-Order-80微服务消费者重构
4.5 Actuator微服务信息完善

Application.yml添加如下配置

  instance:
    instance-id: payment8001
    prefer-ip-address: true
4.6 Eureka Discovery 服务发现

在Payment服务中使用Discovery Client的示例

    @Resource
    private DiscoveryClient discoveryClient;
    @GetMapping("/payment/discovery")
    public Object discovery() {
        List<String> services = discoveryClient.getServices();
        services.forEach(x -> log.info("Service: " + x));
        List<ServiceInstance> instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");
        instances.forEach(x -> log.info(
                "Instance: " + x.getInstanceId() + "," + x.getHost() + "," + x.getPort() + "," + x.getUri()
        ));
        return this.discoveryClient;
    }
4.7 Eureka 自我保护机制

Eureka的自我保护特性主要用于减少在网络分区或者不稳定状况下的不一致性问题。

Eureka在运行期间会统计心跳失败的比例,在15分钟内是否低于85%,如果出现了低于的情况,Eureka Server会将当前的实例注册信息保护起来,同时提示一个警告,一旦进入保护模式,Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据。也就是不会注销任何微服务。

5. ZooKeeper\Consul等注册中心

配置方式与Eureka大同小异

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021年1月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 4.1 Eureka的概念
    • 4.1.1 什么是Eureka
      • 4.1.2 Eureka的用途
      • 4.2 Eureka单机模式构建
        • 4.2.1 IDEA生成EurekaServer端服务注册中心
          • 4.2.2 Cloud-Provider-Payment-8001微服务注册进入Eureka
            • 4.2.3 Cloud-Consumer-Order-80微服务注册进入Eureka
            • 4.3 Eureka集群环境部署
              • 4.3.1 Eureka集群原理
                • 4.3.2 Eureka Server 集群部署记录
                • 4.4 微服务使用Eureka集群注册与发现
                  • 4.4.1 微服务注册进入Eureka集群
                    • 4.4.2 Cloud-Provider-Payment微服务提供者集群搭建
                      • 4.5 Actuator微服务信息完善
                        • 4.6 Eureka Discovery 服务发现
                          • 4.7 Eureka 自我保护机制
                          • 5. ZooKeeper\Consul等注册中心
                          相关产品与服务
                          微服务引擎 TSE
                          微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档