并發控制
并發控制用于(yú)控制同一(yī / yì /yí)時(shí)刻最大(dà)處理請求的(de)數目, gateway的(de)并發有兩種控制模式
- 通過網關内置并發插件控制并發(推薦)
- 通過配置網關線程池控制并發
線程池控制并發
connector及channel之(zhī)間的(de)線程交互模型采用reactor模型,最大(dà)的(de)複用線程數并充分利用異步io的(de)優勢,減少系統線程壓力,channel中的(de)連接器connector用于(yú)接收請求,接收完成後需要(yào / yāo)交付給channel進行處理,同時(shí)釋放connector線程用于(yú)繼續接收其他(tā)請求,connector的(de)socket的(de)接入默認采用異步框架netty接入,如下图所示。
通過控制channel處理請求的(de)線程池大(dà)小可控制并發度,并發控制相關配置項如下:
并發插件控制并發
- 使用并發插件控制并發, 優勢在(zài)于(yú), 并發插件的(de)計數原則或者說(shuō)計數區間是(shì): 請求進入并發插件時(shí), 該請求被計入并發數, 當網關接收到(dào)服務端對該請求的(de)響應時(shí), 該請求被從并發計數中移除.
- 這(zhè)樣的(de)優勢在(zài)于(yú) 如果服務端壓力過大(dà), 導緻響應速度變慢, 訪問速度大(dà)于(yú)響應速度, 會使并發計數增加, 當達到(dào)我們設置的(de)并發計數的(de)最大(dà)值時(shí), 請求在(zài)gateway被攔截, 不(bù)會再由新的(de)請求繼續訪問服務端.
- 相比之(zhī)下線程池并發控制更關心gateway的(de)處理能力, 不(bù)能妥善協調服務端的(de)處理能力
#并發控制-機構
concurrent:
name: '并發控制-機構維度'
values:
- {id: concurrent-1285-Z2003731000018, name: aaaaa, matcher: '${trxDirection}->IN && ${pathNo}->1285 && ${OriIssrId}->Z2003731000018', targetExpression: epcc, permits: 5, available: false}
- {id: concurrent-1285-Z2004344000017, name: bbbbb, matcher: '${trxDirection}->IN && ${pathNo}->1285 && ${OriIssrId}->Z2004344000017', targetExpression: epcc, permits: 5, available: false}
- {id: concurrent-1285-Z2004944000010, name: vvvvv, matcher: '${trxDirection}->IN && ${pathNo}->1285 && ${OriIssrId}->Z2004944000010', targetExpression: epcc, permits: 5, available: false}
- {id: concurrent-1285-Z2013811000010, name: ddddd, matcher: '${trxDirection}->IN && ${pathNo}->1285 && ${OriIssrId}->Z2013811000010', targetExpression: epcc, permits: 5, available: false}
- {id: concurrent-1285-Z2010743000012, name: eeeee, matcher: '${trxDirection}->IN && ${pathNo}->1285 && ${OriIssrId}->Z2010743000012', targetExpression: epcc, permits: 5, available: false}
- {id: concurrent-1285-Z2014811000011, name: fffff, matcher: '${trxDirection}->IN && ${pathNo}->1285 && ${OriIssrId}->Z2014811000011', targetExpression: epcc, permits: 5, available: false}
- {id: concurrent-1285-Z2012911000011, name: ggggg, matcher: '${trxDirection}->IN && ${pathNo}->1285 && ${OriIssrId}->Z2012911000011', targetExpression: epcc, permits: 5, available: false}
字段描述:
注意事項 |
---|
并發插件對于(yú)當一(yī / yì /yí)個(gè)并發計數器達到(dào)最大(dà)并發數後,當繼續發請求時(shí), 請求直接被即時(shí)拒絕, 直到(dào)并發計數由于(yú)得到(dào)服務端響應減少小于(yú)最大(dà)值時(shí), 才允許請求通過 |