精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

讓我們一起編寫一個接口壓測工具

開發 開發工具
前段時間有個項目即將上線,需要對其中的核心接口進行壓測;由于我們的接口是 gRPC 協議,找了一圈發現壓測工具并不像 HTTP 那么多。

[[434976]]

前言

前段時間有個項目即將上線,需要對其中的核心接口進行壓測;由于我們的接口是 gRPC 協議,找了一圈發現壓測工具并不像 HTTP 那么多。

最終發現了 ghz 這個工具,功能也非常齊全。

事后我在想為啥做 gRPC 壓測的工具這么少,是有什么難點嘛?為了驗證這個問題于是我準備自己寫一個工具。

特性

前前后后大概花了個周末的時間完成了相關功能。

https://github.com/crossoverJie/ptg/

也是一個命令行工具,使用起來效果如上圖;完整的命令如下:

  1. NAME
  2.    ptg - Performance testing tool (Go) 
  3.  
  4. USAGE: 
  5.    ptg [global options] command [command options] [arguments...] 
  6.  
  7. COMMANDS: 
  8.    help, h  Shows a list of commands or help for one command 
  9.  
  10. GLOBAL OPTIONS: 
  11.    --thread value, -t value              -t 10 (default: 1 thread) 
  12.    --Request value, --proto value        -proto http/grpc (default: http) 
  13.    --protocol value, --pf value          -pf /file/order.proto 
  14.    --fully-qualified value, --fqn value  -fqn package.Service.Method 
  15.    --duration value, -d value            -d 10s (default: Duration of test in seconds, Default 10s) 
  16.    --request value, -c value             -c 100 (default: 100) 
  17.    --HTTP value, -M value                -m GET (default: GET) 
  18.    --bodyPath value, --body value        -body bodyPath.json 
  19.    --header value, -H value              HTTP header to add to request, e.g. "-H Content-Type: application/json" 
  20.    --target value, --tg value            http://gobyexample.com/grpc:127.0.0.1:5000 
  21.    --help, -h                            show help (default: false) 

考慮到受眾,所以同時支持 HTTP 與 gRPC 接口的壓測。

做 gRPC 壓測時所需的參數要多一些:

  1. ptg -t 10 -c 100 -proto grpc -pf /xx/xx.proto -fqn hello.Hi.Say -body test.json -tg "127.0.0.1:5000" 

比如需要提供 proto 文件的路徑、具體的請求參數還有請求接口的全路徑名稱。

目前只支持最常見的 unary call 調用,后續如果有需要的話也可以 stream。

同時也支持壓測時間、次數兩種壓測方式。

安裝

想體驗度朋友如果本地有 go 環境那直接運行:

  1. go get github.com/crossoverJie/ptg 

沒有環境也沒關系,可以再 release 頁面下載與自己環境對應的版本解壓使用。

https://github.com/crossoverJie/ptg/releases

設計模式

整個開發過程中還是有幾個點想和大家分享,首先是設計模式。

因為一開始設計時就考慮到需要支持不同的壓測模式(次數、時間;后續也可以新增其他的模式)。

所以我便根據壓測的生命周期定義了一套接口:

  1. type ( 
  2.  Model interface { 
  3.   Init() 
  4.   Run() 
  5.   Finish() 
  6.   PrintSate() 
  7.   Shutdown() 
  8.  } 
  9. )  

從名字也能看出來,分別對應:

  • 壓測初始化
  • 運行壓測
  • 停止壓測
  • 打印壓測信息
  • 關閉程序、釋放資源

然后在兩個不同的模式中進行實現。

這其實就是一個典型的依賴倒置原則。

程序員要依賴于抽象接口編程、不要依賴具體的實現。

其實大白話就是咱們 Java 里常說的面向接口編程;這個編程技巧在開發框架、SDK或是多種實現的業務中常用。

好處當然是顯而易見:當接口定義好之后,不同的業務只需要根據接口實現自己的業務就好,完全不會互相影響;維護、擴展都很方便。

