Akka Typed系列:协议&行为】的更多相关文章

引言 2019年11月6号LightBend公司发布了AKKA 2.6版本,带来了类型安全的actor,新的Akka Cluster底层通信设施——Artery,带来了更好的稳定性,使用Jackson进行消息序列化,支持SLF4J日志接口.Akka Typed与之前的经典actor编程模式有较大的不同,本文翻译自Manuel Bernhardt——Akka技术推广大使,在2019年7月发布的系列文章:Tour of Akka Typed: Protocols and Behaviors,文中的示…
️ 引言 近两年,一直在折腾用FP与OO共存的编程语言Scala,采取以函数式编程为主的方式,结合TDD和BDD的手段,采用Domain Driven Design的方法学,去构造DDDD应用(Domain Driven Design & Distributed).期间,尝试了大量的框架:业务领域主要适用Akka.Scalaz等框架,UI和基础设施方面主要适用Spring.Kafka等框架,测试则主要适用Spock.ScalaTest.Selenium等框架. 两年的折腾,不能说没有一点收获.在…
对不起,akka typed 我是不准备进行源码分析的,首先这个库的API还没有release,所以会may change,也就意味着其概念和设计包括API都会修改,基本就没有再深入分析源码的意义了.另外这个typed actor跟OOP的class差别还是很大的,目前的API还是很丑的,至少我看着非常别扭啊.如果各位读者对这个有兴趣,去谷歌一下,看看它一些简单的介绍就好了,千万不要在生产使用. 不过我们也可以分析一下akka typed出现的原因.在我们会用actor开发的时候一定会遇到这样的…
慎用ask应该是Akka设计的一个准则,很多时候我们应该禁用ask.之所以单独把ask拎出来作为一篇博文,主要是akka的初学者往往对ask的使用比较疑惑. "Using ask will send a message to the receiving Actor as with tell, and the receiving actor must reply with sender() ! reply in order to complete the returned Future with…
在之前的akka设计模式系列-消息模型中,我们介绍了akka的消息设计方案,但随着实践的深入,发现了一些问题,这里重新梳理一下设计方法,避免之前的错误.不当的观点给大家带来误解. 命令和事件 我们仍然把akka中的消息分为命令和事件两大类,但二者的具体含义和实现有一点变化.“命令,是指一个actor给另外一个actor发送指令做相关的业务逻辑:事件,则是actor对某个命令的响应结果,或者对其他事件的响应结果”.之前是这样定义的,但在具体的实践过程中发现了一些问题. 比如,命令如何归类?是根据命…
谈到Akka就必须介绍Actor并发模型,而谈到Actor就必须看一篇叫做<A Universal Modular Actor Formalism for Artificial Intelligence >的论文,它最早发表于1973年,提出了一种并发计算的理论模型,Actor就源于该模型. 在Actor模型中,actor是一个并发原语,简单的说,一个actor就是一个工人,与进程或线程一样都能够工作或处理任务.其实这还有点不好理解,我们可以把它想象成面向对象编程语言中的一个对象实例.在OOP…
由于本人爱好Scala,顺便也就爱好Akka,但目前网上对Akka的介绍大多都是概念上或技术方向上的介绍,基本没有Akka设计模式或者Actor模型设计模式的资料.这对于Akka的普及非常不利,因为即使大家知道了Akka的基本功能和框架,也很难用它来正确的设计一个系统. 鉴于上述情况,我准备将使用Akka开发系统中总结的设计模式或者最佳实践分享出来,供大家参考. 考虑到读者对Akka的认知程度不同,这个博客系列大致会分几个部分:Actor模型.Akka基本概念.Akka基本组件介绍.Akka基本…
[From] http://www.algorithmdog.com/akka-test 通过上一篇文章,我们已经大致了解怎么使用 Akka,期待细致用法.这篇文章将介绍如何用 Akka-testkit 对 Akka 程序进行测试. 并行程序是最难调试的程序类型之一,因此做好测试是相当重要的事情.为了减轻 Akka 的程序的测试难度, Akka 官方专门开发了一个测试工具包 Akka-testkit. 1 Actor 的测试需求 对于一个 Actor, 我们要测什么呢?不同的文章有不同的说法,比…
本博客讨论一下akka在秒杀场景下的应用,提出自己的见解,只做抛砖引玉,大神勿喷.秒杀活动涉及到前中后台各个阶段,为了说明问题,我们简化场景,只研究akka在后台如何处理秒杀业务. 秒杀活动 所谓的秒杀活动,简单点来说,就是把某个稀缺商品或促销商品,挂到页面,供大量客户抢购.这里有两个关键点,商品数量不多,客户量非常大或抢购流量非常大.客户量或抢购流量往往意味着并发量非常大,容易给服务器造成很大的瞬时压力. 同样,为了简化问题,我们把秒杀活动中的概念也进行简化,分为库存和抢购请求.库存:待抢购商…
actor锚定模式是指使用actorSelection对acor进行锚定的设计模式,也可以说是一个对actor的引用技巧.在某些情况下,我们可能需要能够根据Actor的path锚定对应的实例.简单来说就是,无论actor是因为异常导致的restart还是用户主动stop,然后再重新actorOf,只要actor的路径和name相同,我们都希望把消息发送给改Actor的一个实例.那我们来看一下actorSelection和ActorRef的使用区别. class AnchorActor exten…