最近寫了一個簡單的客戶端,用來模擬服務(wù)化框架的客戶端調(diào)用,功能如下:
隨機調(diào)用服務(wù)
打印服務(wù)結(jié)果
10%的幾率較少訪問量(假設(shè)1個并發(fā)),10%幾率高訪問量(假設(shè)100個并發(fā)),80%幾率正常訪問量(假設(shè)10個并發(fā))
打印各個訪問量情況下的服務(wù)調(diào)用總時間
分別嘗試了Java和Clojure實現(xiàn),在實現(xiàn)過程中,兩者的思路完全不同!
面向?qū)ο?面向過程語言思路
邏輯很簡單,基本不涉及面向?qū)ο蟾拍?,主要還是面向過程語言的思路!
如果使用Java來實現(xiàn),那么大致的思路是這樣的:
首先需要一個隨機數(shù)生成器,基于這個隨機數(shù)生成器來構(gòu)建隨機調(diào)用邏輯
隨機調(diào)用服務(wù)就是判斷隨機數(shù)大小,例如:0~1的隨機數(shù)范圍,大于0.5訪問服務(wù)A,否則訪問服務(wù)B
并發(fā)量判定則可以依據(jù)0~10的隨機數(shù)范圍,小于等于1時并發(fā)為1,大于等于9時并發(fā)為100,否則并發(fā)為10
在每個服務(wù)調(diào)用完成后,統(tǒng)計執(zhí)行時間,然后匯總就可以了
下面是Java實現(xiàn)的代碼:
public class RandomCall { private static Execu