摘要:為什么需要集群流控呢?假設需要將某個API的總qps限制在100,機器數可能為50,這時很自然的想到使用一個專門的server來統計總的調用量,其他實例與該server通信來判斷是否可以調用,這就是基本的集群流控方式,sentinel的實現就是這樣的。 如果服務調用使用輪訓或者隨機路由方式,理論上可 閱讀全文
posted @ 2019-07-01 17:05 luoxn28 閱讀 (574) 評論 (1) 編輯
摘要:sentinel的滑動窗口統計機制就是根據當前時間,獲取對應的時間窗口,并更新該時間窗口中的各項統計指標(pass/block/rt等),這些指標被用來進行后續判斷,比如限流、降級等;隨著時間的推移,當前時間點對應的時間窗口是變化的,這時會涉及到時間窗口的初始化、復用等。可以說,sentinel上的 閱讀全文
posted @ 2019-06-30 11:53 luoxn28 閱讀 (224) 評論 (0) 編輯
摘要:編者注:前段時間筆者在團隊內部分享了sentinel原理設計與實現,主要講解了sentinel基礎概念和工作原理,工作原理部分大家聽了基本都了解了,但是對于sentinel的幾個概念及其之間的關系還有挺多同學有點模糊的,趁著這幾天比較空,針對sentinel的幾個核心概念,做了一些總結,希望能幫助一 閱讀全文
posted @ 2019-06-28 08:47 luoxn28 閱讀 (330) 評論 (0) 編輯
摘要:從此Redis是路人 序言:Redis(Remote DIctionary Server)作為一個開源/C實現/高性能/基于內存的key-value存儲系統,相信做Java的小伙伴都不會陌生。Redis常用于緩存、分布式鎖、隊列(或有序集合)等場景,追求技術的小伙伴們肯定不只滿足于Redis的使用上 閱讀全文
posted @ 2019-06-27 12:51 luoxn28 閱讀 (239) 評論 (0) 編輯
摘要:之前同事反饋說線上遇到Redis反序列化異常問題,異常如下: 已知信息如下: 該異常不是必現的,偶爾才會出現; 出現該異常后重啟應用或者過一會就好了; 序列化協議使用了hessian。 因為偶爾出現,首先看了報異常那塊業務邏輯是不是有問題,看了一遍也發現什么問題。看了下對應日志,發現是在Redis讀 閱讀全文
posted @ 2019-06-24 11:05 luoxn28 閱讀 (556) 評論 (0) 編輯
摘要:前幾天和朋友閑聊,說遇到了一個ConcurrentHashMap死循環問題,當時心里想這不科學呀?ConcurrentHashMap怎么還有死循環呢,畢竟它已經解決HashMap中rehash中死循環問題了,但是隨著深入的分析,發現事情并沒有之前想的那么簡單~ (以下分析基于jdk版本:jdk1.8 閱讀全文
posted @ 2019-06-22 21:27 luoxn28 閱讀 (357) 評論 (0) 編輯
摘要:以下ConcurrentHashMap以jdk8中為例進行分析,ConcurrentHashMap是一個線程安全、基于數組+鏈表(或者紅黑樹)的kv容器,主要特性如下: 線程安全,數組中單個slot元素個數超過8個時會將鏈表結構轉換成紅黑樹,注意樹節點之間還是有next指針的; 當元素個數超過N(N 閱讀全文
posted @ 2019-06-22 10:26 luoxn28 閱讀 (376) 評論 (1) 編輯
摘要:想必很多小伙伴們對ThreadLocal并不陌生,ThreadLocal叫做線程本地變量,也就是ThreadLocal為變量在每個線程中都創建了一個副本,每個線程可以訪問自己內部的副本變量。那么,我們使用ThreadLocal一定線程安全么?話不多說,先上結論: 如果threadlocal.get之 閱讀全文
posted @ 2019-05-24 09:50 luoxn28 閱讀 (1026) 評論 (0) 編輯
摘要:MySQL基礎概念相關的名詞還是挺多的,比如3大范式、4種隔離界別、ACID、DQL、DML、DDL,還有redo、undo、binlog等,本文就統一整理下MySQL常見的基礎概念,方便小伙伴們翻閱~ MySQL相關的名詞概念還是挺多的,但是常用的也不多,因此將常用的統計整理下,便于回顧: DQL 閱讀全文
posted @ 2019-05-20 17:21 luoxn28 閱讀 (242) 評論 (0) 編輯
摘要:Redis用到的底層數據結構有:簡單動態字符串、雙端鏈表、字典、壓縮列表、整數集合、跳躍表等,Redis并沒有直接使用這些數據結構來實現鍵值對數據庫,而是基于這些數據結構創建了一個對象系統,這個系統包括字符串對象、列表對象、哈希對象、集合對象和有序結合對象共5種類型的對象。 1 簡單動態字符串 re 閱讀全文
posted @ 2017-07-01 21:54 luoxn28 閱讀 (3029) 評論 (0) 編輯
摘要:1 Redis內存管理 Redis內存管理相關文件為zmalloc.c/zmalloc.h,其只是對C中內存管理函數做了簡單的封裝,屏蔽了底層平臺的差異,并增加了內存使用情況統計的功能。 void *zmalloc(size_t size) { // 多申請的一部分內存用于存儲當前分配了多少自己的內 閱讀全文
posted @ 2017-07-01 11:20 luoxn28 閱讀 (1433) 評論 (0) 編輯
摘要:1 Class對象 理解RTTI在Java中的工作原理,首先需要知道類型信息在運行時是如何表示的,這是由Class對象來完成的,它包含了與類有關的信息。Class對象就是用來創建所有“常規”對象的,Java使用Class對象來執行RTTI,即使你正在執行的是類似類型轉換這樣的操作。 每個類都會產生一 閱讀全文
posted @ 2017-06-30 21:23 luoxn28 閱讀 (3071) 評論 (0) 編輯
摘要:MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優秀的持久層框架,其主要就完成2件事情: MyBatis的主要設計目的就是讓我們對執行SQL語句時對輸入輸出的數據管理更加方便,所以方便地寫出SQL和方便地獲取SQL的執行結果才是MyBatis的核心競爭力。 MyBatis的配置 MyBa 閱讀全文
posted @ 2017-04-08 23:12 luoxn28 閱讀 (110916) 評論 (7) 編輯
摘要:Spring是一個輕量級的Java開發框架,其提供的兩大基礎功能為IoC和AOP,其中IoC為依賴反轉(Inversion of Control)。IOC容器的基本理念就是“為別人服務”,那為別人服務什么呢?其中最重要就是業務對象的構建管理和業務對象之間的依賴綁定。 業務對象的構建管理:業務場景中, 閱讀全文
posted @ 2017-03-26 23:15 luoxn28 閱讀 (1973) 評論 (0) 編輯
摘要:如果計算一個表達式,比如 4+5+6*2,隨著計算器的不同,簡單的四功能計算器是30,許多科學計算器知道乘法的優先級高于加法,所以科學答案是21。典型計算順序可以是計算4+5,存為臨時變量a,再計算6*2,存為b,最后計算a+b可得出最后結果。這種操作順序如下:45+62*+ 這種記法就是后綴表達式 閱讀全文
posted @ 2017-02-12 16:03 luoxn28 閱讀 (2400) 評論 (0) 編輯
内蒙古快3开奖结果