商业公链之区块链技术使用的常见库(五)------Go语言并发actor库"github.com/AsynkronIT/protoactor-go/actor"

深入解析actor 模型(二): actor 在go 实践proto.Actor 源码解析 1proto-actor 源码解析 下面我们从actor 系统设计各个模块设计剖析源码,从官方文档结构,结合文档和自己的理解,然后再配合源码,剖析actor设计。 1.1actor核心 actor 特点 从 function 或者method创建 从对象工厂 生成actor通过自动,指定,或者前缀名 1.1.1Props(创建actor 的配置) 配置和构造actor 的上下文context 自定义属性 一种是从函数创建,actor 必须实现Receive(c Context)方法,这是a 阅读详情

Go语言并发actor库"github.com/AsynkronIT/protoactor-go/actor"

ProtoAct 是下一代的 Actor 模型框架,提供了 .NET 和 Go 语言的实现,默认支持分布式,提供管理和监控功能。Proto.Actor 提供了可伸缩、实时的事务处理,任何需要高吞吐量、低延迟的业务需求都可以用到Proto.Actor 。目前该版本处于开发状态中,并不太适合生产状态,可能示例源码会在后边发生改变,需要在example中寻找最新代码。

Actor作为一个进程,可以接受或发生消息到其他actor,其他actor基于消息产生活动。也就是说每一个actor都是独立的进程,多个actor运行支持了高并发情形。解决了锁的问题。

1.安装actor:

go get "github.com/AsynkronIT/protoactor-go/actor"              

2.引入actor:

import "github.com/AsynkronIT/protoactor-go/actor"

3.规定交流消息结构:

type Hello struct{ Who string }

4.新的actor结构:

type HelloActor struct{}

5.actor绑定一个receive方法处理接收到邮箱的信息:

func (state *HelloActor) Receive(context actor.Context) {

switch msg := context.Message().(type) { //按时间顺序读取邮箱

case Hello:                               //hello消息

fmt.Printf("Hello %v\n", msg.Who) //读取消息结构who内容

}

}

6.获得默认空白的上下文环境:context := actor.EmptyRootContext

7.使用actor结构获得actor对象得到actor模板:props := actor.PropsFromProducer(func() actor.Actor { return &HelloActor{} })

8.基于模板创建实例并返回一个pid,该pid与新邮箱关联:pid := context.Spawn(props)

9.在当前上下文环境发送消息至该pid:context.Send(pid,Hello{Who: "Roger"})

10.读取缓冲区并打印一行:console.ReadLine()

11.停止进程:pid.Stop()

12.监听进程状态改变:

switch msg := context.Message().(type) {

case *actor.Started: //actor开始状态

fmt.Println("Started, initialize actor here")

case *actor.Stopping: //正在停止状态

fmt.Println("Stopping, actor is about shut down")

case *actor.Stopped: //已经停止状态

fmt.Println("Stopped, actor and its children are stopped")

case *actor.Restarting: //重启状态

fmt.Println("Restarting, actor is about restart")

case Hello: //匹配hello

fmt.Printf("Hello %v\n", msg.Who)

}

10. 行为模板结构:

type SetBehaviorActor struct {

behavior actor.Behavior

}

14.初始化actor数据结构,生成actor对象,绑定actor行为

func NewSetBehaviorActor() actor.Actor {

act := &SetBehaviorActor{

behavior: actor.NewBehavior(), //行为模板

}

act.behavior.Become(act.One) //行为方法

return act

}

15.绑定actor对应的receive方法,方法设置接受消息后执行对应的行为:

func (state *SetBehaviorActor) Receive(context actor.Context) {

state.behavior.Receive(context) //执行行为

}

16.行为方法:

case Hello:

fmt.Printf("Hello %v\n", msg.Who)

state.behavior.Become(state.Other) //改变行为

}

示例源码:阅读原文,用法文档:https://godoc.org/github.com/AsynkronIT/protoactor-go

希望大家关注我的微信公众号,推荐给更多技术极客,日更一篇区块链技术博客不易,有疑问可以后台留言。 

