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