
akka学习教程
文章平均质量分 56
AKKA提供一种Actor并发模型,其粒度比线程小很多,这意味着你可以在项目中使用大量的Actor。它提供了一套容错机制,允许在Actor出错时进行一些恢复或者重置操作。AKKA不仅可以在单击上构建高并发程序,也可以在网络中构建分布式程序,并提供位置透明的Actor定位服务 。
快乐崇拜234
学习笔记
展开
-
akka学习教程(一)简介
为什么要用akkaAkka提供可扩展的实时事务处理。Akka是一个运行时与编程模型一致的系统,为以下目标设计:垂直扩展(并发)水平扩展(远程调用)高容错在Akka的世界里,只有一个内容需要学习和管理,具有高内聚和高一致的语义。Akka是一种高度可扩展的软件,这不仅仅表现在性能方面,也表现在它所适用的应用的大小。Akka的核心,Akka-actor是非常小的,可以非常方便地放进你的应用中,提供原创 2016-12-21 12:15:21 · 45538 阅读 · 5 评论 -
akka学习教程(二)HelloWord
本示例来自于官方示例(http://doc.akka.io/docs/akka/2.4.4/intro/getting-started.html): 文中找到 Using Akka with Maven 。点击“Akka Main in Java”下载示例。http://www.lightbend.com/activator/template/akka-sample-main-java 注意:原创 2016-12-21 12:16:07 · 22669 阅读 · 0 评论 -
akka学习教程(三) 不可变对象
我们都知道在编写java线程的时候,要传递不可变对象,这里akka也是如此 下面这个例子就是传递不可变对象:package akka.unmodifiable;import java.util.Collections;import java.util.List;/** * Created by liubenlong on 2017/1/5. * * actor中传递的对象要是不可变对象。当原创 2017-01-05 15:41:23 · 13339 阅读 · 0 评论 -
akka学习教程(四) actor生命周期
akka值actor生命周期原创 2017-01-05 15:48:25 · 15348 阅读 · 1 评论 -
akka学习教程(五) inbox消息收件箱
我们知道,整个akka的actor系统是通过消息进行传递的,之前的几个教程都是通过一个actor来给另一个actor发消息。其实还可以使用inbox消息收件箱来给某个actor发消息,并且可以进行交互。package akka;import akka.actor.*;import akka.event.Logging;import akka.event.LoggingAdapter;impor原创 2017-01-12 14:40:53 · 9940 阅读 · 0 评论 -
akka学习教程(六) 路由器Router
通常在分布式任务调度系统中会有这样的需求:一组actor提供相同的服务,我们在调用任务的时候只需要选择其中一个actor进行处理即可。 其实这就是一个负载均衡或者说路由策略,akka作为一个高性能支持并发的actor模型,可以用来作为任务调度集群使用,当然负载均衡就是其本职工作了,akka提供了Router来进行消息的调度。由于负载均衡原理过于简单,既不多说了,直接上代码(这里借用之前章节的Inb原创 2017-01-16 14:48:20 · 12398 阅读 · 5 评论 -
akka学习教程(七) 内置状态转换Procedure
在actor运行过程中,可能会有多种状态,各个状态间可能会存在切换的情况,akka已经帮我们考虑到这种情况情况的处理:Procedure. 下面模拟一个婴儿。婴儿有两种不同的状态,开心和生气,婴儿有个特点就是好玩,永远不会累,所以让其睡觉婴儿就会生气,让他继续玩就会很高兴。 简单代码如下:package akka;import akka.actor.*;import akka.event.Lo原创 2017-01-16 15:58:20 · 5930 阅读 · 4 评论 -
akka学习教程(八) Actor中的Future-询问模式
和java线程中的future挺像的,可以将一个actor的返回结果重定向到另一个actor中进行处理,主actor或者进程无需等待actor的返回结果。原创 2017-01-16 16:32:23 · 8895 阅读 · 2 评论 -
akka学习教程(九) STM软件事务内存
软件事务内存(STM):顾名思义,这是事务。与关系型数据库中的事务类似,具有ACID属性。 在分布式任务中,有可能会有和事务相关的处理,这里将举例说明AKKA中STM的用法。假设公司给员工发工资业务,CompanyActor是公司actor, EmployeeActor是员工actor,公司账户减钱,员工账户加钱,这就要求事务。代码中有重要注释。package akka.stm;import ak原创 2017-01-16 18:22:44 · 7013 阅读 · 1 评论 -
akka学习教程(十) agent
我们知道在JDK中,编写多线程代码时要谨慎处理临界区的数据,可以加锁或者使用JDK自带的CAS库:atomic相关包。那么在akka中怎么处理呢?akka给我们提供了一个agent。可以使用agent来实现共享变量的安全处理。下面示例为10个actor并发累加countAgent变量。每个累加10000次。如果正确的话,最终结果应该是10W。原创 2017-01-16 18:56:42 · 6526 阅读 · 1 评论 -
akka学习教程(十一) akka持久化
akka系列文章目录akka学习教程(十四) akka分布式实战akka学习教程(十三) akka分布式akka学习教程(十二) Spring与Akka的集成akka学习教程(十一) akka持久化akka学习教程(十) agentakka学习教程(九) STM软件事务内存akka学习教程(八) Actor中的Future-询问模式akka学习教程(七) 内置状态转换Procedur原创 2017-01-17 16:26:47 · 7859 阅读 · 0 评论 -
akka学习教程(十二) Spring与Akka的集成
概述 近年来随着Spark的火热,Spark本身使用的开发语言Scala、用到的分布式内存文件系统Tachyon(现已更名为Alluxio)以及基于Actor并发编程模型的Akka都引起了大家的注意。了解过Akka或者Actor的人应该知道,这的确是一个很不错的框架,按照Akka官网的描述——使用Akka使得构建强有力的并发与分布式应用将更加容易。由于历史原因,很多Web系统在开发分布式服务时首转载 2017-01-18 15:13:19 · 10847 阅读 · 0 评论 -
akka学习教程(十三) akka分布式
akka集群概述Akka群集提供容错分散的对等群集成员服务,没有单点故障或单点瓶颈。 它使用gossip协议和自动故障检测器。原创 2017-01-18 15:55:27 · 92816 阅读 · 2 评论 -
akka学习教程(十四) akka分布式实战
上一篇文章介绍了akka集群的搭建,现在假如服务的生产者与消费者两个角色,模拟真实的服务调用。 本篇文章主要参考 使用Akka构建集群(二)整体架构服务端三个服务,端口为2552,2553,2551;客户端有两个:2554,2555 服务端角色为[server];客户端角色为[client]服务端集群角色首先配置服务端集群角色为[server]:akka { loglevel = "I原创 2017-01-18 17:48:04 · 24231 阅读 · 7 评论