就像网络上的 Go 通道一样
这提供了极大的灵活性,可以通过将应用程序分解为松散耦合的并发服务来扩展应用程序。同一应用程序可以由通过内存通道进行通信的 goroutine 组成;然后转换为独立的 Unix 进程,每个进程分配给一个处理核心,并通过高性能 IPC 进行通信;最后转换为通过经过身份验证的 TLS 会话进行通信的机器集群。整个过程中都受益于使 Go 如此受欢迎的并发模型。
并非所有传输协议都具有相同的语义。内存中的 Go 通道保证了一次性传递;TCP、TLS 和各种 HTTP 套接字家族都不保证传递。消息按顺序到达,但可能会被任意延迟或丢失。通道之间没有排序不变量。
由于远程 libchan 会话是普通的 HTTP2 通过 TLS 会话,因此可以与任何标准代理或身份验证中间件结合使用。这意味着 libchan 在正确配置后可以安全地暴露在公共互联网上。此外,还可以通过 http1 和 websocket 回退功能将 libchan 集成到现有的 REST API 中。
现代微服务不适合经典的 RPC 或 REST 协议,因为它们通常严重依赖事件、双向通信、流多路复用以及某种形式的数据同步。有时这些服务有一个组件需要原始套接字访问,原因可能是性能(文件传输、事件火箭筒、数据库访问),或者仅仅是因为它们有自己的协议。
暂无开放 Issues,或尚未同步最近议题。