1. 程式人生 > >[從原始碼學設計]螞蟻金服SOFARegistry之延遲操作

[從原始碼學設計]螞蟻金服SOFARegistry之延遲操作

# [從原始碼學設計]螞蟻金服SOFARegistry之延遲操作 ## 0x00 摘要 SOFARegistry 是螞蟻金服開源的一個生產級、高時效、高可用的服務註冊中心。 本系列文章重點在於分析設計和架構,即利用多篇文章,從多個角度反推總結 DataServer 或者 SOFARegistry 的實現機制和架構思路,讓大家藉以學習阿里如何設計。 本文為第十七篇,介紹SOFARegistry的延遲操作。 ## 0x01 業務領域 ### 1.1 業務緣由 為什麼要有AfterWorkingProcess? AfterWorkingProcess 的作用是延遲操作。猜測大致是因為某些情況下,無法執行業務,只能在後續時機進行彌補。 在官方部落格有類似論述也支援我們的判斷 : > 在資料未同步完成之前,所有對新節點的讀資料操作,將轉發到擁有該資料分片的資料節點。 > > 在資料未同步完成之前,禁止對新節點的寫資料操作,防止在資料同步過程中出現新的資料不一致情況。 ### 1.2 學習方向 可以看到類似這種業務上延遲操作應該如何實現。 ## 0x02 實現 ### 2.1 定義 介面定義如下: ```java public interface AfterWorkingProcess { void afterWorkingProcess(); int getOrder(); } ``` ### 2.2 配置 這個 afterWorkProcessors 會作為 AfterWorkingProcessHandler 的成員變數進行處理。用於處理一些業務邏輯結束後的處理動作。 ```java @Bean(name = "afterWorkProcessors") pub