随笔分类 -  Akka

Actor model
摘要:Akka-http针对Connection的两头都提供了方便编程的Api,分别是Server-Side-Api和Client-Side-Api。通过这两个Api可以大大提高编程效率。当然,上期我们提到过,Http-Server是Akka-http的核心部分,所有系统集成功能都是在Server-Sid 阅读全文
posted @ 2017-10-22 13:02 雪川大虫 阅读(1192) 评论(0) 推荐(0) 编辑
摘要:众所周知,Akka系统是基于Actor模式的分布式运算系统,非常适合构建大数据平台。所以,无可避免地会出现独立系统之间、与异类系统、与移动系统集成的需求。由于涉及到异类和移动系统,系统对接的方式必须在一套公开的标准之上进行,包括数据格式及数据传输标准。实际上针对标准的传输连接及标准数据编码、传输、解 阅读全文
posted @ 2017-10-20 16:49 雪川大虫 阅读(4454) 评论(0) 推荐(1) 编辑
摘要:在以前的博文中我们介绍了Slick,它是一种FRM(Functional Relation Mapper)。有别于ORM,FRM的特点是函数式的语法可以支持灵活的对象组合(Query Composition)实现大规模的代码重复利用,但同时这些特点又影响了编程人员群体对FRM的接受程度,阻碍了FRM 阅读全文
posted @ 2017-09-27 08:39 雪川大虫 阅读(969) 评论(0) 推荐(1) 编辑
摘要:akka-stream是基于Actor模式的,所以也继承了Actor模式的“坚韧性(resilient)”特点,在任何异常情况下都有某种整体统一的异常处理策略和具体实施方式。在akka-stream的官方文件中都有详细的说明和示范例子。我们在这篇讨论里也没有什么更好的想法和范例,也只能略做一些字面翻 阅读全文
posted @ 2017-09-21 16:47 雪川大虫 阅读(2426) 评论(3) 推荐(0) 编辑
摘要:在现实应用中akka-stream往往需要集成其它的外部系统形成完整的应用。这些外部系统可能是akka系列系统或者其它类型的系统。所以,akka-stream必须提供一些函数和方法来实现与各种不同类型系统的信息交换。在这篇讨论里我们就介绍几种通用的信息交换方法和函数。 akka-stream提供了m 阅读全文
posted @ 2017-09-19 11:28 雪川大虫 阅读(1745) 评论(1) 推荐(0) 编辑
摘要:在数据流应用的现实场景中常常会遇到与外界系统对接的需求。这些外部系统可能是Actor系统又或者是一些其它类型的系统。与这些外界系统对接的意思是在另一个线程中运行的数据流可以接收外部系统推送的事件及做出行为改变的响应。 如果一个外界系统需要控制一个运行中数据流的功能环节GraphStage,首先必须在 阅读全文
posted @ 2017-09-12 16:52 雪川大虫 阅读(1146) 评论(0) 推荐(0) 编辑
摘要:从总体上看:akka-stream是由数据源头Source,流通节点Flow和数据流终点Sink三个框架性的流构件(stream components)组成的。这其中:Source和Sink是stream的两个独立端点,而Flow处于stream Source和Sink中间可能由多个通道式的节点组成 阅读全文
posted @ 2017-09-09 11:39 雪川大虫 阅读(1630) 评论(2) 推荐(0) 编辑
摘要:在现实中我们会经常遇到这样的场景:有一个固定的数据源Source,我们希望按照程序运行状态来接驳任意数量的下游接收方subscriber、又或者我需要在程序运行时(runtime)把多个数据流向某个固定的数据流终端Sink推送。这就涉及到动态连接合并型Merge或扩散型Broadcast的数据流连接 阅读全文
posted @ 2017-08-31 09:53 雪川大虫 阅读(1558) 评论(0) 推荐(1) 编辑
摘要:akka-stream是多线程non-blocking模式的,一般来说,运算任务提交到另外线程后这个线程就会在当前程序控制之外自由运行了。任何时候如果需要终止运行中的数据流就必须采用一种任务柄(handler)方式来控制在其它线程内运行的任务。这个handler可以在提交运算任务时获取。akka-s 阅读全文
posted @ 2017-08-30 08:24 雪川大虫 阅读(1087) 评论(0) 推荐(0) 编辑
摘要:akka-stream原则上是一种推式(push-model)的数据流。push-model和pull-model的区别在于它们解决问题倾向性:push模式面向高效的数据流下游(fast-downstream-subscriber),pull model倾向高效的上游(fast-upstream-p 阅读全文
posted @ 2017-08-28 17:02 雪川大虫 阅读(2511) 评论(0) 推荐(1) 编辑
摘要:akka-stream的Graph是一种运算方案,它可能代表某种简单的线性数据流图如:Source/Flow/Sink,也可能是由更基础的流图组合而成相对复杂点的某种复合流图,而这个复合流图本身又可以被当作组件来组合更大的Graph。因为Graph只是对数据流运算的描述,所以它是可以被重复利用的。所 阅读全文
posted @ 2017-08-24 10:13 雪川大虫 阅读(1711) 评论(1) 推荐(3) 编辑
摘要:akka-stream的数据流可以由一些组件组合而成。这些组件统称数据流图Graph,它描述了数据流向和处理环节。Source,Flow,Sink是最基础的Graph。用基础Graph又可以组合更复杂的复合Graph。如果一个Graph的所有端口(输入、输出)都是连接的话就是一个闭合流图Runnab 阅读全文
posted @ 2017-08-21 13:47 雪川大虫 阅读(2472) 评论(0) 推荐(0) 编辑
摘要:在大数据程序流行的今天,许多程序都面临着共同的难题:程序输入数据趋于无限大,抵达时间又不确定。一般的解决方法是采用回调函数(callback-function)来实现的,但这样的解决方案很容易造成“回调地狱(callback hell)”,即所谓的“goto-hell”:程序控制跳来跳去很难跟踪,特 阅读全文
posted @ 2017-08-15 13:18 雪川大虫 阅读(3553) 评论(0) 推荐(1) 编辑
摘要:前面我们讨论过FSM,一种专门为维护内部状态而设计的Actor,它的特点是一套特殊的DSL能很方便地进行状态转换。FSM的状态转换模式特别适合对应现实中的业务流程,因为它那套DSL可以更形象的描述业务功能。为了实现FSM的可用性,就必须为FSM再增加自我修复能力,PersistentFSM是FSM和 阅读全文
posted @ 2017-08-09 10:46 雪川大虫 阅读(1334) 评论(1) 推荐(1) 编辑
摘要:消息保证送达是指消息发送方保证在任何情况下都会至少一次确定的消息送达。AtleastOnceDelivery是一个独立的trait,主要作用是对不确定已送达的消息进行补发,这是一种自动的操作,无需用户干预。既然涉及到消息的补发,就不可避免地影响发送方和接收方之间消息传递的顺序、接收方重复收到相同的消 阅读全文
posted @ 2017-07-24 22:06 雪川大虫 阅读(1299) 评论(0) 推荐(0) 编辑
摘要:Akka程序的特点之一就是高弹性或者强韧性(resilient)的,因为Actor具有自我修复的能力。当Actor模式的程序出现中断情况如:系统崩溃、人为终结等,系统在重启后有关Actor可以恢复之前的状态。这项功能是通过PersistentActor实现的。PersistentActor是一种特殊 阅读全文
posted @ 2017-07-21 09:14 雪川大虫 阅读(2226) 评论(0) 推荐(0) 编辑
摘要:通过上篇关于Cluster-Singleton的介绍,我们了解了Akka为分布式程序提供的编程支持:基于消息驱动的运算模式特别适合分布式程序编程,我们不需要特别的努力,只需要按照普通的Actor编程方式就可以实现集群分布式程序了。Cluster-Singleton可以保证无论集群节点出了任何问题,只 阅读全文
posted @ 2017-07-14 14:26 雪川大虫 阅读(3113) 评论(0) 推荐(0) 编辑
摘要:在很多应用场景中都会出现在系统中需要某类Actor的唯一实例(only instance)。这个实例在集群环境中可能在任何一个节点上,但保证它是唯一的。Akka的Cluster-Singleton提供对这种Singleton Actor模式的支持,能做到当这个实例所在节点出现问题需要脱离集群时自动在 阅读全文
posted @ 2017-07-10 11:28 雪川大虫 阅读(2394) 评论(0) 推荐(0) 编辑
摘要:在上篇讨论里我们主要介绍了Akka-Cluster的基本原理。同时我们也确认了几个使用Akka-Cluster的重点:首先,Akka-Cluster集群构建与Actor编程没有直接的关联。集群构建是ActorSystem层面上的,可以是纯粹的配置和部署行为;分布式Actor程序编程实现了Actor消 阅读全文
posted @ 2017-07-03 13:51 雪川大虫 阅读(3768) 评论(13) 推荐(1) 编辑
摘要:Akka-Cluster可以在一部物理机或一组网络连接的服务器上搭建部署。用Akka开发同一版本的分布式程序可以在任何硬件环境中运行,这样我们就可以确定以Akka分布式程序作为标准的编程方式了。 在上面两篇讨论里我们介绍了Akka-Remoting。Akka-Remoting其实是一种ActorSy 阅读全文
posted @ 2017-06-26 23:18 雪川大虫 阅读(2788) 评论(0) 推荐(1) 编辑