2.4 监管和监测
原文:http://doc.akka.io/docs/akka/2.3.6/general/supervision.html 译者:Vitas
2.4 监管和监测
本节将从概念层面上介绍有关监管的一些基本元素及其语义。至于在代码中如何具体实现,请参考API的相关章节。
原文:http://doc.akka.io/docs/akka/2.3.6/general/supervision.html 译者:Vitas
2.4 监管和监测
本节将从概念层面上介绍有关监管的一些基本元素及其语义。至于在代码中如何具体实现,请参考API的相关章节。
今天下午正式举行,感谢各位的支持!
马上就是并发编程网(ifeve.com)三岁生日了,首先感谢各位读者粉丝对我们的大力支持和鼓励!三年来,我们共组织翻译了600余篇文章,其中Disruptor、NIO、Netty、Storm、并发编程、JSR133、Doug Lea并发论文等系列文章均得到了官方和读者的认可和好评。欣喜于取得如此成绩的同时,更让我们觉得在创造精品文章的路上,我们还有很长的路要走,我们一直在努力!
在三周年到来之际,并发编程网联合Coding.net、七牛,GreenTeaJUG举办第一场线下沙龙,主题是“并发编程”,号召对并发编程感兴趣的粉丝汇聚一堂,认我们煮酒论“编程”!
原文:http://doc.akka.io/docs/akka/2.3.6/general/actor-systems.html 译者:吴京润
角色是封装了状态与行为的对象,它们通过交换放入接收者信箱的消息实现两两之间的通讯。从某种意义上说,角色是最严格的面向对象编程,不过最好还是把它们当作人来看待:当用角色为一个方案建模时,想象有一群人,并给他们分配了任务,他们在一个组织结构中发挥职能作用,并想象如何做到故障升级(就像在不需要考虑实际利益的情况下与人打交道,也就是说我们不需要关心他们的情绪变化或道德问题)。这样的结果可以充当构建软件的心理脚手架。
注意:一个角色系统是一个会分配1…N个线程的重量级结构,因此为每个逻辑上的应用创建一个角色系统即可。 阅读全文
原文: http://doc.akka.io/docs/akka/2.3.5/general/actors.html 译者:Vitas
2.3 什么是角色?
前面角色系统一节介绍了一群角色如何形成一个层次结构,并且介绍了角色是构建应用程序的最小单位。本节我们将角色拿出来单独介绍,解释一些你在使用它的过程中可能遇到的概念。对于一些更深入的细节,将会在后面的章节中详细介绍。
你可以将角色想象成一个容器,它其中包括状态,行为,一个信箱,子角色以及一个监管策略。所有这些都封装在一个角色引用中。本节的最后介绍一个角色什么时候终结。
原文:http://doc.akka.io/docs/akka/2.3.6/general/terminology.html 译者:吴京润
本章我们试图建立一个通用的术语列表,用来定义有关并发和分布式系统的坚实的基础,而这也是akka的目标。请注意,在这些术语当中许多并没有一致的定义。我们简单的寻求在akka文档范围内使用的工作定义。 阅读全文
原文:http://doc.akka.io/docs/akka/2.3.6/intro/use-cases.html 译者:吴京润
我们看到akka正被许多大型组织所采用,已被广泛应用于投资与商业银行业务,零食与社交媒体,虚拟仿真,游戏与博彩,数据分析等等行业。任何需要高吞吐量和低延迟的系统都是使用akka的良好候选者。 阅读全文
原文:http://doc.akka.io/docs/akka/2.3.6/intro/deployment-scenarios.html 译者:吴京润
有两种不同的使用akka的方式:
如果你在构建一个web应用,这可能就是你想要的。在库模式下,通过向模块栈添加越来越多的模块有许多种使用akka的方式。
原文:http://doc.akka.io/docs/akka/2.3.6/java/hello-world.html 译者:吴京润
基于actor在控制台打印这一知名问候的困难在Typesafe Activator教程中名为Akka Main in Java项目中已有介绍。
本教程说明了通用启动器类akka.Main,只接收一个命令行参数:应用的主actor类名。这个main方法将为运行actor创建基础设施,用来启动指定的主actor以及在主actor终止时为关闭整个应用做出安排
Typesafe Activator中有相同问题域的另一个名为Hello Akka!的教程讲述了更深入的akka基础知识。
原文:http://doc.akka.io/docs/akka/2.3.6/intro/getting-started.html 译者:吴京润
AKKA要求你的计算机已经安装了Java1.6或更高版本。
学习AKKA的最好方式是下载Typesafe Activator并尝试一个AKKA模板项目。
有许多种下载AKKA的方式。你可以把它当作Typesafe平台的一部分下载(就像上面描述的)。还可以下载完全发布版,它包含微内核以及所有模块。或者使用像Maven或SBT这样的构建工具从AKKA Maven仓库下载依赖。 阅读全文
原文:http://doc.akka.io/docs/akka/2.3.6/intro/what-is-akka.htmll 译者:吴京润
可扩展的实时事务处理
我们相信编写并发、容错、可扩展的应用相当的困难。盖因大多数时候我们一直在使用错误的工具和错误的抽象等级。AKKA就是为了改变这一切的。我们利用角色模型提升了抽象等级,并且提供了一个用来构建可扩展的、弹性的以及响应式应用的更好的平台——更多信息请见Reactive Manifesto。对于容错机制我们采用“让它崩溃”模型,这一模型已在电信行业取得了巨大的成功,旨在构建自我修复与永不停机的系统。角色还提供了透明的分布式抽象以及真正的可扩展且容错应用的基础。
AKKA是开源的,并遵守Apache2许可。
请注意所有代码样例的编译,因此如果你想直接访问这些源码,可以去github上访问AKKA文档子项目:Java和Scala。 阅读全文
原文地址 作者:Pedro Ramalhete,译者:叶磊,校对:周可人
在学术论文中Harris Linked List是使用最广泛的并发数据结构之一。
Harris Linked List是一个基于linked-list的并发有序set(或者是map),可进行无锁性质的插入,删除和查找操作。
http://research.microsoft.com/pubs/67089/2001-disc.pdf
这篇文章最早在2001年的DISC会议上发表,作者是Tim Harris,目前在Oracle就职。
原文地址 作者:Pedro Ramalhete,译者:周可人,校对:梁海舰
Tick lock是mutual lock的一种简单实现:
http://web.mit.edu/6.173/www/currentsemester/readings/R06-scalable-synchronization-1991.pdf
它是由John Mellor-Crummey和Michael Scott在1991年提出的(pdf中2.2节),感谢C++11和C11中新的内存模型,我们可以对单个变量进行具有屏障或者不具有屏障的原子操作。当屏障没有使用,只有原子性保证时,我们称之为“relaxed atomic”:
http://en.cppreference.com/w/cpp/atomic/memory_order
注意在C11/C++11内存模型中,一个原子变量并不具有内在的“顺序一致性”或者“relaxed”性质,然而我们可以在每次访问的时选择它的行为。
原子修饰符只能保证原子性,即这个变量会被单步读或写。其他语言,如Java和Scala则不同,它们可以保证几乎所有的原生类型提供原子性保证,从而表现为“relaxed atomic”。并且,所有被声明为顺序一致性的变量可以在整个程序中保持性质(除非在Java中使用sun.misc.unsafe)。尽管这个细微的差异可能看起来并不重要,但是当我们的目标是从同步或是并发算法中挖掘最大性能时,就需要关注这个差异了。
使用Java来开发企业级的应用可能是一个不错的选择,但是使用Google的Go语言来开发系统软件会更有优势,一名来自PivotalJava开发者如是说,目前他已经成为Go语言的支持者。
Pivotal的一个使用Go语言开发其Cloud Foundry 云平台的工程师Matt Stine说:Go语言在包、模块化和并发方面有很大优势,如果你尝试解决的问题是Go语言所擅长的领域,如大型、高性能服务器端程序,我可以说Go非常适合这样的场景。”
Stine认为Go是一个“相当无聊”的语言,而不是一个神奇的、现代的、功能丰富的语言,但是尽管如此,“你仍然可以使用它开发出一些令人兴奋的东西”。他认为Go是一个构建系统级软件的工具。开发者可以使用Go语言标准库来构建系统级软件,而不像其他语言一样需要第三方框架。
原文链接 作者:Ted Neward 译者:赵峰
Java SE 8的发布很快就到了。伴随着它来的不仅仅是新的语言lambda表达式(同样被称为闭包或匿名方法)——伴随着一些语言特性支持——更重要的是API和library的增强将会使传统的Java核心libraries变的更易于使用。其中大多数的增强和补充是在Collections API中,因为Collections API在整个应用中随处可见,这篇文章大部分是在讨论它。
然而 ,很有可能大多数的Java开发者将不会熟悉隐藏在lambdas背后的概念,和在设计中体现出的lambda形式与行为 。所以,在使用它们之前,最好先弄清楚它们为什么这样设计和怎么工作。因此,我们将在之前和之后看一些方法,看它们在lambda之前和lambda之后是怎么去处理一个问题的。