جاتلينج - UniformRandomSwitch لا يعمل كما هو متوقع

1

أريد التكرار من خلال جميع عناصر ملف csv ولكل عنصر أريد توزيع الطلب الموحد بحيث يتم استدعاء جميع وظائف SearchProduct (SearchProduct1 و SearchProduct2 و SearchProduct3) في نفس الوقت.

    val products= csv("products.csv").records

    val start= exec(repeat(products.size, "n"){
        feed(products.queue)
        .uniformRandomSwitch(
            exec(searchProduct1), 
            exec(searchProduct2), 
            exec(searchProduct3)
        )
    })

أتوقع أنه إذا كان لدي 9 منتجات ، فإن وظيفة SearchProduct1 تسمى 3 مرات ، ووظيفة SearchProduct2 تسمى 3 مرات ، ووظيفة SearchProduct3 تسمى أيضًا 3 مرات.

ولكن تظهر لي الإحصائيات عدة مرات أن وظيفة SearchProduct3 تم استدعاؤها 5 مرات وتم استدعاء SearchProduct2 و SearchProduct1 مرتين. هل أفعل شيئا خاطئا؟ هل أفعل التكرار داخل uniformRandomSwitch ؟؟؟

لذلك أنا أفهم uniformRandomSwitch أن احتمال تنفيذ إحدى هذه الوظائف الثلاث هو نفسه. من الممكن أنه في 9 تكرارات ، يتم تنفيذ 8 مرات SearchProduct1 و 1 مرة SearchProduct2 (و SearchProduct3 مطلقًا). ولكن مع uniformRandomSwitch أنا لا أجبر على تنفيذ نفس الأوقات كل وظيفة. حق؟

1 إجابة

1
افضل جواب

أعتقد أن ما تريده هو roundRobinSwitch التوجيه. سيؤدي هذا إلى التكرار من خلال كل سلسلة ، والانتقال إلى التالي ثم التكرار في البداية ، حيث تأتي الطلبات الجديدة.

مع uniformRandomSwitch كل سلسلة لديها 1/N فرصة أن يتم استدعاؤك. فقط عبر العديد من التكرارات ، يتقارب عدد المكالمات ، مع إعطاء مثالك ، إلى 3/3/3.

:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام