1. 程式人生 > >微服務 - Eureka註冊中心

微服務 - Eureka註冊中心

我們來解決微服務的第一問題,服務的管理。

服務中心對外提供服務,需要對外暴露自己的地址。而consumer(呼叫者)需要記錄服務提供者的地址。將來地址出現變更,還需要及時更新。這在服務較少的時候並不覺得有什麼,但是在現在日益複雜的網際網路環境,一個專案肯定會拆分出十幾,甚至數十個微服務。此時如果還人為管理地址,不僅開發困難,將來測試、釋出上線都會非常麻煩,這與DevOps的思想是背道而馳的。

Eureka做什麼?

Eureka就好比是滴滴,負責管理、記錄服務提供者的資訊。服務呼叫者無需自己尋找服務,而是把自己的需求告訴Eureka,然後Eureka會把符合你需求的服務告訴你。

同時,服務提供方與Eureka之間通過“心跳”

機制進行監控,當某個服務提供方出現問題,Eureka自然會把它從服務列表中剔除。

這就實現了服務的自動註冊、發現、狀態監控。

  • Eureka:就是服務註冊中心(可以是一個叢集),對外暴露自己的地址
  • 提供者:啟動後向Eureka註冊自己資訊(地址,提供什麼服務)
  • 消費者:向Eureka訂閱服務,Eureka會將對應服務的所有提供者地址列表傳送給消費者,並且定期更新
  • 心跳(續約):提供者定期通過http方式向Eureka重新整理自己的狀態

我們公司採取的方案是自建式的基礎服務註冊中心

基礎架構

Eureka架構中的三個核心角色:

  • 服務註冊中心

    Eureka的服務端應用,提供服務註冊和發現功能

  • 服務提供者

    提供服務的應用,可以是SpringBoot應用,也可以是其它任意技術實現,只要對外提供的是Rest風格服務即可。

  • 服務消費者

    消費應用從註冊中心獲取服務列表,從而得知每個服務方的資訊,知道去哪裡呼叫服務方。

高可用的Eureka Server

Eureka Server即服務的註冊中心,在剛才的案例中,我們只有一個EurekaServer,事實上EurekaServer也可以是一個叢集,形成高可用的Eureka中心。

多個Eureka Server之間也會互相註冊為服務,當服務提供者註冊到Eureka Server叢集中的某個節點時,該節點會把服務的資訊同步給叢集中的每個節點,從而實現資料同步

。因此,無論客戶端訪問到Eureka Server叢集中的任意一個節點,都可以獲取到完整的服務列表資訊。

負載均衡Robbin

一個良好的註冊中心,除了高可用,還要有負載均衡,分發流量;