Aaron Stannard谈Akka.NET 1.1

Akka.NET 1.1近日发布,带来新特性和性能提升。InfoQ采访了Akka.net维护者Aaron Stannard,了解更多有关Akka.Streams和Akka.Cluster的信息。Aaron还阐述了与Akka for JVM实现有关的路线图计划。

InfoQ:这个版本有什么突出的特性?

Aaron Stannard:Akka.NET 1.1的主要目标是将Akka.Cluster由Beta测试版程序包变成最终版(RTM)程序包。该版本还提供了测试工具,对在生产环境里运行Akka.NET集群的过程中可能出现的大量各种不同的网络场景进行了测试。

不要低估我们付出的巨大努力;Akka.Cluster Beta测试版最初发布于2014年8月。所以,我们大约花了两年的时间开发Akka.Cluster,收集生产用户的反馈。在1.1版本开发的最后阶段,我们主要是提升可靠性和集群系统的速度,以便它可以用于高可用工作负载。已经有银行、医疗保健提供商、能源生产商、船队和车队管理企业、SaaS企业及其他许多用户在生产环境中使用了Akka.NET。Akka.Cluster是他们最希望看到其发布的东西。

1.1版本的另外一个突出的特性是Akka.Streams的第一个Beta版本;该模块引入了一种使用Akka.NET构建响应式应用程序的全新方法,允许开发人员将一系列的异步操作表示成大量可以互联和重用的流处理图。你可以从我们的文档中看到Akka.Streams图可能的样子。

InfoQ:Akka.Net 1.1带来了什么性能提升?

Stannard:最显著的性能提升包括:

  • 将所有Actor的内存占用减少了34%;

  • 将每个Akka.Remote连接(支撑Akka.Cluster网络连接的子系统)的吞吐量提高了5倍;

  • 改正了多处内存过度使用的地方,最明显的是日志系统;

虽然我们一直在不断地度量、测试、提升Akka.NET的性能,但是性能不是这个版本的真正目的。性能的提升源于我们找到了更为健壮的方法实现Akka.NET使用的部分内部构件。

InfoQ:在这个版本中,您最喜欢的特性是什么?

Stannard:说来真奇怪,在1.1版本中,我最喜欢的部分是一个和我无关的部分:Akka.Streams。

关于Akka.Streams,真正引人注目的是,它让用户仅仅使用几行代码就可以简洁地表达复杂的工作流,包括传统上非常困难的并发编程问题,比如退避和节流。在没有经验的情况下,我昨天使用Akka.Streams在几个小时的时间里就重写了WebCrawler Akka.Cluster演示程序中处理繁重任务的部分。我还使用一些内置的缓冲流解决了那个代码库中存在多年的节流问题。和第一次使用Actor一样,第一次使用Akka.Streams也让我很激动:我意识到,我使用了一种以前从未使用过的全新的编程方法。

InfoQ:你们是如何制定路线图的?

Stannard:Akka.NET当前的路线图是由多个因素促成的;与原先的Akka for JVM实现一致就是一个重要因素。我们受益于他们的经验和用户报告的Bug,因此,遵循他们的实现有巨大的好处。

InfoQ:遵循Akka for JVM的实现方式让你们获得了哪些好处?

Stannard:开发人员永远不要忘记,“生产时间(time-in-production)”是度量代码库健康情况及其思想的最有价值的指标。和专有的单业务线应用程序相比,一个有着几千名用户、在几千台服务器上7x24小时运行的大型开源项目,其在生产环境中累计运行的时间会更多。那意味着,更多的Bug、设计缺陷会更快地被发现,生产力就可以获得更频繁地改进。这就可以解释,为什么在Daily WTF上有关可怕的代码炸弹的文章中,几乎所有多年未能发现的代码炸弹都是来自用途单一的专有代码或者应用不广泛的开源软件。这就是为什么我们要设法遵循Akka for JVM的思路——他们的设计来源于在生产环境中长时间的运行。

InfoQ:你们的路线图和Akka for JVM有什么不同?

Stannard:Akka.NET本身已经在生产环境中使用了很长时间了。我们已经从客户那里获得我们自己的生产力改进/Bug/不同的想法。.NET和JVM生态系统的巨大差别也是我们制定路线图时必须考虑的。例如,.NET开发人员特别喜欢依赖注入框架,而那在Scala开发中往往并不多见。那种差别会对路线图的制定产生影响,将来,我们可能会选择设计不同于JVM的东西,例如让DI支持成为一等特性,而不是一个插件。

