上QQ阅读APP看书,第一时间看更新
3.3.5 理解中间件
如图3-1所示,Go kit是可组合的。除了强制性的传输、端点和服务之外,Go kit还使用装饰器模式选择性地包装带有横切关注点的服务和端点,例如:
·弹性(例如,使用指数回退的重试)
·身份验证和授权
·日志
·指标收集
·分布式跟踪
·服务发现
·速率限制
这种具有少量抽象(例如传输、端点和服务)的SOLID方法[1]很容易理解和使用,还可以使用统一的中间件机制对其进行扩展。Go kit在为中间件提供足够的内置功能与满足你的需求之间保持平衡。例如,程序在Kubernetes上运行时,Go kit来处理服务发现,在这种情况下,你不需要绕过Go kit。不需要的特性和功能也是可选的。
[1] 请参考3.8节继续阅读中的链接。——译者注