`
沉沦的快乐
  • 浏览: 55940 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

akka学习之位置透明性

 
阅读更多

     上一章akka学习之actor引用,路径和地址介绍了如何使用actor路径来让actor的位置变得透明。但是一些特殊的特性有必要再额外介绍下,因为在不同的编程语言,平台和技术环境中,远程透明的意思非常也不一样。

 

默认分布式

     在akka中,每件事情的设计目的都是工作在分布式环境中的:所有actor之间的交互都是通过纯粹的消息传递来实现的所有的事件都是异步的。akka所做的工作是确保不管在单机还是几百台机器组成的集群中,所有的方法都能被找到。实现这个功能的关键是通过最优路径的方式从远程到本地,而不是通过一般从本地到远程的方法。

 

哪种方式会打破透明性

      akka的正确性并不依赖于应用需要正确的使用它,因为分布式执行的设计已经对什么是可能的行为做出了限制。最明显的一点是,在网络中传输的消息必须是可串行化的,而一个没有这么明显的例子如果一个actor是在远程节点中创建时,作为actor工厂的闭包也包含在里面(比如props)。

     另一个重要的结果是,所有的交互事件都必须是异步的。因为在一个计算机网络中,消息到达接收者可能需要几分钟,而且在网络中消息的丢失率比在同一个jvm中要更高,同一个jvm中的丢失率几乎为0(没有硬性保证)。

 

如何使用远程

    我们说akka是路径透明性的原因是因为akka中几乎没有远程调用层的API:它只是通过配置来驱动。你只需要根据前面章节中列出的提纲来写你的代码,然后再配置文件中指定actor子树的远程部署。通过这种方式,你的应用可以不用改变代码就能扩展出去。而唯一影响远程部署的可编程API接口是Props包含了可指定部署实例的属性,它与通过配置文件指定远程部署等效(如果两种都有,那么配置文件优先)。

 

点对点网络(p2p) VS 客户端-服务器(C/S)模式

        akka远程通信采用的是p2p模式来连接各个actor系统,这也是actor集群的基础。这种p2p的设计思想主要来源于下面两个:

1.actor系统之间的通信是对称的:系统A可以连接到系统B,那么系统B也能独立的连上系统A.

2.根据连接模式,通信系统的角色是对称的:没有哪个系统是只能发起连接的,也没有哪个系统是只能接受连接的。

       p2p模式带来的结果是通过预定义系统角色或者使用网络地址转换和负载均衡来创建纯C/S模式是不可能的。对于C/S模式最好使用HTTP和akka I/O。

 

通过路由来横向扩展标记点

    除了在同一系统的不同机器运行不同的部分之外,也可能通过支持创建多个actor子树横向扩展到多核处理,以便支持并发处理,就像一个搜索引擎可以并行的处理多个请求一样。多个actor实例可以通过不同的方式被路由到,比如轮询的方式。为了实现路由的目的,开发者唯一要做的事情是声明一个路由actor,然后,创建出来的路由actor会创建出一定数目(数目可以配置)的目标actor,并且更加配置的路由方式路由到这些目标actor。一旦一个路由actor在配置文件中被声明之后,它的配置可以被任意的override,包括把它与某些子actor的远程部署相混合。

    

 

分享到:
评论

相关推荐

    akka学习入门实践

    akka学习入门实践

    Akka 基础学习pdf中文文档

    如何使用 Akka 来构建具备高容错性、可以横向扩展的分布式网络应用程序。Akka 是一 个强大的工具集,提供了很多选项,可以对在本地机器上处理或网络远程机器上处理的 某项工作进行抽象封装,使之对开发者不可见。...

    Akka Scala 学习高清原版pdf

    Akka scala 并发 actor 高清原版pdf 学习scala实现akka进行并发编程

    AKKA 本质 《Akka Essentials》

    Akka Essentials,学习akka很好的一本书

    Learning Akka(PACKT,2015)

    Akka is a distributed computing toolkit that enables developers to build correct concurrent and distributed applications using Java and Scala with ease, applications that scale across servers and ...

    Akka入门与实践

    如何使用 Akka 来构建具备高容错性、可以横向扩展的分布式网络应用程序。Akka 是一 个强大的工具集,提供了很多选项,可以对在本地机器上处理或网络远程机器上处理的 某项工作进行抽象封装,使之对开发者不可见。...

    Learning Akka

    Learning Akka Learning Akka Learning AkkaLearning Akka

    Akka.in.Action.2016.9.pdf

    Akka in Action shows you how to build message-oriented systems with Akka. This comprehensive, hands-on tutorial introduces each concept with a working example. You’ll start with the big picture of ...

    Akka Concurrency

    Akka Concurrency

    Akka 实战 akka in action v13 2014版本

    akka 实战。akka in action。v13 2014新版。 互联网技术入门必备 清晰,非扫描。

    AKKA (java) 精讲

    AKKA (java) 精讲

    akka java实现tcp远程调用

    akka实例 java实现tcp远程调用,一个服务端,一个客户端

    Akka机制详解

    Akka官方文档,详细介绍了基于Scala的Akka开发细节,是喜爱Scala的同学学习akka的入门教程。

    akka实例参考

    初学akka使用实例,有很好的帮助啊,可实际运行

    akka-kryo-serialization, 基于Kryo的Akka序列化.zip

    akka-kryo-serialization, 基于Kryo的Akka序列化 akka-kryo-serialization-- Scala 和Akka基于kryo的序列化程序这个库为 Scala 和Akka提供定制的基于kryo的序列化程序。 它可以用于更高效的akka远程处理。它还可以...

    akkajava.pdf

    Akka is here to change that. Using the Actor Model we raise the abstraction level and provide a better platform to build scalable, resilient and responsive applications—see the Reactive Manifesto ...

    akka-data-replication, 在Akka集群中,复制 CRDTs.zip

    akka-data-replication, 在Akka集群中,复制 CRDTs Akka分布式数据这个库的( akka-data-replication ) 已经包含在Akka中,在模块中分发数据。英镑不在/akka-data-replication中维护。 所有 Bug 修复和新功能将在 ...

    Akka-in-Action.pdf

    In March 2010 I noticed a tweet by Dean Wampler that made me look into Akka: W00t! RT @jboner: #akka 0.7 is released: http://bit.ly/9yRGSB After some investigation into the source code and building a ...

    Akka Essentials 代码

    Akka Essentials 代码,Akka Essentials 代码,Akka Essentials 代码,

    AkkaJava高清pdf版

    AkkaJava高清pdf版

Global site tag (gtag.js) - Google Analytics