写点什么

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

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

关注

评论

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

架构师训练营 - 第十一周

石子头

《破壁MySQL》 - MySQL概述

haxianhe

MySQL 破壁MySQL 破壁

第二周总结



智能停车管理系统搭建,智慧小区智能化解决方案

t13823115967

智慧小区

星星之火,极客燎原 Jan 10, 2021

王泰

28天写作

同程快递方案初稿

dll

Elasticsearch 的正式介绍

escray

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

开发效率提升15倍!批流融合实时平台在好未来的应用实践

Apache Flink

流计算 fink

让机器有温度:带你了解文本情感分析的两种模型

华为云开发者社区

自然语言处理 神经网络 机器学习 深度学习

从标准到开发,解读基于MOF的应用模型管理

华为云开发者社区

模型 ROMA 应用模型 mof

SpringCloud 微服务实现数据权限控制

Barry的异想世界

SpringCloud SpringBoot 2 权限认证 数据权限

springboot多模块配置问题

原来不悔

springboot Spring Frame

架构师训练营 - 第十三周

石子头

第十三周课后作业

dll

第十二周课后练习

dll

你真的会正确使用日志吗?

xcbeyond

Java 代码规范 28天写作 日志级别

探索 Vue.js 响应式原理

pingan8787

vue.js Vue 前端 响应式 28天写作

架构师训练营 - 第八周

石子头

架构师训练营 - 第十周

石子头

人脸识别门禁系统搭建,智慧小区实施方案

t13823115967

智慧平安小区平台开发

拍乐云语音聊天室SDK,助力非洲版陌陌“Mochat”打造粉丝经济

拍乐云Pano

音视频 RTC 语音聊天室 出海社交 社交泛娱乐

架构师训练营 - 第九周

石子头

8. 格式化器大一统 -- Spring的Formatter抽象

YourBatman

Spring Framework Converter Formatter

HDFS SHELL详解(4)

罗小龙

hadoop 28天写作 hdfs shell

【JS】防止浏览器控制台被直接查看(1)

学习委员

JavaScript 前端 js 28天写作

握草,这些研发事故30%我都干过!

小傅哥

Java 小傅哥 28天写作 线上事故 系统秒杀

大作业:通达系统设计

paul

架构师训练营 - 第十二周

石子头

人与人需要保持边界

熊斌

读书笔记 成长笔记 28天写作

如何轻松简便地在电脑上制作视频&数据更新 | 视频号 28 天 (04)

赵新龙

28天写作

十八般武艺玩转GaussDB(DWS)性能调优:SQL改写

华为云开发者社区

数据库 sql 性能优化 GaussDB 算子

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