2019独角兽企业重金招聘Python工程师标准>>>

java 协程 实现 Akka 博客分类: java

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, 在线游戏, ):垂直扩展,水平扩展,容错/高可用性

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

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

资料

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)

import akka.actor.UntypedActor;public class TestActor 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", 8888);server.register("test-service", Actors.actorOf(TestActor .class));}
}
import akka.actor.ActorRef;
import akka.actor.Actors;public class Client {public static void main(String[] args) {ActorRef actor = Actors.remote().actorFor("test-service", "localhost", 8888);for (int i = 0; i < 10000; i++) {Object result = actor.sendRequestReply("Hello");System.out.println(result);}}
}

转载于:https://my.oschina.net/xiaominmin/blog/1598018

java 协程 实现 Akka相关推荐

  1. 【java】java 协程

    1.概述 协程转载:协程到底是什么?看完这个故事明明白白! 神秘使者 "久闻Java语言跨越平台,框架众多,不过二十年功夫,就已晋升天下第一编程语言,今日一见,果然名不虚传呐!" ...

  2. java 协程线程的区别_为什么 Java 坚持多线程不选择协程?

    谢邀. 先说结论:协程是非常值得学习的概念,它是多任务编程的未来.但是Java全力推进这个事情的动力并不大. 先返回到问题的本源.当我们希望引入协程,我们想解决什么问题.我想不外乎下面几点:节省资源, ...

  3. java 协程_你真的了解kotlin的协程么?

    协程我的理解是协作的线程,就是说与主线程协作的线程,也就是工作线程. 而协程的本质确实是这样.Kotlin协程的底层就是Java的多线程,协程就是一个比较方便的线程框架.协程这种线程框架有什么好处呢? ...

  4. JAVA 协程Quasar初探

    这里写自定义目录标题 什么是协程 java 携程框架Quasar Quasar VS Golang Quasar 初探 协程原理 什么是协程 计算机有进程,线程和协程.前两者大家都知道,很常见的玩意. ...

  5. java 协程线程的区别_用大白话讲进程和线程、协程的区别

    什么是进程和线程 有一定基础的小伙伴们肯定都知道进程和线程. 进程是什么呢? 直白地讲,进程就是应用程序的启动实例.比如我们运行一个游戏,打开一个软件,就是开启了一个进程. 进程拥有代码和打开的文件资 ...

  6. java 协程线程的区别_线程和协程的区别的通俗说明

    表面上看协程和线程似乎是同一个东西,能达到的效果也相同,但是在底层的实现上却有着非常大的区别,在服务器端的绝大部分应用中,协程要比线程节省资源的多. 通俗易懂的讲,线程是操作系统的资源,当java程序 ...

  7. android java协程,Android协程——入门

    一.如何使用协程 1.1 添加依赖 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.0.0' implementatio ...

  8. java 协程 http_RxJava也能像协程那样优雅的请求网络

    RxJava也能像协程那样优雅的请求网络 Retrofit&Coroutines 与 Retrofit&RxJava 两年没写过文章了,一时之间不知道说些什么好-哔- 网络请求框架相信 ...

  9. java 协程框架_GitHub - yaozhang0105/dactor: Dactor是基于Java的轻量级同步异步统一处理框架,基于协程思想构建...

    DActor Introduction DActor框架基于协程思想设计,可同时支持同步和异步代码,简化在线异步代码的开发,用同步代码的思维来开发异步代码,兼顾异步代码的高并发.无阻塞和同步代码的易读 ...

最新文章

  1. java的知识点15——String基础、String类和常量池、String类常用的方法、字符串相等的判断、组合模式
  2. HTML字体怎么显示,教你如何用CSS来控制网页字体的显示样式
  3. 机器学习资料整理,收藏了不后悔!
  4. 【模板】可持久化线段树
  5. 结构与算法(03):单向链表和双向链表
  6. Oracle online系列(下):online indexbuild
  7. java中复制图片_如何在Java中实现复制图片
  8. lua 获取网络时间_Lua脚本引擎教程:学习路线
  9. WEB小知识学习集锦
  10. python练手项目pdf_一个不错的练手项目!
  11. 以太网没有有效的ip怎么解决
  12. xc7k325tffg900芯片手册_XC7K325TFFG900_Spartan-3【太航半导体】闻喜县
  13. Markdown格式表情包大全最新整理分享
  14. 快速傅里叶变换(FFT)和逆快速傅里叶变换(IFFT)
  15. Practical Machine Learning with H2O.2016.12
  16. 《微观经济学》 第二章
  17. MSK的CPM调制和I-Q调制
  18. Web前端 HTML Day_01
  19. linux报ora12560,测试ORA-12560和ORA-12500
  20. 2020-8-18js练习

热门文章

  1. openstack-dbs
  2. Golang 单例模式 singleton pattern
  3. ASP.NET虚拟主机安全漏洞解决方案
  4. 给按钮添加热键和快捷键
  5. 如何优化计算机网络课程,计算机论文:探究如何优化计算机网络课程教学方法.docx...
  6. 看日本电影再也不怕看不懂了,6行Python代码轻松实现音频转文字
  7. 70+Python项目,面向初学者、中级和经验丰富的开发人员
  8. 华为交换机ssh思科交换机_使用SSH或Telnet访问思科业务交换机CLI
  9. html5 php服务器搭建,使用Apache 搭建web 网站服务器
  10. 不同表结构数据迁移_数据结构:哈希 哈希函数 哈希表