原创 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