写点什么

Akka 1.1 发布,对 Futures 和性能做出改进,降低了依赖性

2011 年 5 月 22 日

Akka 1.1 是在 5 月 12 日发布的,它在 Akka 1.0 的基础上做出了一些改进。另外, Scala 2.9 也在当天发布(Akka 1.1 需要 Scala 2.9);Scala 和 Akka 现在都是由Martin Odersky 和Jonas Bonér 创建的新公司Typesafe 来管理的,该公司提供针对Akka、Scala 以及构建在这两种技术上的商业产品的培训和支持。Typesafe 还提供了一个完整的框架

Akka 1.1 (akka-actor) 现在只依赖于 Scala 2.9 执行。除了其他变更,大量的工作都是为了提供 Futures (据声明所说):

-Futures 的 Dataflow API 使用了限定的延续方式,从而你可以编写表面上看起来是阻塞的代码,而实际上不会阻塞运行时
-Futures 现在完全是一元的,这意味着它具备一种好处,就是能够很好地理解 for 循环
-Futures 现在拥有大量非阻塞型的方法,这让 Futures 可以组合在一起,而不会产生阻塞

  • Futures 现在可以在所有调度程序的本地执行。

听到 Futures现在是一元的消息,函数式编程开发者会很高兴,并且还有 mapflatMap方法,让他们可以使用 Scala 的 for 语法(据文档所说):

复制代码
val f = for {
a <- Future(10 / 2) // 10 / 2 = 5
b <- Future(a + 1) // 5 + 1 = 6
c <- Future(a - 1) // 5 - 1 = 4
} yield b * c // 6 * 4 = 24
val result = f.get()

对于一元代码,使用 Scala 的 for 语句的方式和 Haskell 的do标记是类似的。例如,它可以把计算结果有序地组合成字符串。(想要快速了解 Monads,你可以参见"Monads Made Easy")。

GotoCon Copenhagen 2011 会议上,InfoQ 有幸对Jonas Bonér进行了采访,向他询问了关于 Akka 1.1 的问题以及 Akka 将来的计划。

InfoQ: 现在 Akka 1.1 需要 Scala 2.9,这样做的原因何在? 你们已经使用了 Scala 2.9 中的新特性吗(如果是的话,有哪些呢)? 在从 Scala 2.8 迁移到 2.9 的过程中,你遇到过什么困难吗?

Scala 2.9.0 和 2.8.x 相比有很大的改进,我们利用了它所做出的 bug 修正、性能改善,还有一些新特性。在从 2.8 升级的过程中,我们还没有遇到什么重大问题,这个过程非常平滑。

InfoQ: 在 Agent 中的 await/future 方法指的是什么? 在当前的操作等待返回值的时候,它们会导致其终止并重新安排计划吗?

Agent.future 会向底层进行查询的操作发送消息,以得到 Agent 当前的值。它是通过使用!!! 方法完成的,那会立刻带 Future 返回。
Agent.await 是 Agent.future.await.result.get 的别名,所以它是阻塞型调用,而 Agent.future 让你可以选择使用针对非阻塞型 Future 组合的新 API。

InfoQ: Akka 1.1 的默认调度程序与 1.0 相比有哪些改善呢;HawtDispatch 在哪些地方更有用或者更快呢?

这很难用几句话说清楚。这段时间中我们对其进行了一系列细微的调整。HawtDispatch 并不会更快。我并不赞成把 Akka 中的 HawtDispatch 从 Akka 核心中转移出来。我唯一觉得有用的地方就在于你可以做低级的 NIO。以下是来自于最新评测的结果:

想要了解关于这些评测的更多细节,你可以参考akka-user list 上的讨论。 InfoQ : 你们已经计划在 Akka 2.0 中添加更多重大的新特性,或者做大的改变吗?

