原创 【Redis】Redis最大連接數maxTotal設置過小的問題

     最近由於不合理的配置了redis中的最大連接數導致了線上服務間歇性不可用的問題,問題無小事,穩定大於一切。 一、結論       先直接說結論:併發量激增,redis最大連接數過小,導致獲取redis連接超時,超時導致大量請求阻

原创 【Mysql】記一次limit優化

       在實際生產場景中,遇到過需要分頁讀取的記錄的問題,當時表在百萬級別,當用limit查詢幾十萬頁(每頁10條)的時候就已經很慢了。我們進行分析,當然分析的前提是對explain分析執行計劃有所瞭解。 表結構如下: CREAT

原创 【Mysql】Explain關鍵字分析SQL性能

      在生產項目中,總有需要分析sql性能的時候,看看自己寫的sql慢在哪裏,那就需要用到explan關鍵字來進行分析,那什麼是explain,下面就來分析一下。 一、什麼是explain?         使用explain關鍵字

原创 【JVM】OOMError之Unable to create new native thread

       最近線上出現了一個OOM的問題,使得服務異常以至於不可用。 一、現象        從現象來看就是請求服務全部失敗,線程數激增,cpu和內存顯示相對正常。查看error.log,都是"error.log:unable to

原创 【微服務穩定性之限流降級】【二】RateLimiter實戰

     RateLimiter是guava中concurrent包下的一個限流工具類,使用了令牌桶算法。下面簡單的介紹一下。   一、RateLimiter API 修飾符 方法 描述 double acquire()

原创 高可用進程內緩存設計和實現【二】

     在系統設計中,爲了提升性能往往需要使用到緩存,分佈式緩存效率已經很高了,例如常用的redis以及memcache,但是對於極高併發,對響應要求極高的系統,則需要使用進程內緩存,下面將進程內緩存和分佈式緩存進行了對比:   優點

原创 金字塔結構式表達利器

        衆所周知,語言傳遞存在嚴重的損耗,同一個事情A,小明給小王表達,小王理解成B,小王給小紅表達,小紅理解成C。職場中,如何在有限時間內突出重點、思路清晰、層次分明的表達觀點,一直是大家面臨的挑戰之一。在這裏向大家介紹深得人心

原创 JDK8 Stream用法分析-雙端隊列和工作密取

       最近在做項目的時候使用到了jdk8的parallelStream想來加快程序的執行效率,沒有想到得到的集合裏面有很多null,同時偶爾也會出現ArrayIndexOutOfBoundsException錯誤,下面就逐步進行解

原创 Spring Mybatis Chinese Character Empty Problem

      在測試項目的過程中有中文條件查詢,但是發現通過spring mybatis竟然查詢不到結果,即結果爲空,需要解決這個問題。先說一下這個問題的解法: 1.在spring的數據庫配置中需要使用utf8編碼,即:useUnicode

原创 【大道模式】策略模式-Strategy Pattern

     當你的代碼中出現大量的if else的時候,是時候考慮一下策略模式了。 基本介紹: 1)策略模式中,定義算法族,分別封裝起來,讓他們之間可以相互替換,此模式讓算法的變化獨立於使用算法的客戶。 2)這算法體現了幾個設計原則: 第一

原创 【大道模式】攔截過濾器模式-Intercepting Filter Pattern

       最近在交接項目的過程中看到了攔截過濾器模式,用於在覈心請求的"前後處理",比如在請求前對參數進行校驗、做請求統計、數據埋點;在請求後記錄返回結果、打印日誌、處理日誌(寫入ES,HBase等),有點類似於aop的環繞aroun

原创 【Spring Cloud Feign】超時重試總結

       最近在生產環境中出現配置了ribbon的重試參數,但是沒有生效,表現就是下游服務上線的過程中,上游服務總是拿到超時降級的錯誤碼,配置如下: hystrix: threadpool: group: c

原创 【Spring Cloud Hystrix】【一】:服務容錯快速入門

一、Why服務容錯        在微服務架構中,需要將系統拆分成多個服務單元,各單元的應用間通過服務註冊與訂閱的方式相互依賴。由於服務之間通過遠程過程調用RPC的方式執行,就有可能因爲網絡原因或者依賴服務自身問題造成調用失敗或延遲,而這

原创 【Spring Cloud Hystrix】【三】:資源隔離

        Hystrix使用“艙壁模式”實現線程池的隔離,它會將每一個依賴服務創建一個獨立的線程池,這樣就算某個服務出現延遲過高的情況,也只是對該依賴服務的調用產生影響。        如HBASE Client超時機制優化一文的場

原创 【Redis】高可用之複製

      redis集羣中的從服務器同步主服務器上的數據稱之爲:複製。   一、舊版複製功能的實現(2.8以前) redis的複製功能分爲同步(sync)和命令傳播(command propagate)兩個操作。 >同步:將從服務器的數