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

服務注冊中心是微服務架構中非常重要的一個組件,在微服務架構里主要起到了協調者的一個作用,注冊中心一般包含如下幾個功能:
1、服務發現:
服務注冊/反注冊:保存服務提供者和服務調用者的信息
服務訂閱/取消訂閱:服務調用者訂閱服務提供者的信息,最好有實時推送的功能
服務路由(可選):具有篩選整合服務提供者的能力
2、服務配置
配置訂閱:服務提供者和服務調用者訂閱微服務相關的配置
配置下發:主動將配置推送給服務提供者和服務調用者
3、服務健康監測
檢測服務提供者的健康情況
常見的注冊中心
zookeeper
dubbo中推薦zookeeper作為注冊中心
Eureka
Spring Cloud體系中應用廣泛
Consul
Go語言開發,支持多數據中心分布式高可用的服務發布和注冊服務,采用我們熟知的ralt算法保證服務的一致性,且支持健康檢查
Nacos
作為一個Nacos雜只想說6666啊,Nacos是一個更易於構建雲原生應用的動態服務發現,配置管理平台和服務管理平台,Spring Cloud Alibaba,
Eureka是Netfilx開發的服務發現框架,SpringCloud將它集成在自己的子項目spring-cloud-netfilx中,實現SpringCloud的服務發現功能

上圖簡要描述了Eureka的基本架構,由三個角色組成
1 Eureka Server
提供服務注冊和發現
2 Service Provider
服務提供方
將自身服務注冊到Eureka,從而使服務消費方能夠找到
3 Service Consumer
服務消費方
從Eureka獲取注冊服務列表,從而能夠消費服務
工作原理:
服務提供者開啟時向Eureka Server注冊實例,Eureka Server會將服務提供者的注冊信息放入到內存中,且默認每30秒對服務提供者進行心跳檢測,如果超過30秒則視為宕機,則刪除內存中的注冊信息
服務消費方從Eureka Server中獲取注冊信息,並保存到本地的內存中,並通過注冊信息與服務提供者進行通訊,這里可能會引起一致性問題,因為假如Eureka Server的檢測到服務提供者宕機則會刪除內存
而服務消費者卻還保存內存,這就引起了一致性問題,所有Eureka在CAP理論中(C 一致性 A 可用性 P 分區容錯性)中只滿足AP
Eureka總體介紹
我們的服務發現一般分為兩種模式一種為客戶端發現模式(我們主要講這個),一種為服務端發現模式
服務實例的網絡位置都是動態分配的,而且因為擴展,失效和升級等需求,服務實例會常常發生動態改變,因此客戶端一種更加復雜的服務發現機制
當使用客戶端發現模式時,客戶端負責決定相應服務實例之間的網絡位置,並且對請求實現負載均衡,客戶端從一個服務注冊服務中查詢,其中是所有可用服務實例的庫,客戶端使用負載均衡算法對從多個服務實例中選擇出一個,然后發出請求
本人的分布式框架也已經開源請大家多多支持啊!

