1. 程式人生 > >高並發編程初步印象

高並發編程初步印象

PE 奔潰 ati map 方法 公司 tips JD AD

【前言】
之後的技術方向應該是大數據量和高並發場景下的編程,分別對應大量數據的存儲查詢計算,超高請求的多線程處理,這才是以後的技術發展方向。當然是在能完成基礎業務的前提下,增刪改查數據轉換SSM這些。現在項目的用戶數上來了,經常出現,在公司測試好好的,一發布到現網,就會出各種性能瓶頸,請求超時,數據庫連接超時,甚至部件奔潰。所以不光是高並發的編程,更需要高並發場景下的測試,像公司基本都是功能測試,性能測試很少,測試不充分,肯定會出問題。
好了,廢話就不多說了,記錄下學習經驗。
【正文】
高並發主要包括:線程安全,線程封閉,線程調度,同步容器,並發容器,AQS,J.U.C等等
一般解決高並發問題,主要采取手段:擴容,緩存,隊列,拆分,服務降級與熔斷,數據庫切庫,分庫分表等等
說下這些在項目組的應用吧。擴容,基本所有部件都經歷過 單機-雙擊-集群;緩存,主要是在用戶訂購關系這塊用的redis+持久化;服務降級,是給接口加了線程鎖,頻率1tips;分庫分表,基本都會有用戶庫系統庫的概念,用戶表這種幾百w的大表,根據ID首字母拆成10個表。
高並發無非是為了保證你的線程是安全的,不會出現線程傳輸的數據和最後入庫的不一致。
線程安全主要包括:
線程安全性:原子性,可見性,有序性,atomic包,CAS算法,synchronized和lock,volatile,happes-before
安全發布對象:安全發布方法,不可變對象,final關鍵字使用,不可變方法,線程不安全類與寫法
線程封閉:堆棧封閉,threadLocal線程封閉,JDBC的線程封閉,同步容器,並發容器,J.U.C
AQS和J.U.C組件:CountDownLatch,CyclicBarrier,Semaphore

高並發編程初步印象