也有一些Akka for JVM中有的模块,我们并没有多大的兴趣移植——比如Apache Camel集成。我还没有见过哪家.NET工场用它。还有Akka.HTTP,这是一个我们多年来一直在开发的怪物级模块。我们近期内不会移植,因为相对于我们现在要提供给用户的一切,它的价值较低。

一般而言,我们的用户往往在服务器端应用程序中使用Akka.NET。他们真正想要的是我们的高可用(HA)模块,像Akka.Cluster、Persistence、Streams和Sharding,全部运行在Linux上的.NET Core上。所以接下来,影响我们路线图的主要任务可能是,Akka.NET提供对.NET Core的初步支持。

InfoQ:Akka.NET主要是C#的,但也有F# API。您在实现中使用了F#?

Stannard:就我个人而言,我并不怎么用F#,但我正要改变那种情况。我维护我们的构建系统。该系统用F#编写,使用了FAKE。我大部分的F#使用经验都来自那里。我正计划在不久的将来构建一些供Petabridge内部使用的应用程序,我考虑在Windows Azure Service Fabric上使用Suave及Akka.Cluster来实现。无疑,Akka.NET让我爱上了函数式编程。许多FP的基础概念,如模式匹配和“流迭代(stream iteration)”,是Actor系统的主要部分。在任何.NET开发人员的职业发展中,F#都会自然地成为Akka.NET的下一个步骤。

Akka.NET是一个托管在GitHub上的开源项目。Akka.NET网站提供了详细的文档。

原文地址:http://www.infoq.com/cn/news/2016/07/akka-dotnet


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328886.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

以计算机网络为中介的人际传播,以计算机为中介的人际传播理论范式

20世纪90年代以来,以计算机为中介的传播(Computer-Mediated Communication,CMC)成为人类越来越普遍的经验。新技术深刻而全面地影响着人际传播的模式,并成为人际关系建立、发展和维系过程中不可或缺的因素。对实践过程的观察和研究形成了人际…

简单使用JDOM解析XML

转载自 简单使用JDOM解析XML使用JDOM解析XML一、前言 JDOM是Breet Mclaughlin和Jason Hunter两大Java高手的创作成果,2000年初,JDOM作为一个开放源代码项目正式开始研发。JDOM是一种解析XML的Java工具包。 DOM适合于当今流行的各种语言&#xf…

打造自己的LinqProvider

LinqProvider简介 本篇假设读者对Expression Tree 和Linq是有一定了解的,不了解的可以先看上面介绍Linq两篇文章,补一下课。 首先我们来看一下LinQProvide是如何执行的: 简单说明一下:我们写的Linq查询表达式将会被编译为方法调用链&#xff…

计算机硬件统的构成,计算机硬件统的构成部件.ppt

计算机硬件统的构成部件计算机硬件系统的构成部件 5.1 计算机硬件系统组成 5.2 中央处理器(CPU) 5.3 存 储 系 统 5.4 指令系统 计算机系统的基本构成 计算机硬件系统 指令和程序 计算机的工作过程 微型机主机的逻辑结构 微型计算机概述 计算机的总线 微型机主机的物理构成 BIO…

Java数据库连接池--DBCP浅析

转载自 Java数据库连接池--DBCP浅析前言对于数据库连接池, 想必大家都已经不再陌生, 这里仅仅设计Java中的两个常用数据库连接池: DBCP和C3P0(后续会更新). 一. 为何要使用数据库连接池假设网站一天有很大的访问量,数据库服务器就需要为每次连接创建一次数据库连接…

使用Visual Studio 2015 开发ASP.NET MVC 5 项目部署到Mono/Jexus

最新的Mono 4.4已经支持运行asp.net mvc5项目,有的同学听了这句话就兴高采烈的拿起Visual Studio 2015创建了一个mvc 5的项目,然后部署到Mono上,浏览下发现一堆错误出现,心中一万只草泥马奔腾而来,这也叫支持吗&#x…

体质测试数据统计软件,[体质测试数据excel自动统计表]体质测试数据Excel自动统计模板的研制...