protoactor-go:Proto Actor-用于Go,C#和JavaKotlin的超快速分布式actor 跨平台演员 介绍Go和C#之间的跨平台参与者支持。 我可以用这个吗? Go实施仍处于测试阶段,已经有用户在生产中使用Proto Actor for Go。 但是请注意,API可能会随着时间的变化而变化,直到1.0。 源代码-Go 这是Proto Actor的Go存储库。 可以在这里找到C#实现 设计原则: 简约的API -API应该小巧且易于使用。 避免使用像容器和配置这样的企业级JVM。 以现有技术为基础-在这些技术的基础上,已经有很多伟大的技术,例如网络和集群。 例如用于联网的gRPC流,用于群集的Consul.IO。 传递数据,而不传递对象-序列化是一个明确的问题,请不要尝试隐藏它。 Protobuf一直。 要快-不要用性能来代替魔术API。 超快速远程处理,Proto Actor目前设法仅使用两个actor在节点之间每秒传递超过200万条消息,同时仍保持消息顺序! 立即下载

相关推荐

Proto Actor-用于Go,C#和Java / Kotlin的超快速分布式actor-Golang开发

跨平台参与者在Go和C#之间引入了跨平台参与者的支持。 我可以用这个吗? Go实施仍处于测试阶段,已经有用户在生产中使用Proto Actor for Go。 但是请注意,跨平台参与者在Go和C#之间引入了跨平台参与者支持。 我可以用这个吗? Go实施仍处于测试阶段,已经有用户在生产中使用Proto Actor for Go。 但是请注意,API可能会随着时间的变化而变化,直到1.0。 源代码-Go这是Proto Actor的Go存储库。 C#实现可在以下网址找到:https://github.com/AsynkronIT/protoactor-dotnet设计原则:简约API-该API应当小巧易用。 避免

Proto Actor - Go 分布式高性能 Actor 框架

Proto Actor 是一个跨平台的分布式 Actor 框架,支持 Go、C# 和 Java/Kotlin。该项目的主要编程语言是 Go,旨在为开发者提供一个高性能、低延迟的分布式计算解决方案。Proto Actor 的设计原则包括最小化的 API、基于现有技术的构建、强调数据传递而非对象传递,以及追求极致的性能。 ## 项目核心功能 1. **分布式 Actor 模型**:Proto Ac...

gitblog_00365的博客 1104

Go-gaserver基于protoactor框架的actor游戏服务器

ga_server 基于protoactor框架的actor游戏服务器

go语言实践-protoactor使用小结

一年时间转瞬即逝,16年11月份因为业务需要,开始构建actor工具库,因为cluster下grain实现太困难,17年4月切换到具有该特征的protoactor,到现在,使用这个框架快一年。一路踩坑无数,趁这几天规划下阶段业务,就抽空聊聊。 ProtoActor框架的基本要点 Actor框架的提出基本上与CSP差不多处于同一个年代,相对于后者,过去10年Actor还是要稍微火一些...

alex_023的博客 1万+

用户消费行为分析(MapReduce实现,Hive分析)

一、题目要求 数据来自CDNow网站的一份用户购买CD明细,本数据集共有 6 万条 左右数据,数据为 CDNow 网站 1997年1月至1998年6月的用户行为 数据

紫烟的博客 3013

倒立摆入门详解+pid调参

倒立摆制作全过程 最近在练习pid的控制算法,就选用了2013年的电子设计国赛题目:倒立摆 。 首先给你们看看我的成果 注意哦:倒立摆不是靠上面黄色的传感器保持平衡的,而是通过下面的电机左右扭动使得摆杆不掉下来,难度可不小了。 材料准备 1.机械部分 如图所示选好电机和角位移传感器进行组装就好了,这个部分是我直接网上购买的,如果要自己装也是可以的,不过会比较麻烦,结构差不多的。 2.主控部分 这个部分的话完全是我自己设计的,作用和网上买的一样,因为网上买的话太贵了,有需要的话可以联系我,有pcb文件

small_po_kid的博客 2万+

ProtoActor-Go:高性能并发编程的新选择

ProtoActor-Go 是一个轻量级、高效的分布式系统框架,专为构建高并发、低延迟的应用而设计。它基于 上。 ## 项目简介 ProtoActor-Go 提供了一个简单但强大的接口,允许开发者以并发和异步的方式编写代码。它采用 Go 语言的 goroutine 和 channels,充分利用了 Go 的并发原语,为 Actor 系统提供了底层支持。此外,它还内置了集群功能和远程通信协议,...

gitblog_00069的博客 752

海康工业相机SDK+OpenCV实战:图像采集与Mat格式转换优化指南

本文深入探讨了如何高效利用海康工业相机SDK与OpenCV进行图像采集与处理。重点解析了从相机RawData到OpenCV Mat格式转换的核心优化技巧,包括像素格式匹配、内存零拷贝管理以及彩色图像BGR/RGB转换,旨在解决工业应用中常见的性能瓶颈与内存问题,构建稳定高效的图像处理流程。

weixin_29192211的博客 108

