SpringCloud.Eureka.源碼分析.001.EurekaServer web.xml分析

前面的話:

SpringCloud Eureka的用法相對比較簡單,這裏就不講了,可以參考官方文檔搭建一個EurekaServer測試一下。我覺得能看到這篇文章的人肯定也是想看一下源碼方面的知識,一起思考和學習。

1.EurekaServer web.xml

EurekaServer web.xml源碼主要內容如下:

<listener>
  <listener-class>com.netflix.eureka.EurekaBootStrap</listener-class>
</listener>

<filter>
  <filter-name>statusFilter</filter-name>
  <filter-class>com.netflix.eureka.StatusFilter</filter-class>
</filter>

<filter>
  <filter-name>requestAuthFilter</filter-name>
  <filter-class>com.netflix.eureka.ServerRequestAuthFilter</filter-class>
</filter>
<filter>
  <filter-name>rateLimitingFilter</filter-name>
  <filter-class>com.netflix.eureka.RateLimitingFilter</filter-class>
</filter>
<filter>
  <filter-name>gzipEncodingEnforcingFilter</filter-name>
  <filter-class>com.netflix.eureka.GzipEncodingEnforcingFilter</filter-class>
</filter>

我們大致猜測一下:

  • StatusFilter:負責狀態相關的處理邏輯
  • ServerRequestAuthFilter:一看就是,對請求進行授權認證的處理的
  • RateLimitingFilter:負責限流相關的邏輯的(很有可能成爲eureka-server裏面的一個技術亮點,看看人家eureka-server作爲一個註冊中心,是怎麼做限流的,先留意算法是什麼,留到後面去看)
  • GzipEncodingEnforcingFilter:gzip,壓縮相關的;encoding,編碼相關的

2.關於EurekaBootsTrap

從上面的web.xml我們可以分析出來,有一個ListenerClass即:EurekaBootStrap會啓動

<listener>
  <listener-class>com.netflix.eureka.EurekaBootStrap</listener-class>
</listener>

那麼我們接下來分析一下這個EurekaBootStrap,首先執行的方法是contextInitialized這個方法

public void contextInitialized(ServletContextEvent event) {
        try {
            initEurekaEnvironment();
            initEurekaServerContext();

            ServletContext sc = event.getServletContext();
            sc.setAttribute(EurekaServerContext.class.getName(), serverContext);
        } catch (Throwable e) {
            ......
        }
    }

我們猜測一下上面代碼中主要的兩個方法作用:
initEurekaEnvironment():初始化Eureka環境
initEurekaServerContext():初始化Eureka服務上下文

3.總結

  • 簡單介紹了web.xml
  • 瞭解到了EurekaBootStrap是核心入口
  • 瞭解到了EurekaBootStrap的主要的初始化方法contextInitialized
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章