Spring-cloud學習筆記--- Eureka原始碼剖析之服務註冊介面

饅頭太帥了發表於2020-11-02

Spring-cloud學習筆記— Eureka原始碼剖析之服務註冊介面

1. ApplicationResource類的addInstance()⽅法中程式碼:因為註冊要針對應用,所以在ApplicationResource類中

  1. registry.register(info,"true".equals(isReplication));:節點註冊完成
    在這裡插入圖片描述
  2. com.netflix.eureka.registry.PeerAwareInstanceRegistryImplregister:註冊服務資訊並同步到其它Eureka節點
    在這裡插入圖片描述
  3. AbstractInstanceRegistryregister():註冊,例項資訊儲存到登錄檔是⼀個ConcurrentHashMap
  4. PeerAwareInstanceRegistryImplregisterreplicateToPeers() :複製到Eureka對等節點,進入到replicateToPeers()方法中去
        private void replicateToPeers(Action action, String appName, String id,
                                      InstanceInfo info /* optional */,
                                      InstanceStatus newStatus /* optional */, boolean
                                              isReplication) {
            Stopwatch tracer = action.getTimer().start();
            try {
                // 如果是複製操作(針對當前節點,false)
                if (isReplication) {
                    numberOfReplicationsLastMin.increment();
                }
                // 如果它已經是複製,請不要再次複製,直接return
                if (peerEurekaNodes == Collections.EMPTY_LIST || isReplication) {
                    return;
                }
                // 遍歷叢集所有節點(除當前節點外),從peerEurekaNodes獲取對等節點資訊,然後一個一個同步
                for (final PeerEurekaNode node : peerEurekaNodes.getPeerEurekaNodes()) {
                    // If the url represents this host, do not replicate to yourself.
                    //判斷迴圈到的節點是不是自己的,如果是自己的不同步,不是就同步
                    if (peerEurekaNodes.isThisMyUrl(node.getServiceUrl())) {
                        continue;
                    }
                    // 複製Instance例項操作到某個node節點
                    //判斷迴圈到的節點是不是自己的之後,同步操作就開始了
                    replicateInstanceActionsToPeers(action, appName, id, info,
                            newStatus, node);
                }
            } finally {
                tracer.stop();
            }
        }
    
  5. 檢視PeerAwareInstanceRegistryImplreplicateToPeers中的replicateInstanceActionsToPeers方法
    在這裡插入圖片描述

相關文章