是的。我们现在正努力把商业 Akka 产品套件中对集群(cluster)的支持迁移到 Akka Open Source 中。我们会在初秋的时候随着 Akka 2.0 一起发布这个特性。集群操作(如果你喜欢,可以把它叫做 remoting 或者分布式)会完全被提取到配置任务中。这意味着你可以获得任何只能够在本地运行的 Akka 应用程序,然会对其进行配置(从外部),就可以让它可以进行集群、复制、路由等等。 以下是它所能够包含的新特性列表。

在 Akka 2.0 中:

  • 透明且自适应的负载平衡 / 路由
  • 透明且自适应的集群平衡
  • 自动复制,并且在节点崩溃的时候能够自动恢复
  • 持久的操作者邮箱
  • 基于订阅的集群成员服务(不停机进行增加 / 删除节点)
  • 基于高可用、可扩展的事务日志,提供 Event Sourcing
  • 高可用的中心化配置服务,Leader election

在 Akka 2.0 之后: - 计算网格 /MapReduce

  • 数据网格
  • 分布式 STM

云 Akka(例如,商业化的插件产品套件)中只会包含操作内容,像监控、管理、provisioning、dashboard、EC2 支持等等。

查看英文原文: Akka 1.1 Released, Brings Many Improvements to Futures and Performance, Reduces Dependencies,

2011 年 5 月 22 日 08:473413
用户头像

发布了 340 篇内容, 共 112.9 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

数据分析利器之Excel功能篇

小飞象@木木自由

算法攻关-从上到下打印二叉树(O(n))_offer32

小诚信驿站

架构师 刘晓成 小诚信驿站 28天写作 算法攻关

Python 通过命令行安装包的时候 pip 提示错误

HoneyMoose

四、MongoDB查询(2)

Kylin

读书笔记 分布式数据库mongodb 3月日更

价值感知:如何评价企业IT项目的价值?

boshi

价值传递 七日更 项目经验

软考备考视频的目录

IT蜗壳-Tango

3月日更 软考

MySQL原理

Sakura

28天写作 28天挑战 3月日更

醒一醒,讲到 ZooKeeper 的选举机制了

HelloGitHub

Java zookeeper ZooKeeper原理

为什么选择python

张鹤羽粑粑

28天写作 3月日更

NewSQL分布式数据库,例如TIDB用K/V的底层逻辑

读字节

大数据 分布式 分布式存储 RocksDB TiDB

如果写文字只是自我表达「Day 19」

道伟

28天写作

问题剖析之消息队列的架构设计

Kylin

读书笔记 消息队列架构 3月日更

04|PPT教程|学完这门课程你能到什么水平?

青城

PowerPoint 3月日更

Python yaml 使用的包

HoneyMoose

如何通过XMind 实践OKR 工作法

博文视点Broadview

Wireshark数据包分析学习笔记Day7

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

甚至你可以在网抑云上听歌

ES_her0

28天写作 3月日更

Python 注释

HoneyMoose

(28DW-S8-Day19) 以太坊是什么

mtfelix

28天写作

你的决定我做主——锚定效应

Justin

心理学 28天写作 游戏设计

法大大完成D轮9亿元融资,腾讯领投

人称T客

Redis工具收费后新的开源已出现

happlyfox

学习笔记 工具软件 28天写作 3月日更

FutureTask源码解析

徐海兴

多线程 Future future设计模式

习惯

lenka

3月日更

正则表达式.06 - 断言

insight

正则表达式 3月日更

深入分析mysql为什么不推荐使用uuid或者雪花id作为主键

xcbeyond

MySQL MySQL优化 3月日更

翻译:《实用的Python编程》04_04_Defining_exceptions

codists

Python

Elasticsearch Reindex & Index Alias

escray

elastic 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

第五届广州4A干货大会成功举办;《王者荣耀》推出首部官方动画番剧并将与奢侈品品牌Burberry进项跨界联名

󠀛Ferry

七日更 3月日更

Hello World!!!

小太阳

ARTS - Week 6

Khirye

Java LeetCode arts

海量并发场景下的缓存架构设计

海量并发场景下的缓存架构设计

Akka 1.1发布,对Futures和性能做出改进,降低了依赖性-InfoQ