上篇我们讨论了Akka-Remoting.我们说Akka-Remoting是一种点对点的通讯方式,能使两个不同JVM上Akka-ActorSystem上的两个Actor之间可以相互沟通.Akka-Remoting还没有实现完全的Actor位置透明(location transparency),因为一个Actor还必须在获得对方Actor确切地址信息后才能启动与之沟通过程.Akka-Remoting支持"远程查找"和"远程构建"两种沟通方式.由于篇幅所限,我们只介绍了…
Akka-Cluster可以在一部物理机或一组网络连接的服务器上搭建部署.用Akka开发同一版本的分布式程序可以在任何硬件环境中运行,这样我们就可以确定以Akka分布式程序作为标准的编程方式了. 在上面两篇讨论里我们介绍了Akka-Remoting.Akka-Remoting其实是一种ActorSystem之间Actor对Actor点对点的沟通协议.通过Akka-Remoting来实现一个ActorSystem中的一个Actor与另一个Actorsystem中的另一个Actor之间的沟通.在Re…
Akka是一种消息驱动运算模式,它实现跨JVM程序运算的方式是通过能跨JVM的消息系统来调动分布在不同JVM上ActorSystem中的Actor进行运算,前题是Akka的地址系统可以支持跨JVM定位.Akka的消息系统最高境界可以实现所谓的Actor位置透明化,这样在Akka编程中就无须关注Actor具体在哪个JVM上运行,分布式Actor编程从方式上跟普通Actor编程就不会有什么区别了.Akka的Remoting是一种点对点的跨JVM消息通道,让一个JVM上ActorSystem中的某个A…
通过上篇关于Cluster-Singleton的介绍,我们了解了Akka为分布式程序提供的编程支持:基于消息驱动的运算模式特别适合分布式程序编程,我们不需要特别的努力,只需要按照普通的Actor编程方式就可以实现集群分布式程序了.Cluster-Singleton可以保证无论集群节点出了任何问题,只要集群中还有节点在线,都可以持续的安全运算.Cluster-Singleton这种模式保证了某种Actor的唯一实例可以安全稳定地在集群环境下运行.还有一种情况就是如果有许多特别占用资源的Actor需…
kafka具备的分布式.高吞吐.高可用特性,以及所提供的各种消息消费模式可以保证在一个多节点集群环境里消息被消费的安全性:即防止每条消息遗漏处理或重复消费.特别是exactly-once消费策略:可以保证每条消息肯定只被消费一次.换句话说就是在分布式运算环境里kafka的消息消费是能保证唯一性的. 但是,保证了消息读取唯一性,消息的处理过程如果也放到分布式运算环境里仍然会面对数据完整性(data integrity)问题.例如:消息处理过程是更新银行账户中金额.消息内容是更新某个账户的指令,那么…
0.前言 0.1  分布式运算框架的核心思想(此处以MR运行在yarn上为例)  提交job时,resourcemanager(图中写成了master)会根据数据的量以及工作的复杂度,解析工作量,从而产生任务(有多少个MapTask以及多少个ReduceTask),然后根据各个nodemanage节点资源情况进行任务划分.最后得到结果存入hdfs中或者是数据库中 注意:由图可知,map任务和reduce任务在不同的节点上,那么reduce是如何获取经过map处理的数据呢?======>shuff…
在上篇讨论里我们主要介绍了Akka-Cluster的基本原理.同时我们也确认了几个使用Akka-Cluster的重点:首先,Akka-Cluster集群构建与Actor编程没有直接的关联.集群构建是ActorSystem层面上的,可以是纯粹的配置和部署行为:分布式Actor程序编程实现了Actor消息地址的透明化,无须考虑目标运行环境是否分布式的,可以按正常的Actor编程模式进行. 既然分布式的Actor编程无须特别针对集群环境,那么摆在我们面前的就是多个可以直接使用的运算环境(集群节点)了,…
在很多应用场景中都会出现在系统中需要某类Actor的唯一实例(only instance).这个实例在集群环境中可能在任何一个节点上,但保证它是唯一的.Akka的Cluster-Singleton提供对这种Singleton Actor模式的支持,能做到当这个实例所在节点出现问题需要脱离集群时自动在另一个节点上构建一个同样的Actor,并重新转交控制.当然,由于涉及了一个新构建的Actor,内部状态会在这个过程中丢失.Single-Actor的主要应用包括某种对外部只能支持一个接入的程序接口,或…
上周公司其它小组在讨论做分布式爬虫,我也思考了一下.提了一个方案,就是使用akka分布式rpc框架来做,自己写master和worker程序,client向master提交begin任务或者其它爬虫需求,master让worker去爬网页,worker都是kafka的同一个group然后从kafka里面拉取数据(URL),然后处理爬了的网页,解析内容,把爬下来的网页通过正則表達式匹配出嵌套的网页,然后请求actor推断是否爬过(防止生成有向图.让其变成树形结构)(这里应该是个单独的actor.这…
一.drpc 的介绍 1.rpc RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. 2.drpc drpc(Distributed Remote Procedure Call) - 分布式的远程过程调用. 我们回顾一下前面学习的storm知识,知道storm是一个分布式的流式计算框架,由1台nimbus 和多台supervisor 组成,nimbus主要是把任务分发到不同的supervisor 上,而…