原创 RPC調用超時中斷機制的實現

在如今互聯網的架構趨勢下,微服務已經成爲一個不可或缺的服務架構了。將一個大的服務拆分若干子服務,然後遠程調用,已應對大流量、高併發的系統場景,如今開源的優秀RPC框架很多,例如 thrift、dubbo 、grpc等 本人公司也有兩套自主

原创 blockingQueue實現消費-生產模式

blockingQueue實爲阻塞隊列,數據由消費者線程、生產者線程共享。消費者產生數據放入阻塞隊列,倘若阻塞隊列已滿,則生產者線程被阻塞直到消費者線程取出數據或者是直接返回失敗,若隊列數據爲空,則消費者線程阻塞直到生產者線程放入

原创 kafka消息回溯

kafka支持兩種方式回溯。一種是基於消息偏移量回溯,一種是基於時間點的消息回溯。 基於消息偏移量回溯 在kafka的每個分區中,每條消息都有一個唯一的offset值 ,即消息偏移量,用來表示消息在partition分區中的位置。消費者每

原创 兜底之副本兜底

兜底是服務高可用的有效手段之一,一般用於對業務要求較高,服務可用性較強的場景 兜底常用的手段有:try catch捕獲異常指定兜底邏輯;默認值兜底;緩存崩潰數據庫兜底等等 接下來介紹另一場兜底策略:副本兜底,被用在我們服務的核心鏈路上。

原创 基於多路複用IO的Reactor模型實現

對NIO的瞭解請看我上篇博客,此處不作過多敘述 https://blog.csdn.net/CSDNzhangtao5/article/details/103023972   Reactor模式是一種事件處理模式,單個或多個事件(Even

原创 rpc基於netty異步調用後,捕獲對應響應結果的實現

由於netty通信是異步的,客戶端請求之後就不再阻塞等待服務端的結果返回了,客戶端可以去做其他的事情,而服務端處理完之後會將響應結果輸出給客戶端,這些客戶端並不知道這個響應結果是屬於哪次請求的結果。所有需要一套機制去實現響應結果隸屬於是屬

原创 整數二進制充當統計模型

最近項目中需要統計APP的最近幾次的在線離線情況,因爲有些商家的網絡信號很差,需要根據最近的心跳在線離線情況做一些事情,例如統計商戶APP最近10次的在線離線記錄,如果最近10次有8次離線那就認識商家是網絡比較差的商家,那麼就去對這部分商

原创 負載均衡之跑馬競賽算法

跑馬競賽算法是什麼?是一種能良好感知服務端負載進行連接的負載均衡算法。當客戶端與服務端進行長連接時,客戶端需要選擇合適的一臺服務器節點起進行連接。客戶端選擇服務端的ip有多種方式,跑馬競賽算法相比於其他又有什麼優點呢,怎麼去實現,接下來一

原创 kafka消息格式

       我們都知道,kafka是以日誌文件的方式來存儲kafka消息的,日誌消息的格式不僅關係功能維度 的擴展,還牽涉性能維度的優化。如果格式不恰當,會導致消息的大小偏大,佔用內存更高        kafka經歷了多代的演變,這裏

原创 分佈式環境生成唯一訂單id方案

分佈式環境生成一個唯一id從來不是一個容易的事,不同的節點都獨立的各自生成id,高併發性場景下容易生成相同的訂單id。 方案1:數據庫自增主鍵 優點:全局唯一、不會重複 缺點:訂單id有序、容易被外界爬蟲知道業務的訂單量數據 方案2:UU

原创 分佈式系統session同步

分佈式系統由於有多臺服務器,用戶在一次會話裏有可能訪問不同的服務器,這是由於每次請求都由負載均衡服務器通過算法去選擇訪問的服務器。那裏用戶可能第一次訪問服務器時web容器如tomcat新建了一個session保存在了服務器裏。再次

原创 ThreadLocal內存溢出(OOM)的原因

ThreadLocal是Java提供的一個線程安全類,其原理是每個線程都擁有各自的變量內存副本。其實就是每個線程Thread裏都有一個ThreadLocalMap類,用於存儲變量值。更新、刪除操作時,都是操作各自線程裏的hreadLoca

原创 freemarker(ftl)標籤用法

FreeMarker的插值有如下兩種類型:1,通用插值${expr};2,數字格式化插值:#{expr}或#{expr;format} ${book.name?if_exists } //用於判斷如果存在,就輸出這個值 ${

原创 jsonp 跨域請求

一般的我們在js裏用ajax動態的請求服務器數據,ajax底層其實是使用的是XmlHttpRequest對象,但是它只允許請求當前域名的資源,這一過程是同域的,即ajax請求的服務器與當前的頁面的url處於同一臺服務器中,但是有時

原创 Java 獲取絕對路徑與相對路徑

絕對路徑也就是一個文件的所在位置的完整路徑 例如:C:\ABC\2 這就是絕對路徑,指明2文件在C盤ABC文件下,從最大的目錄C盤開始表示出來. 相對路徑是說在某個目錄下,相對於這個目錄下,我的文件的位置 例如:我在C盤目錄