注冊中心及Eureka介紹


1 微服務的注冊中心
注冊中心可以說是微服務架構中的通訊錄,它記錄了服務和服務地址的映射關系。在分布式架構中,
服務會注冊到這里,當服務需要調用其它服務時,就這里找到服務的地址,進行調用。

 1.1 注冊中心的主要作用

服務注冊中心(下稱注冊中心)是微服務架構非常重要的一個組件,在微服務架構里主要起到了協調者
的一個作用。注冊中心一般包含如下幾個功能:
1. 服務發現:
服務注冊/反注冊:保存服務提供者和服務調用者的信息
服務訂閱/取消訂閱:服務調用者訂閱服務提供者的信息,最好有實時推送的功能
服務路由(可選):具有篩選整合服務提供者的能力。
2. 服務配置:
配置訂閱:服務提供者和服務調用者訂閱微服務相關的配置
配置下發:主動將配置推送給服務提供者和服務調用者
3. 服務健康檢測:
檢測服務提供者的健康情況

1.2 常見的注冊中心
Zookeeper
zookeeper它是一個分布式服務框架,是Apache Hadoop 的一個子項目,它主要是用來解決分布式應
用中經常遇到的一些數據管理問題,如:統一命名服務、狀態同步服務、集群管理、分布式應用配置項
的管理等。簡單來說zookeeper=文件系統+監聽通知機制。
Eureka
Eureka是在Java語言上,基於Restful Api開發的服務注冊與發現組件,Springcloud Netflix中的重要組件。
Consul
Consul是由HashiCorp基於Go語言開發的支持多數據中心分布式高可用的服務發布和注冊服務軟件,
采用Raft算法保證服務的一致性,且支持健康檢查。

Nacos
Nacos是一個更易於構建雲原生應用的動態服務發現、配置管理和服務管理平台。簡單來說 Nacos 就是
注冊中心 + 配置中心的組合,提供簡單易用的特性集,幫助我們解決微服務開發必會涉及到的服務注冊
與發現,服務配置,服務管理等問題。Nacos 還是 Spring Cloud Alibaba 組件之一,負責服務注冊與發現

最后通過一張表格大致了解EurekaConsulZookeeper的異同點。選擇什么類型的服務注冊與
發現組件可以根據自身項目要求決定。

組件名 語言 CAP 一致性算法 服務健康檢查 對外暴露接口
Eureka Java AP 可配支持 HTTP
Consul Go CP Raft 支持 HTTP/DNS
Zookeeper Java CP Paxos 支持 客戶端
Nacos Java AP Raft 支持 HTTP

2 Eureka的概述

2.1 Eureka的基礎知識
EurekaNetflix開發的服務發現框架,SpringCloud將它集成在自己的子項目spring-cloud-netflix中,
實現SpringCloud的服務發現功能。

 上圖簡要描述了Eureka的基本架構,由3個角色組成:
1Eureka Server
提供服務注冊和發現
2Service Provider
服務提供方
將自身服務注冊到Eureka,從而使服務消費方能夠找到
3Service Consumer
服務消費方
Eureka獲取注冊服務列表,從而能夠消費服務

2.2 Eureka的交互流程與原理

 

 圖是來自Eureka官方的架構圖,大致描述了Eureka集群的工作過程。圖中包含的組件非常多,可能比
較難以理解,我們用通俗易懂的語言解釋一下:

  • Application Service 相當於本書中的服務提供者,Application Client相當於服務消費者;
  • Make Remote Call,可以簡單理解為調用RESTful API;
  • us-east-1c、us-east-1d等都是zone,它們都屬於us-east-1這個region;

由圖可知,Eureka包含兩個組件:Eureka Server Eureka Client,它們的作用如下:

  • Eureka Client是一個Java客戶端,用於簡化與Eureka Server的交互;Eureka Server提供服務發現的能力,各個微服務啟動時,會通過Eureka Client向Eureka Server進行注冊自己的信息(例如網絡信息),Eureka Server會存儲該服務的信息;
  • 微服務啟動后,會周期性地向Eureka Server發送心跳(默認周期為30秒)以續約自己的信息。如果Eureka Server在一定時間內沒有接收到某個微服務節點的心跳,Eureka Server將會注銷該微服務節點(默認90秒);
  • 每個Eureka Server同時也是Eureka Client,多個Eureka Server之間通過復制的方式完成服務注冊表的同步;
  • Eureka Client會緩存Eureka Server中的信息。即使所有的Eureka Server節點都宕掉,服務消費者依然可以使用緩存中的信息找到服務提供者。

綜上,Eureka通過心跳檢測、健康檢查和客戶端緩存等機制,提高了系統的靈活性、可伸縮性和可用性。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM