摘要: 8. 集群下的单例actor 分布式集群保障了服务的高可用,但同时要求actor必须是无状态的,对于有状态的情况,可以把状态放入数据库,但这增加了额外的开销。也可以使用akka提供的单例actor。 单例actor,如名字所表示的,是整个集群下的单例。即整个集群只有这1个actor。 下面看下怎么创 阅读全文
posted @ 2021-09-24 14:19 littlemujiang 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 7. 工程化 工程化的一项主要内容就是通过暴露REST API来管理ActorSystem内的actor。这里仅提供一种思路。 由于我们的服务通常是基于spring boot开发,打成jar包运行在服务器上。因此主要需要解决如何和spring boot整合的问题。 在实践过程中,我们发现,创建act 阅读全文
posted @ 2021-09-24 14:15 littlemujiang 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 6. 集群 在前面,我们实现了单实例的AkkaSystem,也实现了actor的并行计算。现在我们做成分布式的/集群化的AkkaSystem。以实现最终的目标。 相关概念 在实现集群前,先介绍几个概念。 node:集群的成员,分布式系统中的节点 seed nodes:种子节点(列表),从命名可以看出 阅读全文
posted @ 2021-09-24 14:14 littlemujiang 阅读(544) 评论(0) 推荐(0) 编辑
摘要: 5. 路由消息 之前的例子中我们创建和使用的都是单个actor,而一个actor同时只能处理一条消息,这并没有发挥出akka并行计算的优势,我们希望能并行地去处理消息,就像kafka的consumer那样。这就需要使用到akka中的路由了。 路由,和常规理解的一样,当消息到达后,可以按一定的策略,把 阅读全文
posted @ 2021-09-24 14:13 littlemujiang 阅读(347) 评论(0) 推荐(0) 编辑
摘要: 4. Actor间的交互与停止 Actor间的交互 在实际场景中,我们需要很多类型的actor协助来完成一项任务或功能。这就涉及actor建的交互。actor最基本也是最常用的方式就是actorRef.tell(message)。 这个方法是异步的,akka非阻塞的优势也正是通过这一点体现出来的。 阅读全文
posted @ 2021-09-24 14:12 littlemujiang 阅读(341) 评论(0) 推荐(0) 编辑
摘要: 3. Actor进阶:创建带参数的actor和发送复杂的消息类型 上一篇实现了actor的创建,但是这个actor并不能满足我们生产中的要求。主要有以下2点: 构建actor类时,需要带参数或配置 消息不会是String这种基本类型,会是一个自定义的类 针对上面的问题,我们扩展之前的HelloWor 阅读全文
posted @ 2021-09-24 14:11 littlemujiang 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 2. Actor基础:创建Actor并发送消息 上面我们启动了ActorSystem,但是什么都没有,现在我们在里面创建一个actor,并给它发送消息。 在上一篇的例子里,我们启动ActorSystem后什么也没干,现在改造RootBehavior.create()的逻辑,在里面创建actor。 a 阅读全文
posted @ 2021-09-24 14:10 littlemujiang 阅读(448) 评论(0) 推荐(0) 编辑
摘要: 1. 基础概念与启动ActorSystem 基础概念 简介 akka系统是Actor模型的实现。 Actor模型被提出的初衷是解决并行处理的问题。在传统的面向对象模型下,完成一套复杂的逻辑/功能,我们需要创建一些对象,每个对象包含一些方法,然后方法之间调来调去。在这个框架下,通常通过多线程来实现并行 阅读全文
posted @ 2021-09-24 14:09 littlemujiang 阅读(838) 评论(0) 推荐(0) 编辑
摘要: 0. 概述 本节类似图书里的前言,旨在说明这一系列文章的写作目的、目标读者等内容。 写作目的 本系列写作的最主要目的是用输出倒逼输入,协助自己理清思路,分享是其次的。 由于最近的项目里使用到了akka框架,整个过程处于摸索阶段,遇到了不少雷和坑,排雷填坑的过程,阅读了官方文档,也在网上找过资料。发现 阅读全文
posted @ 2021-09-24 14:06 littlemujiang 阅读(421) 评论(0) 推荐(0) 编辑