文档章节

【Java】AKKA文档(java版)—角色的引用、路径和地址

云栖运营小编
 云栖运营小编
发布于 2017/05/24 17:05
字数 968
阅读 31
收藏 0

2.5 角色的引用、路径和地址

这一章描述,角色在一个有可能是分布式的角色系统中是如何被识别和定位的。它关系到了角色系统形成的内在监管层级以及角色跨越多个网络节点之间通信的位置透明化。

上述图片显示了角色系统中几个最重要实体之间的关系,请仔细阅读。

 

2.5.1什么是一个角色引用?

一个角色引用是ActorRef的一个子类型,它的主要目的是为它所代表的角色提供发送消息的功能。每个角色可以通过self字段访问自己指定(本地)的引用,这个引用包括发送者引用,默认会发送所有消息给别的角色。相反的,在消息处理期间,这个角色可以访问发送者引用,通过sender方法来呈现当前的消息。

这里提供了几个基于角色系统配置的不同类型的角色引用:

  1. 角色系统中的纯本地引用被配置成不支持网络功能的,这些角色引用发送的消息不能通过一个网络发送到另一个远程的JVM。
  2. 角色系统中的本地引用在被启用时,它代表了那些在同一个JVM里的角色支持网络功能。为了发送消息给别的网络节点,这些引用包含了协议和远程地址信息。
  3. 这里有一个用于路由器的本地角色引用的子类型(即角色混合了路由器的特性)。它的逻辑结构和上述的本地引用一样,有一点不同的是,向它们发送的消息会被分发给它们的子角色中的一个。
  4. 远程角色引用表示了哪个角色可以通过远程通信到达,即发送消息给它们会透明的序列化消息,并把它们发送给远程的JVM。
  5. 这里有几个角色引用的特殊类型,它们代表了角色引用的所有实用目的:
  • PromiseActorRef是Promise的一个特殊代表,它被用于完成一个角色的响应。akka.pattern.ask创建这个角色引用。
  • DeadLetterActorRef是死亡信件服务的默认实现,定义那些Akka路径中终点是关闭或不存在的消息。
  • EmptyLocalActorRef是Akka查找一个不存在的本地角色路径时返回的:它等同于DeadLetterRef,不过它保留了它的路径,这样Akka可以通过网络把它发送出去,然后可以通过它的路径和别的已经存在的角色引用进行比较,这样就能得到一些已经死亡的角色。
  1. 还有一些你可能还没见过的一次性的内部实现:
  • 有一个角色引用,它并不呈现为一个角色,它只作为一个伪管理员的根部守护者(guardian,下同),我们称它为“行走在时空泡沫中”。
  • 第一个日志服务开启之前,事实上激起角色创建的工具是一个伪造的角色引用,它能接收日志事件并把它们直接打印到标准输出中,它就是Logging.
  • StandardOutLogger。

阅读原文请点击

本文转载自:http://click.aliyun.com/m/21736/

共有 人打赏支持
云栖运营小编
粉丝 7
博文 95
码字总数 47489
作品 0
朝阳
运营/编辑
【Java】内存问题——内存溢出

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tr1912/article/details/82261379 模拟内存溢出 我们通过自己写代码,模拟一下两种内存溢出的情况,一种是堆内...

王啸tr1912
08/31
0
0
Android平台上的JNI技术介绍

NDK简介 Android是由Google领导开发的操作系统,Android依靠其开放性,迅速普及,成为目前最流行的智能手机操作系统。 图0-1 Android系统架构图 图0-1是Android系统架构图。大多数程序位于最...

ChowJames
2012/10/01
0
0
【Java】深入理解Java虚拟机的读书笔记

java虚拟机所管理的内存包括以下几个运行时数据区域 【程序计数器】线程私有,是一块较小的内存空间,当前线程执行的字节码的行号指示器,处理分支、循环、跳转、异常处理、线程恢复等基础功...

雅痞士
09/14
0
0
Windows 7、Windows 8 配置jdk 1.7环境变量 1.6同样适用

1.右击计算机-属性-高级系统设置-高级-环境变量,弹出“环境变量”对话框,主要是改下面的环境变量,不是上面的Administrator。(不然其他用户还得自己配) 添加JAVAHOME指明JDK安装路径,如 ...

枫影Xda
2012/12/21
0
0
neo4j 安装 开启 远程访问

实验环境 ubuntu 版本:ubuntu 14.04 桌面版 Neo4j版本:Neo4j 3.2.0 社区版 安装步骤 下载 Neo4j 官网下载地址:https://neo4j.com/download/ 选择“Download Communit Edtion”社区版 在“...

阿豪boy
01/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Mac OS 最强鼠标改键软件:BetterAndBetter

官网: http://www.better365.cn 话不多说,先上你们最喜欢的软件界面截图。 通用: 触摸板: 鼠标: 键盘: 情景模式: 文本跳窗(自动跳窗): 四角触发: 工具箱: 脚本: 关于: 说下我目...

故国有明
39分钟前
16
0
Hbase Schema 模型设计注意事项及示例

一、Hbase 数据模型概述 HBase的数据模型也是由表组成,每一张表里也有数据行和列,但是在HBase数据库中的行和列又和关系型数据库的稍有不同。 表(Table): HBase会将数据组织成一张表,表名必...

PeakFang-BOK
今天
6
0
Blockathon(2018)上海竞赛项目成果今天揭晓

开幕式现场 10月19日,Blockathon(2018)上海在黄浦区P2联合创业办公社举行,本次活动由50名区块链开发者组成9支参赛队伍,来自国内外优秀区块链开发团队的20名技术专家担任导师及裁判。9支队...

HiBlock
今天
6
0
微信小程序开发系列六:微信框架API的调用

微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 微信小程序开发...

JerryWang_SAP
今天
12
0
5 个用 Python 编写 web 爬虫的方法

大家在读爬虫系列的帖子时常常问我怎样写出不阻塞的爬虫,这很难,但可行。通过实现一些小策略可以让你的网页爬虫活得更久。那么今天我就将和大家讨论这方面的话题。 我刚整理了一套2018最新...

糖宝lsh
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部