《[体质测试数据excel自动统计表]体质测试数据Excel自动统计模板的研制》由会员分享,可在线阅读,更多相关《[体质测试数据excel自动统计表]体质测试数据Excel自动统计模板的研制(3页珍藏版)》请在装配图网上搜索。1、体质测试数据excel自动统计表体质测试…

常用数据库连接池 (DBCP、c3p0、Druid) 配置说明

转载自 常用数据库连接池 (DBCP、c3p0、Druid) 配置说明1. 引言 1.1 定义 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标…

分布式基础通信协议:paxos,totem和gossip

背景: 在分布式中,最难解决的一个问题就是多个节点间数据同步问题。为了解决这样的问题,涌现出了各种奇思妙想。只有在解决了如何进行信息同步的基础之上才衍生出形形色色的应用。这里开始介绍几种分布式通信协议。 简单即有效——totem协议:…

计算机专业可以评机械工程师,机械工程师个人评价

人就像一个多面体。仅仅由别人的评价来判定自己是不全面的,当自己也沉淀下来,窥探自己的内心,写下自己的自我评价,这样才可以不断进步。但是自我评价要怎么写呢?下面是学习啦小编带来机械工程师个人评价范文的内容,欢…

分布式系统之消息队列

转载自 分布式系统之消息队列 一、MQ简介 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。 使用较多的消息队…

微软准备开源PowerShell

近日微软再次在向开源投出橄榄枝, PowerShell是面向Windows和Windows Server的自动化平台和脚本语言,帮助用户简化系统的管理。在纳德拉的带领下微软也逐渐走向开放,根据相关爆料称微软有计划在近期内 开源该脚本语言。 知名Windows爆料人士W…

华为荣耀畅玩7c计算机在那,华为荣耀畅玩7C内存多大

华为荣耀畅玩7C内存多大这是很多朋友咨询的问题,华为荣耀畅玩7C凭借高颜值,双摄,人脸识别受到广泛关注,但是也有很多朋友更关心内存多大的问题,下面就来详细介绍一下华为荣耀畅玩7C内存多大。华为荣耀畅玩7C内存多大?…

谈谈数据库连接池的原理

转载自 谈谈数据库连接池的原理这次我们采取技术演进的方式来谈谈数据库连接池的技术出现过程及其原理,以及当下最流行的开源数据库连接池jar包。 一.早期我们怎么进行数据库操作1.原理:一般来说,java应用程序访问数据库的过程是&#xff1a…

华为荣耀20计算机,华为云电脑将停止服务/荣耀新机保护壳曝光/小米新机渲染图曝光...

华为云电脑8月16日停止服务和运营近日,华为官方宣布,“华为云电脑”APP将于北京时间2021年8月15日23点59分停止服务和运营,自那之后用户将再无法登录和使用。华为表示“届时及以后您将无法登录和使用。在此之前,有效套餐仍可连接使…

.NET Core系列 :3 、使用多个项目

通过前面的两篇文章.NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门 和.NET Core系列 : 2 、project.json 这葫芦里卖的什么药,我们已经知道如何创建新的项目,如何生成并运行我们的应用程序,也知道(…

Docker 入门教程

转载自 Docker 入门教程2013年发布至今, Docker 一直广受瞩目,被认为可能会改变软件行业。 但是,许多人并不清楚 Docker 到底是什么,要解决什么问题,好处又在哪里?本文就来详细解释,帮助大家理…

ftb测试软件,EXFO推出FTB-2光纤测试平台

ICCSZ讯 EXFO发布新的基于模块FTB-2 Pro紧凑型平台,这是目前市场上最小的高速、多技术和光学测试平台。它支持两个单插槽模块,如在同一单元中可进行以太网和光时域反射仪(OTDR)的组合测试功能。该系统还支持光谱和多层测试。总而言之,该平台提…

数据库设计【笔记】

数据库设计一、设计步骤1.收集信息(来源项目需求分析)2.标识实体(一般是需求分析中需要管理的信息名词)3.标识每个实体的属性4.实体之间的关系 二、画e-r图(实体关系图)1.矩形表示实体2.椭圆表示实体的属性…

你必须知道的EF知识和经验

注意:以下内容如果没有特别申明,默认使用的EF6.0版本,code first模式。 推荐MiniProfiler插件 工欲善其事,必先利其器。 我们使用EF和在很大程度提高了开发速度,不过随之带来的是很多性能低下的写法和生成不太高效的sq…