原创 paxos算法中master有效期與續約依賴機器時間的解決辦法

對於paxos算法,一般工程化時,爲了提高paxos算法效率,會引入master角色,並且要遵循在同一時刻,paxos集羣有且只有一個節點是master角色,或者沒有master角色;且只有master角色的節點可以發起propose,這

原创 關於i++與++i的一道題

前幾天刷LeetCode題,看到評論區有人問了一個有意思的問題,代碼如下: public static void main(String[] args) { int a[] = {1, 2, 3, 4, 5}; int num =

原创 負載均衡-粘性分配與平滑加權輪詢

說到負載均衡,我個人習慣分爲兩種,一種是靜態負載均衡,也就是把確定好的、有限的負載按照一定規則分配到不同的工作單元上,這種負載均衡算法只需要計算一次最終分配狀態即可。一種是動態負載均衡,即每次把新到來的負載按照一定規則分配到不同的工作單元

原创 我可以算出你的姓氏

下班沒事,出去享受下北京的夜生活。路過一個擺攤算卦的,招牌寫的“不開口算出您的姓氏”。看起來有點意思,索性看看怎麼個算法。 剛坐到攤位前的木椅上,攤主便開口說道:人生善惡非命定,爲善作惡各自招。不知陰功算命理,術士空口也無憑。小夥子,要算

原创 開源框架WPaxos源碼淺析

最近WPaxos框架已經開源,WPaxos開源地址。作爲旁觀者之一,大致簡單的梳理一下整體的代碼結構,做一個源碼淺析,後面有時間再對每一部分做深入的分析。 Paxos算法是一個強一致性的算法,最精簡的描述應當是Paxos原作者在《Paxo

原创 一個小夥伴的問題

下午休息的時候,小夥伴突然扔給我一段代碼 public class GCTest { public static void main(String[] args) { List<GCTest> aa = new ArrayList

原创 work steal and overpartition

工作竊取和超額切分,第一次聽到這個概念是從ZGC的Stripe Mark技術,它爲了提高垃圾回收的效率,把多個region劃分到不同的條紋,然後再把GC線程隔離到自己的條紋內進行垃圾回收。如果有線程處理完了自己的任務,則會加入到其他的條紋

原创 怎麼做配置下發

目錄   配置下發 少量用戶 大量用戶 複雜場景 開拓思維 配置下發 我們做開發,無論是做中間件還是業務都會面臨一個問題,我們的客戶端或者APP發版本後,需要運行中動態加載一些配置,比如負載均衡、服務發現等,這些配置需要從服務端來獲取,並

原创 java併發編程(二)-volatile寫操作前爲什麼不加LoadStore屏障

只要說到併發編程,volatile是永遠繞不開的一個點。理解了volatile,基本上也就理解了JMM。Java內存模型中的happens-before、as-if-serial等在前文介紹過,這裏只介紹volatile的內存語義實現。

原创 調整敏感度

目錄 目錄 一個功能 Netty高低水位 Java8的Map 調整敏感度 應用   一個功能 最近在做一個功能,消息隊列的消費端負載均衡,像kafka、RocketMQ等都可以做到全局消費的負載均衡,但是他們都需要一箇中心節點來做統一分配

原创 再談時間輪

時間輪很早前就很流行了,在很多優秀開源框架中都有用到,像kafka、netty。也算是現在工程師基本都瞭解的一個知識儲備了。有幸在工作中造過兩次輪子,所以今天聊聊時間輪。 時間輪是一種高性能定時器。 時間輪,顧名思義,就是一個基於時間的

原创 再談MappedByteBuffer與DirectBuffer

去年年底的時候,爲我們的分佈式消息隊列中間件寫源碼分析系列文章的時候,看到我們的存儲部分是參考了RocketMQ的實現。這部分有一個很有意思的內容 public AppendMessageResult appendMessage(fin

原创 Java對象在堆上分配嗎

昨天有個技術羣裏一個小夥伴分享了一次被虐的面試經歷,其中一道題很有意思:Java中對象都會分配在堆上嗎? 大部分小夥伴都在討論類似:redis爲什麼快?怎麼設計彈性伸縮的緩存系統?服務降級、服務熔斷等等非常高大上的問題。但是在如此高大上的

原创 由DCL引發的一次思考

上次羣裏面試的小夥伴在看完對逃逸分析的說明後,下功夫好好學了HotSpot即時編譯的相關知識,信心十足的又去面試了,結果又讓回家等消息。 看了看他分享的面試題,又在各種高大上的題目裏發現了一道有意思的題:請看一個DCL單例模式,並簡單說明

原创 springCloud(四)

 接上一篇,上次學習到了feign到底是如何構造request和發送請求的,最後的時候想看一下異常情況的時候到底是怎麼調用fallback的,但是一直沒進斷點,今天又重新試了一個,原來是會進入斷點的。 繼續學習。在HardCodeTarg