分布式微服务架构打怪升级之服务注册与发现Eureka

       伙伴们,从本期我们开始进行SpringCloud系列组件的打怪升级之路。众所周知,SpringCloud是微服务架构的一站式解决方案,是多种微服务架构落地技术的集合体(包括服务注册与发现、服务调用、服务降级、服务熔断、服务消息队列、服务网关、配置中心管理等等)。今天我们就从老大哥服务注册与发现Eureka来说起。

       接触了才发现很多技术理论其实来源于生活实践,不知小伙伴们有没有这样的感触,比如我们今天要说的服务注册与发现Eureka,何为注册与发现拿生活中的例子来说,年轻的你大学刚毕业背着行囊准备到北上广深等一线大厂开启搬砖生涯,到了新的城市,首先肯定要找个能住的地对吧,那这时候我们通常会打开某App看看上面有没有合适的房源,然后电话联系中介实地看房子,合适的话拎包入住。在上面的例子中就包含着服务注册,房东把自己要租的房子信息注册到中介那里(挂到某App上),然后你呢,找中介从他那里看到了在这里注册的众多房源,也租到了自己满意的小窝,这个例子咱们在熟悉不过了。

       接下来我们就拿上面的示例结合服务注册与发现已经落地的实现Eureka来聊聊,Eureka包含两个组件(Eureka Server和Eureka client),各个微服务节点通过配置启动会在Eureka Server中进行注册(Eureka Server相当于例子中我们说的中介),比如房东出租房屋这个微服务通过配置启动后将会注册到Eureka Server中,出租房屋这个微服务在启动后,将会定时向注册中心发送心跳(默认周期为30秒),如果Eureka Sever在多个心跳周期内都没有收到出租房屋这个微服务发送的心跳那么Eureka Server将会从服务注册列表中把出租房屋这个微服务给移除(默认90秒),例子里面中介(Eureka Server)需要定期更新房屋信息,房东(出租房屋微服务)需要定期向中介(Eureka Server)同步消息房子是否还对外出租,长时间不给中介(Eureka Server)同步消息,中介就默认该房子不对外出租了进行下架处理。服务发现,即我们租客微服务通过注册中心(Eureka Server)获取租房的服务信息从而可以调用里面对应的租房接口,从而实现租房的目的。

实践:Eureka Server端pom文件加入eureka server依赖:

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

配置文件application.yml说明:

server:
  port: 7001#eureka服务端的端口
eureka:
  instance:
    hostname: server #eureka服务端的实例名称
  client:
    #false表示不向注册中心注册自己。
    register-with-eureka: false
    #false表示自己端就是注册中心,维护服务实例,并不需要去检索服务
    fetch-registry: false
    service-url:
      #设置与Eureka server交互的地址查询服务和注册服务
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
主启动类:
@SpringBootApplication
@EnableEurekaServer  //相当于一个开关,开启时,会激活相关配置,作为注册中心
public class ServerMain {
    public static void main(String[] args) {
        SpringApplication.run(ServerMain.class,args);
    }
}

 小总结下:改pom文件加入eureka-server依赖,写application.yml,主启动类添加@EnableEurekaServer #开启Eureka支持。运行主启动类即可得到:

 接下来租房微服务(Eureka client)注册进注册中心(Eureka Server)

pom文件添加eureka-client依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    <version>2.2.1.RELEASE</version>
</dependency>

配置文件application.yml添加如下:

server:
  port: 8001
eureka:
  client:
    #将自己注册进Eurekaserver默认为true。
    register-with-eureka: true
    #从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
    fetchRegistry: true
    service-url:
      defaultZone: http://localhost:7001/eureka
spring:
  application:
    name: house-rent

主启动类:

@SpringBootApplication
@EnableEurekaClient //开启向注册中心注册自身信息
public class EurekaServerMain {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerMain.class,args);
    }
}
注册信息如下:

可以看到出租房屋微服务已经注册到了中介(注册中心)。接下来我们就可以从中介(注册中心)这里获取房源来挑选自己合适的小窝了。

      提到注册中心,有一个CAP理论不知道小伙伴们了解不。介绍下每个字母的含义C:Consistency (强一致性)、A:Availability (可用性)、P:Partition tolerance (分区容错性)。一个分布式系统不可能同时很好的满足一致性、可用性和分区容错性这三个需求。Eureka强调的是可用性和容错性,它具有自我保护机制即:如果在15分钟内超过85%的客户端节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障,Eureka Server自动进入自我保护机制,此时不会在剔除这些客户端服务。我们可以进行配置如下:

eureka.server.enable-self-preservation = false//关闭自我保护机制,默认为true开启

一般我们在开发环境会选择关闭自我保护机制,生产环境会打开,与Eureka相对的Zookeeper强调的则是CP即强一致性和容错性。

 好了,伙伴们 我们下期见! 

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值