最近寫了一個(gè)簡(jiǎn)單的客戶端,用來(lái)模擬服務(wù)化框架的客戶端調(diào)用,功能如下:

  • 隨機(jī)調(diào)用服務(wù)

  • 打印服務(wù)結(jié)果

  • 10%的幾率較少訪問(wèn)量(假設(shè)1個(gè)并發(fā)),10%幾率高訪問(wèn)量(假設(shè)100個(gè)并發(fā)),80%幾率正常訪問(wèn)量(假設(shè)10個(gè)并發(fā))

  • 打印各個(gè)訪問(wèn)量情況下的服務(wù)調(diào)用總時(shí)間

分別嘗試了Java和Clojure實(shí)現(xiàn),在實(shí)現(xiàn)過(guò)程中,兩者的思路完全不同!

面向?qū)ο?面向過(guò)程語(yǔ)言思路

邏輯很簡(jiǎn)單,基本不涉及面向?qū)ο蟾拍睿饕€是面向過(guò)程語(yǔ)言的思路!

如果使用Java來(lái)實(shí)現(xiàn),那么大致的思路是這樣的:

  • 首先需要一個(gè)隨機(jī)數(shù)生成器,基于這個(gè)隨機(jī)數(shù)生成器來(lái)構(gòu)建隨機(jī)調(diào)用邏輯

  • 隨機(jī)調(diào)用服務(wù)就是判斷隨機(jī)數(shù)大小,例如:0~1的隨機(jī)數(shù)范圍,大于0.5訪問(wèn)服務(wù)A,否則訪問(wèn)服務(wù)B

  • 并發(fā)量判定則可以依據(jù)0~10的隨機(jī)數(shù)范圍,小于等于1時(shí)并發(fā)為1,大于等于9時(shí)并發(fā)為100,否則并發(fā)為10

  • 在每個(gè)服務(wù)調(diào)用完成后,統(tǒng)計(jì)執(zhí)行時(shí)間,然后匯總就可以了

下面是Java實(shí)現(xiàn)的代碼:

public class RandomCall {    private static Execu