• <big id="vhnbr"></big>

      s0611163

      最近寫了一個demo:demo的github地址

      一. 簡單介紹

      1. Server端

      它是一個WebApi服務,把它當成一個黑盒就行了。

      2. MiddleServer端

      是重點,它是一個WebApi服務,包含一個GetValues接口和一個Query2接口。
      Query2接口是一個簡單的接口。
      GetValues接口通過請求Server端的GetCounts接口和GetValues接口獲取數據。

      3. Client端

      請求500次MiddleServer端的GetValues接口和請求500次Query2接口。
      并行度200。

      二. 這個demo主要測試什么?

      1. 測試MiddleServer端兩個接口的吞吐量,MiddleServer端需要請求143000次Server端的接口。同時它需要響應Client端1000次請求。
      2. 測試MiddleServer端接口的平均耗時。

      三. 想得出什么結論?

      1. MiddleServer端所面對的場景,使用異步實現肯定是優于使用多線程實現的。
      2. MiddleServer端的GetValues接口,需要請求286次Server端的接口,如果使用順序執行的異步,那么耗時會很長,所以需要并行執行異步。
      3. MiddleServer端的GetValues接口,為什么不只請求1次Server端的接口呢?一是因為業務邏輯可能很復雜,二是因為數據量較大無法一次性獲取。
      4. MiddleServer端的GetValues接口,為什么寫了兩層Parallel.ForEachAsync,一層不可以嗎?如果第一層循環數據量很少,第二層循環存在數據傾斜,那么寫兩層Parallel.ForEachAsync可能會好一點。
      5. 雖然Client端測試了并發請求GetValues接口,但這樣的接口,并不是為了高并發,需要做限流。但測試一下是必要的。
      6. 可能真的不建議寫兩層Parallel.ForEachAsync,因為會導致并行度較大。但是,我可以不寫,你不能不支持。
      7. 由于精力和水平有限,希望看看別人用java和go語言怎么寫的。
      8. 我覺得這里面可能是有坑的,想看看別人寫的,會不會掉坑里。

      四.最后

      希望有興趣的可以用java和go語言寫一下這個demo??梢詫Ρ纫幌拢?/p>

      1. 性能,這里并不專業,只是粗略對比,以及看一下大家對異步的理解,以及會不會掉坑里。
      2. 代碼是否容易編寫,容易閱讀,容易維護。

      分類:

      技術點:

      相關文章:

      国产免费三A级精品大片|久久久久久女乱国产|操逼无码播放六区|黄色毛片在线观看视频

    1. <big id="vhnbr"></big>