微服務 - Eureka註冊中心
阿新 • • 發佈:2018-11-22
我們來解決微服務的第一問題,服務的管理。
服務中心對外提供服務,需要對外暴露自己的地址。而consumer(呼叫者)需要記錄服務提供者的地址。將來地址出現變更,還需要及時更新。這在服務較少的時候並不覺得有什麼,但是在現在日益複雜的網際網路環境,一個專案肯定會拆分出十幾,甚至數十個微服務。此時如果還人為管理地址,不僅開發困難,將來測試、釋出上線都會非常麻煩,這與DevOps的思想是背道而馳的。
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叢集中的某個節點時,該節點會把服務的資訊同步給叢集中的每個節點,從而實現資料同步
負載均衡Robbin
一個良好的註冊中心,除了高可用,還要有負載均衡,分發流量;