开源代码protoactor-go源码分析-async schedule

本文微信公众号文章:https://mp.weixin.qq.com/s/aHJScjcrrJyYlIDcA00P0g actor是一种异步并发处理模型。最具代表性的是erlang语言。 在golang中,最具代表性的并发模式为csp,多协程并发。 这两者的区别更多类似于网络并发。网络程序设计中的并发复杂性这篇文章中有介绍,关于事件驱动和多线程并发。其两者都有着各自的优缺点。 pr...

月牙寂 1295

自偏置电流镜设计实例

自偏置电流镜设计实例 一、概述 ​ 众所周知,电流镜属于模拟电路设计中的一个基本模块,可为其他模块提供偏置电流,例如在放大器中提供偏置电流以形成尾电流源并确定直流偏置点。本文将会介绍一种自偏置的电流镜,从原理出发,并以0.18um的工艺进行设计和仿真。 二、原理 ​ 如图一所示的电路,也称之为Beta-multiply reference电路,其中M2的尺寸是M1的k倍。M3复制M4的电流,M2和M1的漏极电流相同,但是VGS并不相等。其中 VGS=2IμnCoxW/...

aonuanjiang的博客 1万+

Android车载应用开发与分析(11)- 车载Android应用开发入门指南

将时间回退到2017年我大学刚毕业时,彼时移动互联网就已经开始退潮,各大个培训机构也纷纷停止了Android相关的培训,曾经热火朝天的应用开发从那时起,就开始走向下坡路,小程序以及众多跨平台框架也让市场对Android原生开发的需求逐年降低,市场需求的降低也造就了Android开发的面试变得史无前例的“卷”。 终于我在2019年选择离开了互联网,投身当时还不是非常火热的车载Android领域继续从事Android原生开发。而这一年中国首个外商独资的整车制造项目,“...

linkwj的博客 1万+

Actor 还是 CSP?Go 中的并发模式还能讲这么细致

文章目录基本概念了解并发和并行CSP vs Actor 模型ActorCSP区别GO 中的并发模型并发设计模式Barrier 模式使用场景代码实现TipsFuture 模式使用场景代码实现Pipeline 模式使用场景代码实现Workers Pool 模式使用场景代码实现Pub/Sub 模式使用场景代码实现注意事项参考 基本概念 了解并发和并行 并发:强调一段时间做多件事 并行:强调同一时间做多件...

一个北漂的程序猿 1676

YOLOv11改进前必看 - YAML模型配置文件详细解读(再也不用担心通道数不匹配) 附网络结构图

YOLOv11的模型配置文件在中,里面包含以及,本文以目标检测模型文件为例(其他文件完全一致),详细介绍一下YOLOv11模型文件中各参数的含义。

Limiiiing的博客 5310

golang游戏服务器方案

protoactor-go actor模式框架 plugin 热更新,发送热更消息,加载动态链接库,替换回调函数 根据负载情况调整actor分布进程,默认一个进程,如遇瓶颈可迁移部分actor至其它进程

云哥的专栏 593

杰理 JL701N/JL703N USB MIDI 使用教程

摘要:本教程介绍如何在杰理JL701N/JL703N音箱的可视化SDK中配置USB MIDI功能。主要步骤包括:1)启用PC模式;2)修改SDK宏定义启用USB MIDI;3)实现MIDI数据接收处理逻辑;4)调用接口发送MIDI数据;5)使用MIDI-OX测试功能。针对低版本SDK可能出现的设备识别问题,提供了在midi.c文件中添加特定代码行的解决方案。使用前需确保SDK版本达标,并注意备份原始文件。

qq_42014563的博客 1265

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

golang actor模型探索

Actor模型原理 漫谈并发编程:Actor模型 https://www.jianshu.com/p/db04cab86ab9 AsynkronIT/protoactor-go 十分钟理解Actor模式 https://blog.51cto.com/nxlhero/1666250 关于GOLANG的chan https://studygolang.com/articles/7750 ...

优秀技术文章收录 2506

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

开源代码protoactor-go[e866f39]源码分析

本文微信公众号链接:https://mp.weixin.qq.com/s/_p6bnUegQmHb8NbAccPQyw actor是一种异步并发处理模型。最具代表性的是erlang语言。 在golang中,最具代表性的并发模式为csp,多协程并发。 这两者的区别更多类似于网络并发。网络程序设计中的并发复杂性这篇文章中有介绍,关于事件驱动和多线程并发。其两者都有着各自的优缺点。 ...

月牙寂 740

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

protoactor-go 框架一般用于构建什么程序?

