知识卡片
Policy把连接策略下沉为配置对象
内容
Connection 的行为差异(出错是否直接丢弃连接、是server端被动连接还是主动发起、要不要在断开后自动重连、绑定哪个 [[Throttle的阻塞与非阻塞两种限流语义|Throttle]] 做流控、双方需要哪些 feature 标志)没有写死在代码分支里,而是抽成一个独立的 Policy 结构体,创建 Connection 时传入不同的 Policy 实例即可切出不同行为(如 lossy_client、stateless_server)。这种”把易变的策略参数化成配置对象”的做法让新增一种连接行为组合不需要改动连接管理的核心代码,只需要拼一个新的 Policy。
参考来源
《Ceph源码分析》第3章《Ceph网络通信》