【回顾】Go 超快安全轻量级的 Actor 引擎
共 2497字,需浏览 5分钟
·
2024-06-12 19:30
大家好,又见面了,我是 GitHub 精选君!
背景介绍
在编写高并发的分布式系统时,常常会遇到许多挑战,如如何优化系统性能、如何降低系统应用延迟、怎样在遇到错误和故障时保证系统的稳健性等问题。为了克服这些挑战,卡尔·惠特在 1973 年引入了 Actor 模型。Actor 模型是一种计算模型,最基本的构建单位是 Actor,每一个 Actor 独立运行,通过发送接收消息与其他 Actor 交互,这种方式可以使系统具有高度的并发性和分布性。
今天要给大家推荐一个 GitHub 开源项目 anthdm/hollywood,该项目在 GitHub 有差不多 1000 Star,用一句话介绍该项目就是:“Blazingly fast and light-weight Actor engine written in Golang”。
项目介绍
Hollywood 是一个基于 Golang 的超快安全轻量级的 Actor 引擎项目。它是为快速和低延迟的应用程序(如游戏服务器,广告代理商,交易引擎等)而构建的,能在一秒内处理超过 1000 万的消息。Hollywood 的主要特性包括消息在 Actor 失败时的可靠传输 (缓冲机制)、忘却式或请求响应式消息传送,采用高性能的 dRPC 作为运输层、优化的 proto 缓冲区(没有反射)、轻量级和高度可定制、集群支持等。
如何使用
如果你想要安装 Hollywood, 只需要简单指令 go get github.com/anthdm/hollywood/...
。为了更好的理解如何使用 Hollywood ,以下是一个示例:
创建一条 Hello world 消息。你可以先新建一个 actor 简单终端打印消息,然后通过 Hollywood 的引擎 API 发送你的消息给 actor。以下是示例代码:
type helloer struct{}
func newHelloer() actor.Receiver {
return &helloer{}
}
type message struct {}
func (h *helloer) Receive(ctx *actor.Context) {
switch msg := ctx.Message().(type) {
case actor.Initialized:
fmt.Println("helloer has initialized")
case actor.Started:
fmt.Println("helloer has started")
case actor.Stopped:
fmt.Println("helloer has stopped")
case *message:
fmt.Println("hello world", msg.data)
}
}
func main() {
engine, err := actor.NewEngine(actor.NewEngineConfig())
pid := engine.Spawn(newHelloer, "hello")
engine.Send(pid, "hello world!")
}
项目推介
Hollywood 也是一个非常轻量级的工具,它独特的 Actor 模型设计解决了并发和分布式系统中的常见问题,Hollywood 有良好的代码质量,并且提供了强大、灵活且简单的 API。Hollywood 虽然是一个新项目,但是已经有公司中生产环境中使用。如果你是在构建并发和分布式系统,Hollywood 是一个值得你关注的重要工具。
以下是该项目 Star 趋势图(代表项目的活跃程度):
更多项目详情请查看如下链接。
开源项目地址:https://github.com/anthdm/hollywood
开源项目作者:anthdm
以下是参与项目建设的所有成员:
关注我们,一起探索有意思的开源项目。
点击如下卡片后台回复:加群,与技术极客们一起交流人工智能、开源项目,一起成长。如果你正在寻求开源项目推广、DevOps、AIGC 大模型、软件开发等领域的付费服务,可参考推文了解详情。