日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Eureka源码分析

發布時間:2023/12/13 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Eureka源码分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Eureka源碼分析

?

  • Eureka server
  • ?

    入口:

    ?

    ?

    ?

    Spring.factories

    ?

    ?

    PS:

    意味著如果加載EurekaServerAutoConfiguration成功,需要

    @ConditionalOnBean(EurekaServerMarkerConfiguration.Marker.class)需加載成功.

    ?

    通過@Bean注入了很多類

    ?

    ?

    本質上, eureka-server包含很多事件:

    EurekaInstanceCanceledEvent

    服務下線事件

    EurekaInstanceRegisteredEvent

    服務注冊事件

    EurekaInstanceRenewedEvent

    服務續約事件

    EurekaRegistryAvailableEvent

    Eureka注冊中心啟動事件

    EurekaServerStartedEvent

    Eureka server啟動事件

    ?

    Java擴展: EventObject->EventListener

    ?

    包含注冊\下線\續約等

    事件注冊之前, 需要有監聽器, eureka所用的監聽器是EurekaEventListener

    ?

    針對上面五個事件, 我們可以自定義監聽器

    ?

    package com.macro.cloud;

    import com.netflix.appinfo.InstanceInfo;
    import org.springframework.cloud.netflix.eureka.server.event.*;
    import org.springframework.context.event.EventListener;
    import org.springframework.stereotype.Component;

    @Component
    public class EurekaStateChangeListener {
    ???
    @EventListener
    ???
    public void listen(EurekaInstanceCanceledEvent eurekaInstanceCanceledEvent) {
    ???????
    //服務斷線事件
    ???????
    String appName = eurekaInstanceCanceledEvent.getAppName();
    ??????? String serverId = eurekaInstanceCanceledEvent.getServerId();
    ??????? System.
    out.println(appName);
    ??? ????System.
    out.println(serverId);
    ??????? System.
    out.println("EurekaInstanceCanceledEvent");
    ??? }
    ???
    @EventListener
    ???
    public void listen(EurekaInstanceRegisteredEvent event) {
    ??????? InstanceInfo instanceInfo = event.getInstanceInfo();
    ??????? System.
    out.println(instanceInfo);
    ??????? System.
    out.println("EurekaInstanceRegisteredEvent");
    ??? }
    ???
    @EventListener
    ???
    public void listen(EurekaInstanceRenewedEvent event) {
    ??????? event.getAppName();
    ??????? event.getServerId();
    ??????? System.
    out.println("EurekaInstanceRenewedEvent");
    ??? }
    ???
    @EventListener
    ???
    public void listen(EurekaRegistryAvailableEvent event) {
    ??????? System.
    out.println("EurekaRegistryAvailableEvent");
    ??? }
    ???
    @EventListener
    ???
    public void listen(EurekaServerStartedEvent event) {
    ??????? System.
    out.println("EurekaServerStartedEvent");
    ???????
    //Server啟動
    ???
    }
    }

    ?

    ?

    其中eureka-server啟動時候, 會出發最后兩個事件, 即:

    EurekaRegistryAvailableEvent 和 EurekaServerStartedEvent.

    當eureka-client啟動后, 會出發EurekaInstanceRegisteredEvent事件.

    ?

    Eurekaserver總結如下:

    ?

  • Eureka client
  • ?

    ApplicationListenerMethodAdapter.java

    ?

    Eureka-client 底層是要了jerseyClient

    ?

    Builder resourceBuilder = jerseyClient.resource(serviceUrl).path(urlPath).getRequestBuilder();
    addExtraHeaders(resourceBuilder);
    response = resourceBuilder
    ??????? .header(
    "Accept-Encoding", "gzip")
    ??????? .type(MediaType.
    APPLICATION_JSON_TYPE)
    ??????? .accept(MediaType.
    APPLICATION_JSON)
    ??????? .post(ClientResponse.
    class, info);

    ?

    ?

    歡迎關注公眾號:? 戲說碼農職場

    ?

    ?

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的Eureka源码分析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。