支持 HTTP 和 gRPC 也是同理實現的:

  1. type ( 
  2.  Client interface { 
  3.   Request() (*Response, error) 
  4.  } 
  5. )  

當然前提得是前期的接口定義需要考慮周全、不能之后頻繁修改接口定義,這樣的接口就沒有意義了。

goroutine

另外一點則是不得不感嘆 goroutine+select+channel 這套并發編程模型真的好用,并且也非常容易理解。

很容易就能寫出一套并發代碼:

  1. func (c *CountModel) Init() { 
  2.  c.wait.Add(c.count
  3.  c.workCh = make(chan *Job, c.count
  4.  for i := 0; i < c.count; i++ { 
  5.   go func() { 
  6.    c.workCh <- &Job{ 
  7.     thread:   thread, 
  8.     duration: duration, 
  9.     count:    c.count
  10.     target:   target, 
  11.    } 
  12.   }() 
  13.  } 

比如這里需要初始化 N 個 goroutine 執行任務,只需要使用 go 關鍵字,然后利用 channel 將任務寫入。

當然在使用 goroutine+channel 配合使用時也得小心 goroutine 泄露的問題;簡單來說就是在程序員退出時還有 goroutine 沒有退出。

比較常見的例子就是向一個無緩沖的 channel 中寫數據,當沒有其他 goroutine 來讀取數時,寫入的 goroutine 就會被一直阻塞,最終導致泄露。

總結

有 gRPC 接口壓測需求的朋友歡迎試用,提出寶貴意見;當然 HTTP 接口也可以。

 

源碼地址:https://github.com/crossoverJie/ptg/

 

責任編輯:武曉燕 來源: crossoverJie
相關推薦

2022-08-29 07:48:27

文件數據參數類型

2022-03-08 17:52:58

TCP格式IP

2021-08-27 07:06:10

IOJava抽象

2021-12-29 08:27:05

ByteBuffer磁盤服務器

2022-03-31 18:59:43

數據庫InnoDBMySQL

2023-08-14 08:38:26

反射reflect結構體

2022-02-14 10:16:22

Axios接口HTTP

2022-06-26 09:40:55

Django框架服務

2022-02-14 07:03:31

網站安全MFA

2016-09-06 10:39:30

Dell Techno

2021-07-15 07:23:28

Singlefligh設計

2021-11-26 07:00:05

反轉整數數字

2022-06-27 08:00:49

hook工具庫函數

2012-04-14 20:47:45

Android

2021-12-16 12:01:21

區塊鏈Libra貨幣

2021-07-31 11:40:55

Openresty開源

2023-08-02 08:35:54

文件操作數據源

2022-07-10 23:15:46

Go語言內存

2022-08-01 07:57:03

數組操作內存

2021-05-17 10:50:15

系統調用內核
點贊
收藏

51CTO技術棧公眾號

色哟哟免费视频| 97超碰人人爱| 一本色道久久综合精品婷婷 | 亚洲人成人99网站| 污污网站免费观看| av影视在线看| 国产精品福利一区二区| 国产精品久久久久久久久久久久午夜片 | 91麻豆精品国产91久久久更新时间| 男女激烈动态图| 婷婷丁香一区二区三区| 美女看a上一区| 97免费视频在线| 国产美女久久久久久| 亚洲自拍电影| 精品国产麻豆免费人成网站| 欧美美女一级片| 成人免费一区二区三区牛牛| 国产精品乱子久久久久| 久久久久国产精品视频| 北条麻妃一二三区| 精品午夜一区二区三区在线观看| 69av在线播放| 男人与禽猛交狂配| 成人综合专区| 日韩av在线看| 国产午夜在线一区二区三区| 96视频在线观看欧美| 91国内精品野花午夜精品 | 蜜臀a∨国产成人精品| 性欧美xxxx交| 国产一级特黄视频| 91成人精品| 在线看日韩av| 无码少妇一区二区| 最新国产一区| 日韩精品在线观看视频| 色哟哟无码精品一区二区三区| gogo大尺度成人免费视频| 在线观看av一区二区| 97视频在线免费播放| 神马久久午夜| 亚洲午夜成aⅴ人片| 成人在线观看毛片| 在线免费观看污| 亚洲视频在线一区| 黄色高清视频网站| 1区2区3区在线视频| 亚洲欧洲综合另类| 色婷婷777777仙踪林| 超碰porn在线| 亚洲最新视频在线播放| 日韩精品一区二区三区电影| 超碰在线caoporen| 一区二区三区日韩精品视频| 男人的天堂视频在线| 中文字幕有码在线观看| 一区二区视频在线看| 欧美中日韩在线| 91色在线看| 福利二区91精品bt7086| 欧美xxxxx在线视频| jizzjizz少妇亚洲水多| 欧美视频自拍偷拍| 中文久久久久久| 久久不卡日韩美女| 在线不卡中文字幕播放| 香蕉视频在线观看黄| 1204国产成人精品视频| 亚洲国产美女久久久久| 丰腴饱满的极品熟妇| 欧美伦理在线视频| 毛片精品免费在线观看| 国产无遮挡免费视频| 丝袜诱惑制服诱惑色一区在线观看| 日韩免费在线免费观看| 中文字幕免费在线看| 国产一区二区看久久| 国产伦精品一区二区三区| 日韩一二三四| 亚洲欧洲精品天堂一级| 国产亚洲黄色片| 桃子视频成人app| 欧美一区二区三区成人| 韩国无码一区二区三区精品| 成人亚洲一区二区| 欧美福利小视频| 国产乡下妇女做爰| 青青草97国产精品免费观看 | 国产人妻精品午夜福利免费| 日韩欧美在线精品| zzjj国产精品一区二区| 日韩精品视频免费看| 免费视频最近日韩| 97超碰资源| 国产剧情在线观看| 一区二区三区四区五区视频在线观看| 国产91在线视频观看| 伊人久久一区| 亚洲人高潮女人毛茸茸| 清纯粉嫩极品夜夜嗨av| 日韩黄色一级片| 国产精品一区二区三区精品| 69av亚洲| 日韩欧美a级成人黄色| 亚洲高清视频免费| 亚洲最大在线| 欧美疯狂xxxx大交乱88av| 波多野结衣在线观看视频| 国产成人在线看| 夜夜爽www精品| 26uuu亚洲电影| 欧美大片日本大片免费观看| 91免费在线看片| 亚洲一区黄色| 999精品在线观看| 人人干在线视频| 欧美午夜精品久久久久久浪潮| 国产高清av片| 日韩在线视屏| 国产91热爆ts人妖在线| 欧美熟妇交换久久久久久分类 | 不卡的av网站| 欧美少妇一级片| 欧美xnxx| 亚洲国产三级网| 妺妺窝人体色www在线下载| 麻豆91在线播放免费| 日本在线成人一区二区| 无码小电影在线观看网站免费| 欧美大胆一级视频| 青娱乐国产在线视频| 国产一区二区三区香蕉| 一区二区三区四区五区视频 | 亚洲一区二区成人| 国产欧美一区二区三区不卡高清| 日本在线视频中文有码| 69精品人人人人| 自拍偷拍第9页| 免费成人在线视频观看| 色综合666| 成人精品电影在线| 亚洲人成电影在线播放| 欧美一区二区三区不卡视频| 91麻豆精品秘密| www.玖玖玖| 国产精品亚洲二区| 国产精品高潮在线| 成人激情电影在线看| 在线视频一区二区三区| 国产一二三四视频| 精品一区二区三区蜜桃| 中文字幕在线中文字幕日亚韩一区 | 日本一区二区在线观看视频| 欧美三级午夜理伦三级中文幕| 91久久爱成人| 九色porny丨入口在线| 日韩精品中文字幕在线| 国产成人无码专区| 国产精品伦一区| 精品无码av一区二区三区不卡| 国产精品v日韩精品v欧美精品网站| av成人观看| 韩国成人二区| 亚洲性xxxx| 国产日韩欧美视频在线观看| 亚洲永久精品国产| 野花社区视频在线观看| 免费在线欧美视频| 国产又粗又长又爽视频| 牛牛精品成人免费视频| 国产精品免费久久久久影院| 黄a在线观看| 亚洲成人精品视频在线观看| 久久久久久少妇| 国产精品国产三级国产aⅴ入口 | 香蕉人妻av久久久久天天| 日韩人在线观看| 国产jizz18女人高潮| 国产精品系列在线观看| 黄色影院一级片| 97精品一区二区| 高清视频在线观看一区| 在线成人av观看| 免费不卡欧美自拍视频| 青青草在线免费视频| 7777女厕盗摄久久久| 日韩美女视频网站| 国产精品乱人伦| 亚洲观看黄色网| 激情综合亚洲精品| 亚洲熟妇av一区二区三区漫画| 99久久99热这里只有精品| 国产丝袜不卡| 中文字幕综合| 日本sm极度另类视频| 在线网址91| 色老头一区二区三区| 日韩一区二区三区在线观看视频| 欧美精品三级在线观看| 久久久久久久久久久影院| 亚洲美女屁股眼交3| 先锋影音av在线| 99久久国产综合精品女不卡| 亚洲理论中文字幕| 日日摸夜夜添夜夜添国产精品| 美女黄色免费看| 欧美电影一二区| 欧美精品一区二区三区四区五区 | 狠狠色丁香久久婷婷综合丁香| 干日本少妇首页| 狠狠噜噜久久| 亚洲狠狠婷婷综合久久久| 日本三级久久| 国产精品一区二区不卡视频| 日本免费精品| 国产在线视频不卡| 巨胸喷奶水www久久久| 91超碰caoporn97人人| 俄罗斯一级**毛片在线播放| 久久久久99精品久久久久| 国产私拍精品| 亚洲欧美成人一区二区在线电影| 国产精品12| 麻豆映画在线观看| 精品国产1区| 美女一区视频| 你懂的在线观看一区二区| 51精品国产人成在线观看| 四虎影视国产精品| 国产精品免费小视频| 在线精品亚洲欧美日韩国产| 欧美亚洲国产精品| 国模私拍一区二区国模曼安| 欧美激情视频网| 精品日韩av| 久久久亚洲天堂| 高清电影在线免费观看| 久久久久久久久久久av| 男插女视频久久久| 欧美激情精品久久久久久免费印度| av电影高清在线观看| 理论片在线不卡免费观看| 黄色成人在线观看| 精品自在线视频| 免费av不卡在线观看| 欧美高清激情视频| 福利在线导航136| 97久久精品国产| 狂野欧美性猛交xxxxx视频| 国产最新精品视频| 欧美gv在线观看| 日本一区二区三区在线播放| 成人动漫一区| 国产精品久久久久久av福利软件| 九九九精品视频| 91在线观看免费高清完整版在线观看| 91嫩草国产线观看亚洲一区二区 | 一级片免费观看视频| 欧美精品 国产精品| av官网在线观看| 欧美精品一区二区在线观看| 亚洲欧美自偷自拍| 在线成人激情视频| 成人黄色网址| 97在线视频精品| av有声小说一区二区三区| 国产欧美一区二区白浆黑人| 日本精品视频| 久久久久久九九九九| 人人狠狠综合久久亚洲婷| 懂色av粉嫩av蜜臀av| 伊人狠狠色j香婷婷综合| 日韩精品视频久久| 精品一区二区免费| jjzzjjzz欧美69巨大| 久久亚洲精品国产精品紫薇| 国产精品夜夜夜爽阿娇| 亚洲一级二级三级在线免费观看| 国产婷婷色一区二区在线观看| 欧美精品自拍偷拍| 色婷婷av一区二区三区之e本道| 亚洲一区二区久久| 日本动漫同人动漫在线观看| 2024亚洲男人天堂| 成人激情久久| 欧洲亚洲一区二区| 欧美在线免费一级片| 国产精品免费观看久久| 国产麻豆精品久久一二三| 90岁老太婆乱淫| 亚洲精品免费看| 亚洲av人无码激艳猛片服务器| 日韩欧美国产综合一区 | 久久综合五月天| 在线观看特色大片免费视频| 91色琪琪电影亚洲精品久久| 伊人成综合网yiren22| 欧美激情亚洲天堂| 久久精品国产在热久久| 99久久人妻无码精品系列| 一区二区免费在线| 一道本在线视频| 亚洲老头老太hd| 蜜臀av在线播放| 91沈先生在线观看| 成人在线国产| 人妻无码视频一区二区三区| www..com久久爱| 性欧美videos| 欧美剧情片在线观看| 撸视在线观看免费视频| 91精品国产91久久久久久最新| 另类视频一区二区三区| 亚洲ai欧洲av| 久久精品女人| 特大黑人巨人吊xxxx| 亚洲妇熟xx妇色黄| 亚洲av无码一区二区三区dv| 久久精品国产久精国产思思| 日韩欧美一区二区三区免费观看| 久草精品电影| 99伊人成综合| 亚洲婷婷在线观看| 亚洲国产精品久久不卡毛片| 国产熟女精品视频| 久久视频在线免费观看| 人妻av一区二区三区| 成人v精品蜜桃久久一区| 欧美精品videos极品| 91麻豆精品91久久久久久清纯 | 操人视频在线观看欧美| 精品176极品一区| 一区二区精品在线| 日本va欧美va瓶| 怡红院一区二区三区| 色88888久久久久久影院野外| 男人天堂网在线| 日本精品中文字幕| 综合亚洲色图| 日韩中文字幕免费在线| 欧美国产激情二区三区| 亚洲av无码乱码国产精品fc2| 中文字幕精品www乱入免费视频| 69堂免费精品视频在线播放| 亚洲精品高清视频| 精品亚洲免费视频| 欧美丰满艳妇bbwbbw| 精品免费一区二区三区| xxx性欧美| 免费国产在线精品一区二区三区| 老司机精品久久| 亚洲色图日韩精品| 91精品国产麻豆国产自产在线| 亚洲奶水xxxx哺乳期| 国产欧美日韩一区| 日韩综合小视频| 日本免费网站视频| 日韩精品一区二区三区老鸭窝 | 欧美精品导航| 亚洲欧美日韩偷拍| 色呦呦网站一区| 麻豆电影在线播放| 国产91亚洲精品一区二区三区| 一区二区三区导航| 免费观看a级片| 91精品福利在线一区二区三区 | 欧美日韩另类一区| 国产三区在线观看| 国产一区在线免费观看| 日韩电影一二三区| 国产97免费视频| 日韩精品视频免费专区在线播放 | 91精品国产入口在线| 国精产品一区一区三区mba下载| 久久精品日产第一区二区三区精品版| 日韩国产精品久久久| 农村妇女精品一区二区| 亚洲国产小视频在线观看| 欧洲精品一区二区三区| 久久综合亚洲精品| 91免费版在线| 国产人妖一区二区三区| 555www成人网| 亚洲91精品| 国产吞精囗交久久久| 91麻豆精品国产91久久久久久 | 成人动漫精品一区二区| 国产污视频网站| 色在人av网站天堂精品| 欧美另类69xxxxx| 久久久高清视频| 欧美日产在线观看| 欧美私密网站| 成人在线观看www| 国产亚洲成av人在线观看导航 | 高清一区二区中文字幕| 天天摸天天碰天天添| 亚洲曰韩产成在线| 黄色免费网站在线|