后台开发笔记

Eureka服务注册与发现机制

2021-01-20  本文已影响0人  Figo_OU

1. Eureka与传统无服务注册中心对比

1.1. 无服务注册中心:
-1.1.1. 需要知道在代码中hard code请求具体的ip、端口和具体的路由。
2. 当接口系统服务器不固定,随时可能增删机器时,我们得频繁修改nginx或者代码。

            @Autowired
            private RestTemplate restTemplate;
            
            @GetMapping("index")
            public Object getIndex(){
                return restTemplate.getForObject("http://localhost:8090/",String.class,"");
            }

1.2. eureka
1. 服务提供者启动时:定时向Eureka-server注册自己的服务信息(服务名、ip、端口等)

     2. 服务消费者启动时:后台定时拉取eureka-server中存储的服务信息。
  
     3. ```
        #yml文件配置
        spring:
          application:
            name: helloserver
        ```
  
     4. ```
        //服务调用代码
        @Autowired
        private RestTemplate restTemplate;
        
        @GetMapping("index")
        public Object getIndex(){
        //HELLOSERVER为服务名
            return restTemplate.getForObject("http://HELLOSERVER/",String.class,"");
        }
        ```
调用流程

2. eureka提供zone的概念。

  1. 如果消费者是在广东,而服务器有在广东、上海、背景,那么可以在配置文件中设置分区。使服务响应更加高效。
      eureka.client.availability-zones.beijing:zone-1
      eureka.client.service-url.zone = http://localhost:100001/eureka

3. 当有多个服务提供者(简称服务)注册到注册中心时,我们消费者去调用可以会调用到不同的服务中去。

4. client服务启动时服务如何注册到eureka中?

  - 在client初始化的时候,会初始化一大堆的定时任务。
  -  定时任务中,包含了一个叫HeartBeat的定时任务。
  -  心跳(heartbeat)定时任务启动后,会定时的给服务注册中心发起一次请求(应该是请求自身服务),判断当前服务实例有没有注册到eureka上面去。如果没有注册,将返回404回来。如果已经注册,将返回服务实例是否正常的结果。
  -  如果请求返回404 。那么将调用register方法,将当前服务实例注册到eureka中。

5. 服务端如何保存这些信息?

6. 消费者如何根据服务名称发现服务实例?

7. 如何构建高可用的eureka集群?

在eureka的高可用状态下,这些注册中心是对等的,他们会将互相将注册在自己的实例同步给其他的注册中心。

  1. eureka有什么机制防止在同步过程中陷入同步循环(不断同步实例到其他注册中心)?
    在发送同步信息时,会带上isReplication参数,用于判断是客户端发过来的数据。还是其他注册中心同步过来的数据。如果isReplication为true则将跳过注册步骤。

8. 心跳和服务剔除机制是什么?

9. eureka自我保护模式是什么?

10. Eureka注册表多级缓存架构有了解过吗?

11. 微服务注册中心的注册表如何更好的防止读写并发冲突?

12. Nacos&Eureka&Zookeeper集群架构都有脑裂问题吗?

13.eureka服务名称区分大小写吗?

不区分。

上一篇 下一篇

猜你喜欢

热点阅读