4. **复杂业务逻辑**:当业务逻辑变得复杂,需要处理多种状态转换和条件判断时,使用Actor模型可以使代码更加清晰和易于管理。5. **分布式系统**:在分布式系统中,节点之间需要进行通信和协作。1. **微服务架构**:在微服务架构中,每个服务都是一个独立的进程,它们之间通过消息传递进行通信。6. **事件驱动编程**:protoactor-go 框架基于事件驱动编程模型,这意味着它支持响应式编程范式。3. **游戏开发**:游戏通常需要处理大量的并发操作和玩家交互。

琳琳的博客 1114

探索未来编程:Proto Actor——跨平台的演员模型框架

在软件开发的世界里,寻找一种高效、可扩展且易于维护的技术栈是永恒的主题。Proto Actor,一个由Go和C#支持的跨平台演员模型框架,正是这样一款工具,它将帮助你在并发和分布式计算领域中开辟新的道路。 ## 项目介绍 Proto Actor是一个轻量级、高性能的框架,提供了Go和C#之间的无缝互通。尽管Go版本仍处于beta阶段,已有许多生产环境中的实例证明了它的可靠性。此项目强调简洁AP...

gitblog_00151的博客 509

如何快速入门Protoactor-go:5分钟构建你的第一个Actor系统

想要在Go语言中构建高并发、分布式的应用程序吗?**Protoactor-go** 正是你需要的终极解决方案!作为基于Actor模型的并发框架,它能够帮助你轻松处理复杂的并发场景,实现真正的解耦并发和分布式计算。无论你是新手还是有经验的开发者,这篇指南都将带你快速上手Protoactor-go,在短短5分钟内构建你的第一个Actor系统。🚀 ## 什么是Actor模型? Actor模型是一种

gitblog_00508的博客 442

Protoactor-go事件流处理终极指南:构建高性能响应式系统的10个核心技巧

Protoactor-go是一个基于Go语言构建的**高性能分布式Actor模型框架**,它提供了强大的**事件流处理**能力,让开发者能够轻松构建**响应式系统**。在前100字内,我们明确提到Protoactor-go、事件流处理和响应式系统这些核心关键词。 ## 🚀 什么是Protoactor-go事件流处理? Protoactor-go的事件流处理系统位于[eventstream/]

gitblog_00161的博客 503

ProtoActor-Go 开源项目教程

ProtoActor-Go 是一个基于 Go 语言的高性能分布式 Actor 模型实现。它旨在提供一个轻量级、快速且可扩展的框架,用于构建分布式系统和并发应用程序。ProtoActor-Go 支持跨语言通信,可以与其他语言(如 C#)的 ProtoActor 实现无缝集成。 ## 项目快速启动 ### 安装 首先,确保你已经安装了 Go 语言环境。然后,通过以下命令安装 ProtoActor...

gitblog_00322的博客 525

下一代的 Actor 模型框架 Proto Actor

ProtoAct 是下一代的 Actor 模型框架,提供了 .NET 和 Go 语言的实现,默认支持分布式,提供管理和监控功能。在过去几年,我们经常看到两种 Actor 模型方法相互竞争,首先是经典的 Erlang/Akka 风格的 Actor 模型;以及微软的“虚拟Actor”或者成为“Grains” 的风格。这两种风格有各自的优缺点。 而 Proto.Actor 将这两种风格结合在一起形成一

dotNET跨平台 3484

Protoactor-Go 开源项目教程

Protoactor-Go 是一个用于构建分布式系统的 actor 模型框架。项目的目录结构如下: ``` protoactor-go/ ├── actor ├── cluster ├── examples ├── mailboxes ├── metrics ├── remote ├── router ├── serialization ├── stream ├── tests ├── util...

gitblog_01074的博客 380

unlock-music 音乐解锁工具:本地把 ncm、qmc 转成通用格式

unlock-music 是一款面向已购加密音乐的音乐解锁工具,支持网易云音乐的 ncm 以及 QQ 音乐的 qmc、mflac、tkm、ogg 格式,并能输出 MP3、FLAC、WAV 等通用音频。整个解密与转换过程都发生在本地设备上,文件不会上传到任何服务器。下面讲清楚如何运行这个工具、它能处理哪些文件。 ## unlock-music 能做什么 - **网易云 ncm 解密**:已购的

gitblog_00450的博客 488
上一篇: 商业公链之区块链技术使用的常见库(四)------Go语言内存数据库 "github.com/tidwall/buntdb"
下一篇: Go语言学习笔记(十七)------数据库MongoDB学习笔记
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值