原创 【HBase學習之四】HBase Client超時機制優化

    生產服務遇到過一個故障,大體來說就是hbase集羣故障,在沒有設置hbase客戶端超時的情況下,導致大量線程阻塞,從而影響了tomcat對其他服務請求的正常響應(504網關超時,超時率30%),需要規避這個問題需要兩個方面,1.設

原创 【Spring Cloud Hystrix】【二】:屬性詳解

      在上一篇服務容錯快速入門中定義了hystrix的配置參數,如下: hystrix: threadpool: testGroup: coreSize: 20 maximumSize: 100

原创 深入線程池ThreadPoolExecutor

    我們先從阿里編程手冊裏面關於併發編程的兩點來說明。 6.3:線程資源必須通過線程池創建,不允許在應用中自行顯示創建線程。 說明:使用線程池的好處是減少在創建和銷燬線程上所花的時間以及系統資源的開銷,解決資源的不足的問題。如果不使

原创 從CAS底層原理說到ABA問題

一、什麼是CAS?        CAS(Compare and sweep):比較並交換(compareAndSet),是解決多線程並行情況下使用鎖造成性能損耗的一種機制。比較當前工作內存中的值和主內存中的值,如果相同則執行規定操作,否

原创 Java Memory Model - Java內存模型

       Java虛擬機規範定義了Java內存模型(Java Memory Model,JMM)來屏蔽掉各種硬件和操作系統的內存訪問差異,以實現讓Java程序在各種平臺下都能達到一致的內存訪問效果。JMM本身是一種抽象的概念並不真實存

原创 volatile語義及底層原理

        當我們使用volatile關鍵字去修飾變量的時候,所以線程都會直接讀取該變量並且不緩存它。這就確保了線程讀取到的變量是同內存中是一致的。結合JMM的特性,volatile是一個最輕量級的同步機制,三大特點,1.保證主存可見

原创 【微服務穩定性之限流降級】【三】Sentinel簡介和示例

       Sentinel是面向分佈式服務架構的輕量級流量控制框架,主要以流量爲切入點,從流量控制、熔斷降級、系統負載保護等多個維度來保護服務的穩定性。   一、主要概念 資源:它可以是Java應用程序中的任何內容,例如,由應用程序提

原创 【微服務穩定性之限流降級】【一】限流概念和算法

       微服務穩定性穩定性三大殺器,緩存,隊列,限流降級。這一部分講一下限流降級。每個系統都有自己的最大服務能力,即在達到某個臨界點之前,系統都可以正常提供服務。爲了保證系統在面臨瞬間的流量時仍然可以對外提供服務,我們就需要使用限流

原创 【Spring Cloud Eureka】【一】:服務治理簡介

       Spring Cloud Eureka是Spring CLoud Netflix微服務套件中的一部分,它基於Netflix Eureka做了二次封裝,主要負責完成微服務架構中的服務治理功能。   一、服務治理       服

原创 【Spring Cloud Eureka】【二】:Eureka進階

一、基礎架構圖       registry:註冊; renew:續約; cancel:下線。   二、服務提供者Provider  2.1 服務註冊       Provider在啓動的時候會通過發送REST請求的方式將自己註冊到Eur

原创 內置鎖和重入鎖

一、重入鎖        Java提供了一中內置的鎖機制來支持原子性:同步代碼塊(Synchronized Block)。同步代碼塊包括兩部分:一個作爲鎖的對象引用(因爲synchronized鎖住的是對象),一個作爲這個鎖保護的代碼塊。

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

      幾乎所有的服務器應用程序都會使用某種形式的緩存,可以提升吞吐量,但是卻要消耗更多的內存。本文從ConcurrentHashMap開始,來個一步一步的優化一個高效的進程緩存。   一、ConcurrentHashMap(JDK7

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

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

原创 Redis緩存服務最佳實踐建議規範

      Redis是高性能的緩存服務組件,可以提供10萬+級別的讀寫請求量。但是如果使用不規範或者存在大風險的操作,導致服務抖動耗時上漲,甚至出現服務不可用的情況。下面就對這些問題進行分析說明。 一、key名稱 規範性:使用業務名作爲

原创 【動態代理之三】AOP簡介

       AOP作爲動態代理的一個典型應用,我們還是重新溫習一下。 一、AOP簡介 1.1 基本概念 切面(aspect):用來切入目標方法的類; 連接點(joinpoint):業務類和切面類的連接點,可以獲取業務對象的類名,方法名和