libchan  - 通道间传递信息的库
小码哥 2019-08-17 14:34:03

Libchan 是一个超轻量级的网络库,能让使用不同通道的 goroutines 传递在网络服务中在相同的通道中交流:

  • 简单信息传递

  • 异步编程同步

  • Nesting: channels can send channels

Libchan 支持下列传递:

  • In-memory Go channel

  • Unix socket

  • Raw TCP

  • TLS

  • HTTP2/SPDY

  • Websocket

通过分解应用程序为松散的耦合型并发服务为应用程序扩展提供了巨大便利。同样的应用程序可以在信道内存通道中组成 goroutines 传递;然后,过渡到独立 unix 进程中,每个都分配到进程核心处理器中,且通过高性能 IPC 进行信息传递;然后,通过身份验证 TLS 会话来实现集群信息通信。正是得益于并发模型,所以使得 Go 语言如此流行。

并不是所有的传递都有相同的语法语义。内存 Go 通道只能确保一次精确的信息传输; TCP, TLS, 以及不同 HTTP 包之间不能保证传输包是否能能够顺利到达。按照顺序到达的包可能被延迟或丢失。