服务注册与发现—Eureka

一:Eureka简介

  Eureka的意思是(因找到某物,尤指问题的答案而高兴) 我发现了,我找到了,作为一个服务注册和发现中心的名字确实很贴切啊。

  Eureka包含两个组件,Eureka Server和Eureka Client,Eureka Server提供服务发现的能力,其实理解为注册更适合,因为Eureka Server不会主动去寻找发现,而是各个微服务启动的时候,向Eureka Server注册自己的信息,例如IP地址,端口号,服务名称等等,Eureka Server会把微服务的信息存储起来。微服务启动之后,会周期性的(默认30s)向Eureka Server发送心跳以续约自己的租期。如果Eureka Server在一定时间内(默认90s)没有收到某个微服务的心跳,则会注销该微服务实例。

  默认情况下,Eureka Server同时也是Eureka Client,多个微服务之间可以通过复制的方式,来实现服务注册表中数据的同步,Eureka Client也会缓存服务注册表中的信息,这样的好处是,不用每次请求都查询Eureka Server,降低了Eureka Server的压力,也降低了请求的延迟。其次,即使Eureka Server宕机了,消费者依然能依靠自己的缓存信息,找到服务提供者,提高了系统的可用性。但是依然存在Eureka Server宕机之后,某些微服务出现不可用情况却无法监测到,Eureka Client的缓存无法更新,影响系统的可用性。所以要使用集群让Eureka Server具有高可用性。

二:Eureka Server

  1、引入Eureka依赖:spring-cloud-starter-eureka-server

  2、在启动类添加注解:EnableEurekaServer

  3、配置文件:

#单机配置
server:
    port: 8761
eureka:
    client:
#是否将自己注册在Server上,默认true,由于当前应用是Server,所以设为false
        registerWihEureka: false 
#是否需要从Server获取注册信息,默认true,由于当前Server是单节点,不需要同步注册信息,所以设为false
        fetchRegistry: false 
        serviceUrl:
#与Eureka Server交互的地址,服务注册和查询都依赖这个地址,默认的地址是http://localhost:8761/eureka/,多个地址可以使用,号隔开
            defaultZong: http://localhost:8761/eureka/ 

#集群配置
#是否注册到Server和是否从Server上获取注册信息都是用默认的true
spring:
    application:
        name: microserver-discovery-eureka-ha
server:
    port: 8761
eureka:
    instance:
        hostname: peer1
    client:
        serviceUrl:
#另一个注册中心的地址
            defaultZong: http://localhost:8762/eureka/  
Server配置

三、服务注册

  1、引入Eureka依赖:spring-cloud-starter-eureka

  2、在启动类添加注解:@EnableDiscoveryClient 或@EnableEurekaClient

  3、配置文件:

#是否注册到Server和是否从Server上获取注册信息都是用默认的true
spring:
    application:
#指定注册到Server的应用名称
        name: microserver-provider-user
eureka:
    instance:
#将自己的ip地址注册到Server,如果不配置或者设为false,则标识注册微服务所在的hostname到Server
        prefer-ip-address: true
    client:
        serviceUrl:
#注册中心的地址,多个地址用英文逗号隔开
            defaultZong: http://localhost:8762/eureka/  
Client配置

四:为Eureka Server添加用户认证

  1、添加spring-boot-starter-security依赖

  2、配置文件:

#Server配置
#如果不设置这段内容,默认账户是user,密码是随机值,会在启动时打印出来
security:
    basic:
        enable: true #开启基于HTTP basic的认证
    user:
        name: user
        password: password12

#Client配置
eureka:
    client:
        serviceUrl:
            defaultZong: http://user:password12@localhost:8761/eureka/
配置文件

五:

猜你喜欢

转载自www.cnblogs.com/yanghanwen/p/12081237.html