1. 设置 15 毫秒超时,并实施一个重试策略,指数回退直到 800 毫秒。无论我是否连接到该服务,该服务都会创建所需的会话。
临
- 检测到会话不立即可用,不需要为此等待几乎一秒钟。
- 由客户再次请求会话或以其他方式进行,您对不同的用例具有更大的灵活性。
- 您可以区分每次执行回退策略时等待会话超过 15 毫秒报告的不良事件,这对于异常会话池行为检测很有用。
缺点
- 由于回退行为,代码更复杂。
- 由于不同的超时时间,多个参数。
2. 设置 800 毫秒超时,并保持连接到服务,直到我可以使用会话。
临
- 简单直接的实施
- 简单的参数化
缺点
- 您不会注意到会话池中的会话创建事件延迟。这对于跟踪和诊断很重要,这种简单的方法可以隐藏会话池问题。
- 对于不同的客户用例,实施不灵活。
-
我认为决策驱动因素是您是否需要一个仅适用于此用例的解决方案,或者此方法是否将用于不同的客户和用例。
PS:如果您需要为不同的客户创建解决方案,也许值得创建一个更复杂的协议,例如:
// just takes a session if available, no more than 15msec delay expected
get_session(...) : session
// if not available, creates one
get_session_or_create(...) : session
available_sessions(...) : int
// between 0 and 1, the proportion of available sessions
availability(...) : double
...
如何使用它取决于客户。
并且根据会话创建延迟差异,将超时参数过大一些安全的百分比。