写点什么

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

  • 2011 年 5 月 22 日
  • 本文字数:1713 字

    阅读完需:约 6 分钟

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:473695
用户头像

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

关注

评论

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

产品 0 期 - 第二周作业

vipyinzhiwei

产品经理训练营

Flink SQL 在字节跳动的优化与实践

Apache Flink

flink

在nodejs中创建child process

程序那些事

多线程 事件驱动 nodejs 并发 程序那些事

LeetCode题解:389. 找不同,ASCII码求和,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

第二周-总结-胡赵凯

hisun胡

产品经理 产品经理训练营

boltdb源码阅读

行如风

数据库 源码剖析 Go 语言

极客时间产品训练营第二周总结

云随心

产品 总结 产品训练营

产品经理训练营第 0 期 第二次作业

孙行者

第0期 产品经理训练营

Postgreshub中文资源网介绍

PostgreSQLChina

数据库 postgresql 开源 软件 开源社区

懂点EXCEL就行!教你利用Python做数据筛选(上)

智分析

Python Excel 数据清洗

第二周-作业-胡赵凯

hisun胡

产品经理 产品经理训练营

《程序员修炼之道》- 务实的哲学(1)

石云升

程序员 28天写作

连肝7个晚上,总结了计算机网络的知识点!(共66条)

我是哪吒

程序员 面试 浏览器 计算机网络 HTTP

产品思维和意识

让我思考一会儿

给新春一台S,给用户三个S:华为智慧屏的新旅程

脑极体

2020出行之变(三):智能交通的星罗棋布

脑极体

范文写作结构分析之“危险的分工”

JiangX

28天写作

产品经理训练营 - 第二次作业

Jophie

产品经理训练营

Logi-KafkaManager开源之路:一站式Kafka集群指标监控与运维管控平台

张亮

Java 大数据 kafka 开源 消息队列

惊呆了!某东Java大咖的MySQL笔记手册流传出来了,胜过看10本书

Java架构之路

Java 程序员 架构 面试 编程语言

阿里巴巴十亿级并发系统设计手册已开源(2021最新版)

比伯

Java 编程 架构 面试 计算机

精选算法面试-哈希表III

李孟

面试 算法

甲方日常 89

句子

工作 随笔杂谈 日常

Vue.js笔试题解决业务中常见问题

我是哪吒

程序员 面试 Vue 大前端

Flink 中极其重要的 Time 与 Window 详细解析(深度好文,建议收藏)

五分钟学大数据

大数据 flink

挑战前端知识点HTTP/ECMAScript

我是哪吒

大前端 HTTP ES6

图解计算机中的数据表示形式

冰河

程序员 计算机 二进制数据

Akka 1.1发布,对Futures和性能做出改进,降低了依赖性_Java_Werner Schuster_InfoQ精选文章