Eureka服务治理

Eureka服务治理

什么是服务治理?

SpringCloud封装了Netflit公司开发的Eureka模块来实现服务治理;

在传统的rpc远程调用框架中,管理每个服务与服务之间的依赖关系比较复杂,所以需要使用服务治理,管理服务与服务之间的依赖关系,可以实现服务调用、负载均衡、容错、实现服务的发现与注册。

什么是服务的注册与发现?

Eureka采用了CS的设计架构,Eureka Server 作为服务注册的服务器,他是服务的注册中心。而系统中的其他微服务,使用Eureka的客户端连接到Eureka Server并维持心跳连接,这样系统的维护人员就可以通过Eureka Server来监控系统中的各个服务是否运行正常。

在服务注册与发现中,有一个注册中心。当服务器启动的时候,会把自己的服务器信息 比如服务地址、通讯地址等以别名的方式注册到注册中心上,另一方(消费|服务提供者),以改别名的方式去注册中心上获取到实际的服务通讯地址,然后在实现本地RPC调用RPC远端调用,框架的核心思想:在于注册中心,因为使用注册中心管理每一个服务与服务的依赖关系(服务治概念),在任何的rpc远程框架中,都会有一个注册中心(存放服务地址信息(接口地址))

Eureka包含两个组件:Eureka Server 和 Eureka Client

1、Eureka Server: 提供服务注册服务(@EnableEurekaServer加在启动类上)

各个微服务节点通过配置启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有服务节点的信息,服务节点的信息可以直接在界面中直观看到。

maven依赖

EurekaServer以前的老版本使用(2018)
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

Eureka现在的新版本Server (当前使用2020.2)
<dependency>
   <groupId>org.springframework.cloud<groupId>
   <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

yml配置:

server:
  port: 7001
eureka:
  instance:
  # eureka 服务端的实例名称(服务器Ip)
    hostname: eureka7001.com
  client:
     # false 表示不向注册中心注册自己
    register-with-eureka: false
    #false 表示自己端就是注册中心,我的职责就是维护实例,并不需要去检索服务
    fetch-registry: false
    service-url:
    # 设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址
     # 1: 单机就是自己
     defaultZone: http://eureka7001.com:7001/eureka/
      # 集群就是指向其他的Eureka
#      defaultZone: http://eureka7002.com:7002/eureka/
#      @@@@【关闭自我保护机制】@@@###########################################################
#  server:
#     # 关闭自我保护机制,保证不可用服务及时被踢出
#    enable-self-preservation: false
#    # 服务不可用时2秒提出
#    eviction-interval-timer-in-ms: 2000
2、Eureka Client 通过注册中心进行访问(@EnableEurekaClient加在启动类上)

是一个java客户端,用于简化Eureka Server 的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器,在应用启动后,将会向Eureka Server发送心跳(默认周期30秒)。如果Eureka Server 在多个心跳周期内没有接受到某个节点的心跳, EurekaServer将会从服务注册表中移除节点(默认90秒)

Maven依赖:
<!--eureka client-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

Yml配置



server:
  port: 8001
eureka:
  client:
  # 表示是否将自己注册进Eureka Server 默认为true
   register-with-eureka: true
   # 是否从EurekaServer 抓取已有的注册信息,默认为true。单节点为所谓,集群必须设置为true才能配合ribbon使用负载均衡
   fetchRegistry: true
   # 注册中心地址
   service-url:
   # 单机版注册地址
#     defaultZone: http://localhost:7001/eureka
  # 集群版
     defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
     # 实例ID
  instance:
    instance-id: payment8001
    # 访问路径可以显示IP地址
    prefer-ip-address: true
    # Eureka 客户端向服务端发送心跳的时间间隔,单位为秒(默认是30秒)
   # lease-renewal-interval-in-seconds: 1
    # Eureka服务端在收到最后一次心跳后的等待时间上线,单位为秒(默认是90秒),超时将剔除服务
  #  lease-expiration-duration-in-seconds: 2

spring:
  application:
    name: cloud-payment-service

微服务RPC远程调用的最核心的是高可用

所以搭建集群的Eureka注册中心,实现负载均衡加容错。

EurekaServer集群原理:互相注册,相互守望

单机集群配置:

找到C:\Windows\System32\drivers\etc\hosts文件:

修改映射配置加入hosts文件中:

127.0.0.1   eureka7001.com

127.0.0.1   eureka7002.com

集群修改yml注册中心地址:7001指向7002,  7002指向7001

server:
  port: 7001

eureka:
  instance:
  # eureka 服务端的实例名称
    hostname: eureka7001.com
  client:
     # false 表示不向注册中心注册自己
    register-with-eureka: false
    #false 表示自己端就是注册中心,我的职责就是维护实例,并不需要去检索服务
    fetch-registry: false
    service-url:
    # 设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址
      defaultZone: http://eureka7002.com:7002/eureka/
server:
  port: 7002

eureka:
  instance:
  # eureka 服务端的实例名称
    hostname: eureka7002.com
  client:
     # false 表示不向注册中心注册自己
    register-with-eureka: false
    #false 表示自己端就是注册中心,我的职责就是维护实例,并不需要去检索服务
    fetch-registry: false
    service-url:
    # 设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址
      defaultZone: http://eureka7001.com:7001/eureka/

项目启动注意:

应该先启动服务注册中心(7001、7002),然后再去启动服务提供者与服务消费者

通过接口显示注册中心的注册信息:

启动类上添加: @EnableDiscoveryClient

@Resource
private DiscoveryClient discoveryClient;

