一、案例環境初始化:講述了通過https://start.spring.io 這個網頁,簡單創建一個spring boot框架,然後將其放在由碼雲代碼託管工具管理的一個項目中,由碼雲進行代碼管理,再通過idea打開項目進行後期創作的過程。藉助幾個工具,將環境搭建起來。
二、案例準備工作,其中提到的幾點值得學習的地方:
1、自定義註解,用於後期方便閱讀,使用到了@Retention(RetentionPolicy.SOURCE) 註解,其中常量RetentionPolicy.SOURCE,在被編譯時就會被忽略,在這裏有點可以爲其他做通用註釋的功能。
2、講述Spring中的@Target(Elementype.TYPE)註解;
三、併發模擬工具:
1、postman :Http請求模擬工具,在併發上並不是很專業,對於開發人員還是比較常見的。
此處注意學習下它的使用即可。
2、ApacheBeanch (通常叫ab工具):Apache附帶的工具,測試網站性能;
ab 是個命令,最常見簡單的用法如下:
ab -n 1000 -c 50 http://localhost:8080/test
注: ab 爲固定,命令名稱,相當於 Linux中的 ls 命令;
-n 後面的數字表示一共發送的請求次數,如上表示一共請求1000次;
-c 後面的數字,表示併發數量,如上表示同一時刻,可能有50個併發的請求;
最後加一個網址, 表示要請求訪問的地址;
ab命令可能還有其他參數,此處是基本常用的。
ab沒有可視化界面,在此處簡單說明下
註釋:
Concurrency Level : 50 表示: 併發量爲50;
Time taken for tests : 0.355 seconds 表示:測試總共用的時間。
Complete requests :1000 表示:測試總共完成的請求數
Failed requests : 0 表示: 請求失敗的次數
Total transferred : 136000 bytes 表示:所有請求的響應數據的長度總和。包括每個http響應數據的頭信息和正文的長度。但這裏不包括 http請求數據的長度,僅僅爲web流向用戶的應用層數據長度
HTML transferred : 4000 bytes 表示:所有請求響應的數據中正文數據的總和,也就是減去上一行中提到的頭信息的數據長度。
Requests per second :2816.64[#/sec](mean) 表示:吞吐率與併發數相關,就是上方complete requests / time taken for tests 比例
Time per request : 17.752[ms](mean) 表示:用戶平均請求等待時間
Time per request :0.355 [ms](mean,across all concurrent requests) 表示:服務器平均請求等待時間
Transfer rate : 374.08 [kbytes/sec] received 表示:這些測試中單位時間內從服務器請求的數據長度。計算爲:
Total transferred / Time taken for tests
3、JMeter:Apache組織開發的壓力測試工具;
該工具需要安裝,其名稱爲 apache-jmeter-版本號,可進入該目錄的bin 目錄下(Linux類系統),直接運行相關命令。
該工具爲可視化工具:
線程數:虛擬的用戶訪問數量
Ramp-Up Period (in seconds) :注意該值,是以秒爲單位
因爲工具功能多,底下可詳細瞭解
4、代碼:Semaphore 、CountDownLatch等用代碼模擬併發的場景;
countDownLatch 類一定程度上可以阻攔某些線程的進行;經常用於保證某些方法執行
完成之後進行的處理
sampore