`
shixiaomu
  • 浏览: 383877 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

akka-java-scala

 
阅读更多
1、初试超轻量级actor框架——akka
http://passover.blog.51cto.com/2431658/517931

2、http://akka.io/
   http://akka.io/docs/akka/1.2/java/remote-actors.html
   http://typesafe.com/resources/getting-started/tutorials/getting-started-first-java.html
   http://akka.io/docs/akka/1.2/java/remote-actors.html#id6
   http://www.gtan.com/akka_doc/index.html(中文api)

3、hello world

import akka.actor.UntypedActor;

public class HelloWorldActor extends UntypedActor {
    public void onReceive(Object msg) {
        getContext().reply(msg + " World");
    }
}
=====================================================
import akka.actor.Actors;
import akka.remoteinterface.RemoteServerModule;

public class Server {

    public static void main(String[] args) {
        RemoteServerModule server = Actors.remote().start("localhost", 9999);
        server.register("hello-service", Actors.actorOf(HelloWorldActor.class));
    }
}
===================================================
import akka.actor.ActorRef;
import akka.actor.Actors;

public class Client {

    public static void main(String[] args) {
        // client code
        ActorRef actor = Actors.remote().actorFor("hello-service", "localhost", 9999);
        for (int i = 0; i < 10000; i++) {
            Object result = actor.sendRequestReply("Hello");
            System.out.println(result);
        }
    }
}

       我们相信编写出正确的具有容错性和可扩展性的并发程序太困难了。这多数是因为我们使用了错误的工具和错误的抽象级别。Akka就是为了改变这种状况而生的。通过使用Actor模型我们提升了抽象级别,为构建正确的可扩展并发应用提供了一个更好的平台。在容错性方面我们采取了“let it crash”(让它崩溃)模型,人们已经将这种模型用在了电信行业,构建出“自愈合”的应用和永不停机的系统,取得了巨大成功。Actor还为透明的分布式系统以及真正的可扩展高容错应用的基础进行了抽象。

       Akka是开源的,可以通过Apache 2许可获得。可以从 http://akka.io/downloads/ 下载。


Akka实现了独特的混合模型
Actors

Actors为你提供:

        对并发/并行程序的简单的、高级别的抽象。
        异步、非阻塞、高性能的事件驱动编程模型。
        非常轻量的事件驱动处理(1G内存可容纳约270万个actors)。


容错性

使用“let-it-crash”语义和监管者树形结构来实现容错。非常适合编写永不停机、自愈合的高容错系统。监管者树形结构可以跨多个JVM来提供真正的高容错系统。


位置透明性

Akka的所有元素都为分布式环境而设计:所有actor都仅通过发送消息进行互操作,所有操作都是异步的。


事务性actors

事务性Actor是actor与STM(Software Transactional Memory)的组合。它使你能够使用自动重试和回滚来组合出原子消息流。


Scala 和 Java APIs

Akka同时提供 Scala API 和 Java API.


Akka可以以两种不同的方式来使用

    以库的形式:在web应用中使用,放到 WEB-INF/lib 中或者作为一个普通的Jar包放进classpath。
    以微内核的形式:你可以将应用放进一个独立的内核。


Cloudy Akka 如何了?

Akka的商业支持早先被叫作Cloudy Akka. 它包括两部分:

    Akka的集群支持
    监控和管理(早先称为Atmos)

Cloudy Akka已经停止了。集群支持已经被移进了Akka的开源版本中(即将到来的Akka 2.1),而监控和管理(Atmos)现在被重新命名为Typesafe控制台,是Typesafe Stack(详见下文)商业合约的一部分。


Typesafe Stack

Akka现在是 Typesafe Stack 的一部分。

Typesafe stack是一个让开发者更容易地构建可扩展软件应用的现代软件平台。它在一个简单的包里组合了Scala语言、Akka、Play! Web框架和其它鲁棒的开发工具,能够与现有的Java基础设施无缝集成。Typesafe Stack是完全开源的。


Typesafe控制台

在Typesafe Stack的顶端,我们还有名叫Typesafe控制台的商业产品,提供以下功能:

    漂亮的Web界面,实时展示系统内部状态
    通过Dashboard、JMX和REST进行管理
    组件间及远程节点间消息的跟踪
    实时统计
    开销非常小的监控程序(生产系统中应该保持运行)
    单节点上统计与日志信息的合并
    统计数据的存储,以备后续处理
    安装升级及滚动升级


Akka平台提供哪些有竞争力的功能?

Akka提供可扩展的实时事务处理,是一个运行时与编程模型一致的系统,为以下目标设计:

    垂直扩展(并发)
    水平扩展(远程调用)
    高容错

在Akka的世界里,只有一个内容需要学习和管理,具有高内聚和高一致的语义。

Akka是一种高度可扩展的软件,这不仅仅表现在性能方面,也表现在它所适用的应用的大小。Akka的核心,Akka-actor是非常小的,可以非常方便地放进你的应用中,提供你需要的异步无锁并行功能,不会有任何困扰。

你可以任意选择Akka的某些部分集成到你的应用中,也可以使用完整的包——Akka 微内核,它是一个独立的容器,可以直接部署你的Akka应用。随着CPU核数越来越多,即使你只使用一台电脑,Akka也可作为一种提供卓越性能的选择。 Akka还同时提供多种并发范型,允许用户选择正确的工具来完成工作。


什么场景下特别适合使用Akka?

我们看到Akka被成功运用在众多行业的众多大企业,从投资业到商业银行、从零售业到社会媒体、仿真、游戏和、汽车和交通系统、数据分析等等等等。任何需要高吞吐率和低延迟的系统都是使用Akka的候选。

Actor使你能够进行服务失败管理(监管者),负载管理(缓和策略、超时和隔离),水平和垂直方向上的可扩展性(增加cpu核数和/或增加更多的机器)管理。

下面的链接中有一些Akka用户关于他们如何使用Akka的描述:
http://stackoverflow.com/questions/4493001/good-use-case-for-akka

所有以上这些都在这个Apache2许可的开源软件中。


以下是Akka被部署到生产环境中的领域
事务处理 (在线游戏,金融/银行业,贸易,统计,,社会媒体,电信):垂直扩展,水平扩展,容错/高可用性

服务后端 (任何行业,任何应用):提供REST, SOAP, Cometd, WebSockets 等服务 作为消息总线/集成层 垂直扩展,水平扩展,容错/高可用性

并发/并行 (任何应用):运行正确,方便使用,只需要将jar包添加到现有的JVM项目中(使用Scala,java, Groovy或jruby)

仿真:主/从,计算网格,MaReduce等等.

批处理 (任何行业):Camel集成来连接批处理数据源 Actor来分治地批处理工作负载

通信Hub (电信, Web媒体, 手机媒体):垂直扩展,水平扩展,容错/高可用性

(MOM, 在线游戏, ):垂直扩展,水平扩展,容错/高可用性

商业智能/数据挖掘/通用数据处理:垂直扩展,水平扩展,容错/高可用性

复杂事件流处理:垂直扩展,水平扩展,容错/高可用性
分享到:
评论

相关推荐

    基于akka-http、akka-cluster、akka-stream 构建的报表工具

    基于scala 、akka实现了一个简单的报表工具。该项目是个玩具项目,用于个人学习scala和akka。使用scala语言开发,基于akka-http, akka-stream,akka-cluster等新技术构建。支持多核并发,异步无阻赛 (akka)。每个用户...

    akka-actor-1.0-RC2.jar.zip

    在Java和Scala平台上,Akka因其强大的性能和易用性而备受青睐。在本次讨论中,我们将聚焦于`akka-actor-1.0-RC2.jar.zip`这个压缩包,它包含了Akka Actor库的1.0 Release Candidate 2版本。 Akka的核心组件之一就是...

    akka-http-1.0-RC2.jar.zip

    Akka HTTP,作为Scala和Java平台上的一个高性能、低级别的HTTP服务器和客户端库,是Akka框架的一个重要组成部分。它允许开发者构建可扩展、反应式、容错的应用程序。在描述中的"akka-http-1.0-RC2.jar.zip"文件,...

    akka-actor_2.13-2.6.1.jar

    Akka是JAVA虚拟机JVM平台上构建高并发、分布式和容错应用的工具包和...Akka用Scala语言写成,同时提供了Scala和JAVA的开发接口。 Akka处理并发的方法基于Actor模型。在Akka里,Actor之间通信的唯一机制就是消息传递。

    minimal-akka-java-seed-ConductR:在ConductR中运行的minimal-akka-java-seed激活模板

    Akka是由Scala语言构建的,但它同样支持Java API,使得Java开发者也能利用Akka的强大功能。在这个模板中,开发者可以找到如何配置Akka系统、创建actor以及处理消息的基本示例,是学习Akka框架的绝佳起点。 接下来,...

    akka-2.5.32.tar.gz

    Akka 是一个基于 Actor 模型的开源框架,主要用于构建高度并发、分布式和容错的系统,主要在 Java 和 Scala 语言环境下使用。Akka 的核心理念是通过 Actor 模型来解决多线程和并发问题,从而实现高效且可扩展的软件...

    akka-actor-1.1.2.jar.zip

    这是一个Java Archive(JAR)文件,包含了Akka Actor模块的类库,供Java或Scala项目引用。在Java项目中,可以通过在类路径中包含这个JAR文件,导入必要的依赖,以便使用Akka Actor的功能。对于Maven或Gradle用户,...

    akka-play-scala-demo:akka-播放-scala-demo

    `akka-play-scala-demo` 是一个基于 Akka、Play 和 Scala 的示例项目,它展示了如何在这些技术栈中构建高效、可扩展的Web应用程序。Akka 是一个用于构建高度并发、分布式和反应式应用的框架,而 Play 是一个用于构建...

    akka-kernel_2.10-2.2.3.zip

    Akka是用Scala语言编写的,但也可以与Java很好地集成。这里的"2.10"指的是它兼容Scala 2.10版本的API,而"2.2.3"则是Akka框架的版本号。这个压缩包可能包含了Akka Kernel模块,该模块提供了启动和管理Akka应用的核心...

    akka-typed-actor-1.0-RC2.jar.zip

    在Java和Scala的世界里,Akka是一个强大的工具库,它提供了构建高度可扩展、反应式应用程序的框架。Akka Typed Actor是Akka框架中的一个重要组件,它是对传统Actor模型的升级,引入了类型安全的接口,为开发者带来了...

    akka-http-master.rar

    Akka 是一个用于构建高度并发、分布式和反应式应用程序的框架,主要由 Scala 语言编写,但也支持 Java。它提供了 actor 模型、事件驱动、异步处理等核心特性,使得开发者能够以更简单的方式处理复杂系统。 HTTP(超...

    akka-persistence-dynamodb:akka-persistence(日志,快照),适用于AWS DynamoDB的akka​​-persistence-query插件

    支持的版本: Java: 1.8+ Scala: 2.11.x或2.12.x或2.13.x Akka: 2.5.x (仅限Scala 2.11), 2.6.x (Scala 2.12、2.13) AWS-SDK: 1.x , DAX , 2.x特征产品j5ik2o / akka-persistence-dynamod

    akka-in-action源代码

    10. **与其他技术的集成**:Akka可以轻松地与Spring、Java EE等企业级框架集成,也可以与大数据框架如Spark配合使用,构建高效的数据处理管道。 通过《Akka in Action》的源代码,读者可以深入理解上述概念的实际...

    akka-actor_2.13-2.6.5.jar

    Akka是JAVA虚拟机JVM平台上构建高并发、分布式和容错应用的工具包和...Akka用Scala语言写成,同时提供了Scala和JAVA的开发接口。 Akka处理并发的方法基于Actor模型。在Akka里,Actor之间通信的唯一机制就是消息传递。

    akka-http-session:Web和移动客户端akka-http会话,具有可选的JWT支持

    提供了以及代码示例(使用Java,但易于转换为Scala),该示例回答了有关会话如何工作,如何保护会话以及如何使用akka-http的许多常见问题。 什么是会议? 会话数据通常至少包含已登录用户的id或username 。 必须...

    akka-quartz-scheduler:Quartz扩展和实用程序,用于Akka中的cron式调度

    当前版本是针对Scala 2.13.x和Akka 2.6.x构建的,可在Maven Central上使用。 如果您想支持Scala和Akka的其他组合,只需将您的请求发布在问题页面上(以及为什么当前可用的版本对您不起作用的原因。我一直对这些事情...

    akka-kryo-serialization.zip

    Akka 是一个用 Scala 编写的高性能、容错的 Java 和 Scala 应用程序构建框架,主要用于并发和分布式系统。Kryo 是一个快速且高效的序列化库,它能够将 Java 对象转换为字节流,便于存储或网络传输。在 Akka 中,序列...

    akka-stm-1.0-RC2.jar.zip

    Akka是一个用Scala语言编写的开源工具库,主要用于构建高度并发、分布式和反应式的应用程序。Akka STM是Akka框架的一个组件,它提供了基于软件事务内存的并发控制机制。 STM是一种编程模型,它允许程序员以一种更...

    scala-intellij-bin-2016.3.9

    "scala-intellij-bin-2016.3.9"是针对Scala语言的一个特定版本的IntelliJ IDEA插件,该版本为2016.3.9。这个插件是专门为Scala开发者设计的,旨在提高他们在IntelliJ IDEA中的开发体验。 Scala是一种多范式编程语言...

Global site tag (gtag.js) - Google Analytics