@GetMapping("payment/discovery")
public Object discovery(){
    List<String> services = discoveryClient.getServices();
    for (String service : services) {
        log.info("********service: " + service);
    }

    List<ServiceInstance> instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");
    for (ServiceInstance instance : instances) {
        log.info(instance.getServiceId()+ "\t" + instance.getHost()+ "\t" + instance.getPort()
         + "\t" + instance.getUri());
    }
    return this.discoveryClient;
}
 

原文地址:https://www.cnblogs.com/dw3306/p/12635284.html

时间: 2024-07-29 20:51:14

Eureka服务治理的相关文章

1 Spring Cloud Eureka服务治理

注:此随笔为读书笔记.<Spring Cloud微服务实战> 什么是微服务? 微服务是将一个原本独立的系统拆分成若干个小型服务(一般按照功能模块拆分),这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP的RESTful API进行通信协作.每个微服务维护自身的数据存储.业务开发.自动化测试案例以及独立部署机制.维护自身的数据存储称为数据管理的去中心化.由于数据管理的去中心化,各个微服务的数据一致性成为一个难题,因此,需要强调的是各个服务之间进行无"事务"的调用.

微服务:整合 Spring cloud Eureka - 服务治理机制

一.简介 在体验了Spring Cloud Eureka 通过简单的注解配置就能实现强大的服务治理功能之后,我们可以进一步了解一些Eureka基础架构中各个元素之间的通信行为,以此来更加深入的理解Eureka服务治理体系是如何运转起来的. 二.微服务基础架构拓扑图 1.“Eureka Server 服务注册中心-1” 和 “Eureka Server 服务注册中心-2” ,他们相互注册成为高可用集群. 2.服务提供者启动两个实例,一个注册到“Eureka Server 服务注册中心-1” 上,另

Spring cloud Eureka 服务治理

服务之类是微服务架构中最为核心的基础模块,它主要用来实现各个微服务实例的自动化注册和发现. 1. 服务注册 在服务治理框架中,通常会构建一个注册中心,每个服务单元向注册中心登记自己提供的服务,将主机.端口.版本号.通信协议等一些 附加信息告知服务中心,注册中心按服务名分类组织服务清单. 2. 服务发现 由于在服务治理框架下运作,服务间的调用不在通过指定具体的地址实例地址来实现,而是通过想服务名发起请求调用. 使用Spring Cloud Eureka 来搭建服务注册中心 <1>. 首先我们通过

微服务之SpringCloud实战(二):SpringCloud Eureka服务治理

服务治理 SpringCloud Eureka是SpringCloud Netflix微服务套件的一部分,它基于Netflix Eureka做了二次封装,主要完成微服务的服务治理功能,SpringCloud通过为Eureka增加了SpringBoot自动化配置,只需要简单的依赖和配置就可完成Eureka整合搭建.   服务治理可以说是微服务中做核心的模块,主要负责服务的自动化注册与发现,在最初开始构建微服务的时候,可能服务并不会很多,我们可以通过一些静态配置进行相互调用,但是随着业务的更新迭代,

springCloud eureka服务治理集群增加安全认证

做为SpringCloud Netflix服务套件中的一部分,springCloud eureka基于Netflix Eureka做了二次封装,默认提供WEB管理页面及服务治理. 为了确保在生产环境中的,eureka注册服务的元数据及WEB管理的信息安全,可以结合spring security增加安全认证. 步骤如下: 第一步,在eureka server端,开启安全认证配置,设置访问用户名和密码. 首先,增加spring security依赖包, <dependency> <group

1 Spring Cloud Eureka服务治理(下)

注:此随笔为读书笔记.<Spring Cloud微服务实战>,想学习Spring Cloud的同伴们可以去看看此书,里面对源码有详细的解读. 上篇主要介绍了什么是微服务以及微服务治理的简单实现,如微服务注册中心的实现.微服务注册的实现.微服务的发现和消费的实现.微服务注册高可用的实现.本篇主要介绍一 http://pic.cnhubei.com/space.php?uid=1079&do=album&id=821329http://pic.cnhubei.com/space.p

Spring cloud Eureka 服务治理(高可用服务中心)

在微服务的架构中,我们考虑发生故障的情况,所以在生产环境中我们需要对服务中各个组件进行高可用部署. Eureka Server 的高可用实际上就是将自己作为服务想其它服务注册中心注册自己,这样就形成了一组互相注册的服务中心, 以实现服务清单 的互相同步,达到高可用的效果. 1. 创建 application-peer1.properties ,作为peer1服务中心的配置,并将serviceUrl 指向 peer2 spring.application.name=eureka-server se

springCloud 之 Eureka服务治理机制及代码运行

服务提供者 服务注册: 服务提供者在启动的时候通过发送Rest请求的方式将自己注册到Eureka Server上,同时带上了自身服务的一些元数据信息.Eureka Server在收到这个请求后,将元数据信息存储在一个双层结构Map中,第一层的key是服务名,第二层的key是具体服务的实例名. 服务同步: 两个服务提供者分别注册到两个不同的服务注册中心上,因为服务中心之间是相互注册为服务的,所以当服务提供者发送注册请求到一个服务注册中心时,它会将该请求转发给集群中的其他注册中心,从而实现服务注册中

第三章 服务治理:Spring Cloud Eureka

Spring Cloud Eureka是Spring Cloud Netflix 微服务套件中的一部分,它基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的服务治理功能.Spring Cloud 通过为Eureka增加了Spring Boot风格的自动化配置,我们只需通过引入依赖和注解配置就能让Spring Boot构建的微服务应用轻松的与Eureka服务治理体系进行整合. 服务治理: 服务治理可以说是微服务架构中最为核心和基础的模块,主要用来实现各个微服务实例的自动化注册