这是一个围绕 Go 的 net/http 进行封装,以提供安全性和便利性。在 Monzo,Typhon 成为我们微服务平台中的大多数客户端和服务器的基础。
这是一个围绕 Go 的 net/http 进行封装,以提供安全性和便利性。在 Monzo,Typhon 成为我们微服务平台中的大多数客户端和服务器的基础。
Typhon 是 Go 的 net/http 库的一个包装器,我们在 Monzo 使用它来在 [我们的微服务平台][平台博客文章] 中构建 RPC 服务器和客户端。它提供了许多便利功能,并尽可能提高安全性。以下是 Typhon 中一些有趣的功能:
中间件"过滤器"
过滤器是围绕 Service 的装饰器;在 Typhon 服务器和客户端中,通过功能组合共享通用功能。 * 请求体的编码和解码
将请求体序列化为结构体是一种非常常见的操作,因此我们的 Request 和 Response 对象直接支持这些操作。如果这些操作失败,错误会自动传播,因为这几乎总是服务器所希望的结果。
取消传播
当服务器处理了请求后,请求的上下文会自动取消,这些取消会通过分布式调用栈传播。这使得下游服务器能够节省生成不再需要的响应的工作。 * 错误传播
响应具有内置的 Error 属性,这些错误的序列化/反序列化到 HTTP 错误是自动处理的。我们建议将其与 monzo/terrors 一起使用。
全面支持 HTTP/1.1 和 HTTP/2.0 使用 Typhon 实现的应用程序可以通过 HTTP/1.1 或 HTTP/2.0 进行通信。Typhon 支持 HTTP/2.0 下的全双工通信,如果需要,还支持 h2c (HTTP/2.0 通过 TCP,即不支持 TLS)。
暂无开放 Issues,或尚未同步最近议题。