javaone_JavaOne 2012:向上,向上和向外:使用Akka扩展软件

javaone

在晚些时候的社区主题演讲之后,我前往希尔顿金门大桥3/4/5观看了维克多·巴生 ( Viktor Klang )的( Typesafe )“向上,向上和向外:Akka”演讲。 巴生(Klang)是Akka的技术主管。 Akka是“ 瑞典北部美丽的山脉 ”,是女神 ,也是基于Scala的“工具箱和运行时,用于在JVM上构建高度并发,分布式和容错的事件驱动应用程序”。 Akka不仅是Scala专有的,而且可以“从Java今日使用”。 与Scala一起使用Akka确实可以让您做一些与Java一起使用Akka不能做的事情。

许多大型公司都使用Akka解决实际问题。 Akka的构建可在多个方向上吓跑并提供极大的灵活性。 Akka的目标之一是“管理系统过载”。

Akka使用Actors:“ Akka的代码组织单位”。 根据巴生的说法,“ Actor可帮助您创建并发,可伸缩和容错的应用程序。” 参与者“保持许多与业务逻辑分离的”政策决策”。 演员起源于1970年代(“就像计算机科学中所有很酷的东西一样”),而Erlang多年来一直在使用具有“巨大成功”的演员。

巴生警告说,避免“以共享状态来思考,即泄漏的抽象”。 他补充说,线程和锁是“一种执行手段”,而不是结构化的手段。 他说,这将执行与业务逻辑混合在一起。 并发收集是针对本地使用的良好优化。

演员是“按设计分配的”,而巴生有一张幻灯片,列出了几个解释该声明的项目符号。 他说,参与者可以替代“线程”,“对象实例”,“回调或侦听器”,“单例或服务”,“路由器,负载均衡器或池”,“ Java EE”。会话Bean或消息驱动Bean,“进程外服务”和“有限状态机”。

巴生引用了卡尔•休伊特关于演员的录像带 。 演员是“体现了几个关键特征的基本计算单位”。

巴生在演示中以我喜欢的格式显示了代码示例:嵌入到他的幻灯片中并突出显示了颜色语法。 他显示了步骤0('DEFINE'),其中他的代码定义了Actor的类和Actor的行为。

定义后,第一个操作(I –“创建”)“创建Actor的新实例”。 所创建的Actor非常轻巧,并且“状态和行为彼此无法区分”。 他把最后一点讲到了:“观察状态的唯一方法是通过向演员发送消息并查看演员的React。” Actor是状态,行为和消息队列的“非常强大的封装”。

Akka提供了一个ActorSystem来创建Akka Actor实例。 实例Props ,因为演员需要道具提供给演员。

第2步(“发送”)涉及“向演员发送消息”和“一切都是React性发生的”和“一切都是异步且无锁的”。 Akka通过演员的tell方法支持“即发即弃”模式。 但是,Akka提供有保证的交货顺序。 回复是在Akka中使用getSender().tell()

第3步(“成为”)“重新定义了演员的行为”,并且“通过接收消息做出React”。 人们可能想在运行时更改actor行为的原因包括支持将高度竞争的actor转换为actor池或实现正常降级。

演员可以监督其他演员,进入步骤4(“ SUPERVISE”)。 “保护者检测并响应其监督的Actor的故障”,Klang表示这转化为“干净的分离,处理和错误处理”。

Klang谈到了“ Java,C和C#中的故障管理”,在这里您“被赋予了单一的控制线程”。 他以这种方式将其放在子弹中:“如果这根线炸毁,您就被拧死了。” 这意味着所有“显式错误处理”都在“单线程内”完成,并与业务代码“纠结”在一起。

巴生表示,处理错误处理的方法是将错误处理推离业务逻辑。 然后,他引用了洋葱层错误内核 。 巴生谈到了为Actor处理失败提供的回调( preRestartpostRestart )。

路由器是Actor的特例。 巴生展示了一张使用RoundRobinRouter编写代码的RoundRobinRouter 。 他还展示了能够在配置文件中的代码之外定义部署方案,并使用路径从代码中引用该方案。 他进一步举例说明了“远程部署”的代码,该代码指定了带有“ akka”协议,主机名和端口的URL。

