最近看Elastic-Job源碼,看到它里面實現的任務運行軌跡的持久化,使用的是Guava的AsyncEventBus,一個內存級別的異步事件總線服務,實現了簡單的生產-消費者模式,從而在不影響任務執行效率的基礎上,將任務執行和任務軌跡記錄解耦,大大提高了EJ的性能。 EventBus ...
前言: guava提供的eventbus可以很方便的處理一對多的事件問題, 最近正好使用到了,做個小結,使用的demo網上已經很多了,不再贅述,本文主要是源碼分析 使用注意點 新老版本eventbus實現方式對比 一.原理 將定義的hander注冊到eventbus中,eventbus遍歷該handler及其父類中含有 subscribe注解的方法,封裝成subscriber對象,一個event會 ...
2021-01-24 15:30 0 321 推薦指數:
最近看Elastic-Job源碼,看到它里面實現的任務運行軌跡的持久化,使用的是Guava的AsyncEventBus,一個內存級別的異步事件總線服務,實現了簡單的生產-消費者模式,從而在不影響任務執行效率的基礎上,將任務執行和任務軌跡記錄解耦,大大提高了EJ的性能。 EventBus ...
EventBus 1. 什么是EventBus 圖片來源: 2. guava EventBus的構成 3. SubscriberRegistry 18版本: 19版本: 在構建Subscriber的時候根據方法是否 ...
一、架構速讀 傳統上,Java的進程內事件分發都是通過發布者和訂閱者之間的顯式注冊實現的。設計EventBus就是為了取代這種顯示注冊方式,使組件間有了更好的解耦。EventBus不是通用型的發布-訂閱實現,不適用於進程間通信。 架構圖如下: 。 二、簡單使用 步驟 ...
前言 RateLimiter是基於令牌桶算法實現的一個多線程限流器,它可以將請求均勻的進行處理,當然他並不是一個分布式限流器,只是對單機進行限流。它可以應用在定時拉取接口數據, 預防單機過大流量使用。 原理 首先先講一下令牌桶的原理,每隔一段時間生產一個令牌放入桶里,請求在執行時需要拿到 ...
createTempDir()之后就沒有什么有意思的函數了,基本上都是對Java IO函數操作的聚合,只看一個simplifyPath() 最后附上各函數功能的解釋 下文來自: ...
前言 在上文「Guava 源碼分析(Cache 原理)」中分析了 Guava Cache 的相關原理。 文末提到了回收機制、移除時間通知等內容,許多朋友也挺感興趣,這次就這兩個內容再來分析分析。 在開始之前先補習下 Java 自帶的兩個特性,Guava 中都有具體的應用 ...
EventBus是針對Android優化的發布-訂閱事件總線,簡化了Android組件間的通信。EventBus以其簡單易懂、優雅、開銷小等優點而備受歡迎。 github 地址:https://github.com/greenrobot/EventBus 1. 使用 1.1 ...
限流是保護高並發系統的三把利器之一,另外兩個是緩存和降級。 限流的目的是通過對並發訪問/請求進行限速或者一個時間窗口內的的請求進行限速來保護系統,一旦達到限制速率則可以拒絕服務或進行流量整形。 常 ...