我們知道nacos是支持CP和AP切換的,這是其他注冊中心不具備的。接下來我們說一下,什么場景切換
先來復習一下CAP理論
P:分區容錯性:指的分布式系統中的某個節點或者網絡分區出現了故障的時候,整個系統仍然能對外提供滿足一致性和可用性的服務。也就是說部分故障不影響整體使用。
事實上我們在設計分布式系統是都會考慮到bug,硬件,網絡等各種原因造成的故障,所以即使部分節點或者網絡出現故障,我們要求整個系統還是要繼續使用的
(不繼續使用,相當於只有一個分區,那么也就沒有后續的一致性和可用性了)
A:可用性: 一直可以正常的做讀寫操作。簡單而言就是客戶端一直可以正常訪問並得到系統的正常響應。用戶角度來看就是不會出現系統操作失敗或者訪問超時等問題。
C:一致性:在分布式系統完成某寫操作后任何讀操作,都應該獲取到該寫操作寫入的那個最新的值。相當於要求分布式系統中的各節點時時刻刻保持數據的一致性。
C是所有節點在同一時間看到的數據是一致的;而A的定義是所有的請求都會收到響應。
如何選擇使用何種模式? 一般來說,如果不需要存儲服務級別的信息且服務實例是通過nacos-client注冊,並能夠保持心跳上報,那么就可以選擇AP模式。當前主流的服務如Spring cloud和Dubbo服務 ,都適用於AP模式,AP模式為了服務的可用性而減弱了一致性,因此AP模式下只支持注冊臨時實例。 如果需要在服務級別編輯或者存儲配置信息,那么CP是必須的,K8S服務和DNS服務則適用於CP模式 CP模式下則支持注冊持久化實例,此時則是以Raft協議為集群運行模式,該模式下注冊實例之前必須先注冊服務,如果服務不存在,則會返回錯誤。