到目前为止,巴生提出的所有内容都可以作为Akka 2.0使用。 巴生表示,即将发布的Akka 2.1中将会有Akka集群。 他要求提供反馈,以确保Akka 2.2中的群集可以使用正确的API和正确的功能。 有关Akka群集的更多信息,请参见规范 ,用户指南和代码本身。

Akka 2.1还具有基于Apache Camel的 Akka Camel 。 Typesafe控制台也可用于监视Akka应用程序,并且有此应用程序的实时演示 。

参考: JavaOne 2012:向上,向上和向外:来自JCG合作伙伴 Dustin Marx的Akka与Akka一起扩展软件,内容来自Inspired by Actual Events博客。


翻译自: https://www.javacodegeeks.com/2012/10/javaone-2012-up-up-and-out-scaling.html

javaone

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

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

相关文章

Windows平台下动态链接库的总结

1、 动态链接库与静态连接库 静态连接库与动态链接库都是经过编译器编译之后的,在计算机上可以直接运行的二进制目标文件,就像exe文件一样,但不同于exe文件的是静态链接库和动态链接库不可以独立运行,一般而言,动态链接…

python建模分析实操_城市公交站点设置优化模型-基于Python

城市公交站点设置的优化分析 一、模型应用 进入21世纪以来,我国城市公共交通飞速发展,然而随着经济社会发展,城市不断升级以及人民生活品质越来越好,城市交通拥堵、出行不便等问题日益突出,严重损坏了市民日常的生活体…

【递归:把目录下所有文件的绝对路径给输出在控制台】

package com.bornsoft.test.capitalpool.tyc;import java.io.File;/*** author shusheng* description* Email shushengyiji.com* date 2018/10/16 10:26*/ public class DiGuiDemo2 {/***需求:请大家把目录下所有文件的绝对路径给输出在控制台*分析:*A:…

UDP sendto和recvfrom使用详解

在网络编程中,UDP运用非常广泛。很多网络协议是基于UDP来实现的,如SNMP等。大家常常用到的局域网文件传输软件飞鸽传书也是基于UDP实现的。 本篇文章跟大家分享linux下UDP的使用和实现,主要介绍下sendto()和recvfrom()两个函数的使用&#xf…

SpringOne Platform 2016回顾

我最近结束了在拉斯维加斯参加SpringOne Platform会议的总结。 这是我第一次参加SpringOne。 这是聆听演讲并与软件开发领域的一些顶级专家进行对话的一种体验。 如果您没有参加SpringOne,那么您肯定会想要阅读这篇文章。 我们将介绍这四个主题,以及如何…

欧姆龙cp1hum读保护解密步骤_欧姆龙PLC的NJ系列NJ产品功能介绍

欧姆龙PLC的NJ 系列NJ运动、逻辑和视觉集于一体欧姆龙PLC的NJ 系列NJ特点One Machine Control运动、逻辑和视觉集于一体将组成机械所需的各种控制设备汇集于一体,使用一个软件即可进行控制。 这就是Sysmac自动化平台的努力目标。 我们的新型机器自动化控制器NJ系列通…

关于CUDA和CuDNN配置的小问题

为了方便组员操作,简单写一下CUDA的配置啦。 首先你需要一台电脑,有NVDIA显卡的那种(就那个煤气灶,你懂我意思吧),然后就继续往下走吧,如果没有的话可以找一下右上角的红叉了,这篇文…

PyMongo--非关系型数据库mongodb入门(一步一步 版)

PyMongo--非关系型数据库mongodb入门(一步一步 版) 本文主要内容: 1.简要介绍mongodb 2.Pymongo 3.mongo shell 4.我的mongodb入门之旅 1.简要介绍mongodb MongoDB是一个基于分布式文件存储的数据库。由C语言编写。旨在为WEB应用提供可扩展的…

python画图颜色种类_Python可视化|matplotlib07-python colormap(颜色映射)(三)

本篇详细介绍matplotlib内置的颜色条Colormap使用。 本文将学到什么? 1、colormap名称 2、colormap可视化 3、colormap使用方法 4、参考资料 更好的阅读体验请戳: 1、colormap名称 colormap颜色通过matplotlib的cm模块调用,print(dir(cm))即可…

element table 组件内容换行方案

element table 组件内容换行方案 white-space的值&#xff1a; normal 默认。空白会被浏览器忽略。pre 空白会被浏览器保留。其行为方式类似 HTML 中的<pre> 标签。nowrap 文本不会换行&#xff0c;文本会在在同一行上继续&#xff0c;直到遇到 <br>标签为止。pre-…

UDP Socket编程 C/C++实现 (Windows Platform SDK)

挺无聊一小程序&#xff0c;俩SB一人说一句&#xff0c;据说聊天程序最好用UDP写。 Server&#xff1a; [csharp] view plaincopy #pragma comment (lib,"ws2_32.lib") #include <Winsock2.h> #include <stdio.h> void main() {…

关于Mongodb的全面总结,学习mongodb的人,可以从这里开始!

MongoDB的内部构造《MongoDB The Definitive Guide》 MongoDB的官方文档基本是how to do的介绍&#xff0c;而关于how it worked却少之又少&#xff0c;本人也刚买了《MongoDB TheDefinitive Guide》的影印版&#xff0c;还没来得及看&#xff0c;本文原作者将其书中一些关于M…

Spring Kafka生产者/消费者样本

我的目的是演示Spring Kafka如何为原始Kafka Producer和Consumer API提供一种易于使用且对具有Spring背景的人熟悉的抽象。 示例场景 示例场景是一个简单的场景&#xff0c;我有一个系统&#xff0c;该系统生成一条消息&#xff0c;另一个系统对其进行处理 使用Raw Kafka Pr…

homelede软路由设置方法_斐讯无线路由器怎么设置 斐讯无线路由器设置方法【详解】...

无线路由器的品类在不断增加&#xff0c;人们的生活也逐渐无法离开WIFI&#xff0c;各类无线路由器的设置方法大同小异&#xff0c;为了方便不为人知的小白更方便的设置无线路由器&#xff0c;这里详细介绍一下斐讯(phicomm)无线路由器怎么设置。配置前准备&#xff1a;A、请保…

Angular 个人深究(四)【生命周期钩子】

Angular 个人深究&#xff08;四&#xff09;【生命周期钩子】 定义&#xff1a; 每个组件都有一个被 Angular 管理的生命周期。 Angular 创建它&#xff0c;渲染它&#xff0c;创建并渲染它的子组件&#xff0c;在它被绑定的属性发生变化时检查它&#xff0c;并在它从 DOM 中被…

BITMAPINFO结构

BITMAPINFO结构定义了Windows设备无关位图&#xff08;DIB&#xff09;的度量和颜色信息。 一、BITMAPINFO结构形式&#xff1a; typedef struct tagBITMAPINFO { BITMAPINFOHEADER bmiHeader; RGBQUAD bmiColors[1]; } BITMAPINFO; 二、BITMAPINFO成员 bmi…

多媒体技术基础第四版林福宗pdf_意大利留学|没有绘画基础,还能考研艺术类专业吗?...

想学艺术专业&#xff0c;却没有绘画基础还能学艺术类专业么&#xff1f;意大利研究生的入学会简单一点 是典型的“宽进严出”想学艺术相关的专业&#xff0c;有2种看你是偏理论&#xff0c;还是偏实践。一起看一下&#xff01;偏实践方面纯艺类&#xff1a;油画、版画、雕塑、…

Spring Boot 1:Introduction

Spring Spring 在不断发展的过程中&#xff0c;边界不断扩张&#xff0c;需要的配置文件也越来越多&#xff0c;使用起来也越复杂&#xff0c;项目中也经常因为配置文件配置错误产生很多问题。即&#xff1a;Spring 逐渐变成了一个大而全的框架&#xff0c;背离它简洁开发的理念…

Pinely Round 3 (Div. 1 + Div. 2)

Pinely Round 3 (Div. 1 Div. 2) Pinely Round 3 (Div. 1 Div. 2) A. Distinct Buttons 题意&#xff1a;当前处于(0, 0)原点&#xff0c;给出若干个平面坐标轴上的点&#xff0c;是否可以仅选择三个方向便可以到达所有给出的点。 思路&#xff1a;到达单一坐标点最多需要…

在MFC,Win32程序中向控制台(Console)窗口输出调试信息

在MFC程序中输出调试信息的方法有两种&#xff0c;一种是使用TRACE宏&#xff0c;可以向Output窗口输出调试信息&#xff1b;另一种是用MessageBox&#xff0c;弹出消息框来输出调试信息&#xff0c;但会影响程序的运行。其实有一种方法可以更为方便的输出调试信息&#xff0c;…