`
沉沦的快乐
  • 浏览: 55808 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

并发编程之akka简介

阅读更多

什么是akka

    akka是一个用scala编写的库,用于简化编写可容错的,可扩展的,高并发应用。akka使用actor模型来提升抽象能力,提供更好的平台来构建可扩展的,弹性的应用。对于比较难处理的错误,akka采用“let it crash”模型来处理,这种模式可以使得一个任务的处理失败不会导致整个应用的crash,使你的系统拥有强大的自愈能力,也不需要重启来恢复系统。同时akka的分布式部署更加简单透明。

akka使用的两种方式

作为库使用:在大多数的web系统中,你可能更倾向与把akka作为一个jar包来使用,你可以直接把jar包拷贝到你的系统中,也可以通过maven依赖把jar包拉到你的项目项目中。

作为微核使用:作为独立service来部署应用。

为什么使用akka

      akka是一个可扩展性非常强的软件,这不仅不仅体现在性能上,而且还体现在它可适用的系统规模上。akka的核心包akka-actor非常小,对于已有的需要异步和无锁并发的系统而言,很容易就可以把akka融入进去。akka适用的前景非常广泛,可使用于金融系统,游戏,医疗,交通,仿真,数据分析等等场景,只要需要高吞吐量、低延迟的系统,akka就是一个可供选择的对象。下面是akka的几个主要特性:

actor模型

    actor模型并非什么新鲜事务,它早在20世纪70年代就被提出了,主要目的是为了解决分布式编程中的一系统问题。actor模型具有以下优点:

1.更简单的、高度抽象的并发处理。

2.异步的,非阻塞的,高性能的事件驱动编程模型

3.非常轻量级的事件驱动处理。kaka处理任务的模式是一个任务一个actor,而不是一个任务一个线程。相比创建一个线程对象所需要的庞大字段而言,创建一个actor的代价非常小,基本在300字节左右。1GB内存可以创建几百万actor。

错误容忍

使用“let-it-crash”模型处理错误。前面说了kaka处理任务的模式是一个任务一个actor,而不是一个任务一个线程。所有的actor在线程上运行。如果一个actor出错了,就让这个actor销毁好了,而不会影响运行它的线程,该线程可以继续处理其他任务。而如果基于一个任务一个线程的模式,一个错误可能导致线程死锁,异常中断等,进而导致整个系统crash。

可以跨多个jvm处理错误

强大的系统自愈能力,不需要重启系统

 

位置透明性

      akka中所有的东西处理都是在分布式环境中,所有的actors之间的交互都是通过message来完成的,所有的事件都是异步的。所以一个actor不需要知道其他的actor的内部状态,运行方式,所处节点等等。

 

持久性

      当一个actor正在启动或重启时,它接收到的消息将会保持住或者重新发送。这个机制使得actor在jvm崩溃或者该actor迁移到其他节点之后,仍然可以恢复自己的状态。

 

与java项目兼容

  scala是jvm上运行的,akka库可以直接作为jar包在java项目中使用,而java作为目前排行前三的热门语言之一,无疑为akka的使用提供了丰富的场景。对于广大java开发者而言,降低了学习成本,也减少了项目改造的成本。另外,akka相对于go,erlang等热门并发语言而言,应该各有各的优点。关于akka与erlang的优劣,大家可以参考下《并发需求下的Scala及Erlang语言的比较与使用》

分享到:
评论

相关推荐

    scala并发编程开发教程

    Spark 的RPC是通过Akka类库实现的,Akka用Scala语言开发,基于Actor并发模型实现

    Akka 基础学习pdf中文文档

    第 5 章 纵向扩展:并发编程、Router Group/Pool、Dispatcher、阻塞 I/O 的处理以 及 API。 第 6 章 横向扩展—集群化:集群、CAP 理论以及 Akka Cluster。 第 7 章 处理邮箱问题:加大邮箱负载、不同邮箱的选择、...

    Akka入门与实践

    第 5 章 纵向扩展:并发编程、Router Group/Pool、Dispatcher、阻塞 I/O 的处理以 及 API。 第 6 章 横向扩展—集群化:集群、CAP 理论以及 Akka Cluster。 第 7 章 处理邮箱问题:加大邮箱负载、不同邮箱的选择、...

    Akka Scala 学习高清原版pdf

    Akka scala 并发 actor 高清原版pdf 学习scala实现akka进行并发编程

    java并发编程(第一版)

    主讲Java高并发与多线程,是一本优质好书。涉及内容:第一,立足于并发程序基础,详细介绍Java中进行并行程序设计的基本方法。...第五,介绍高并发框架Akka的使用方法。最后,详细介绍并行程序的调试方法。

    Python的并发编程工具包Pykka.zip

    Pykka 项目的目的是为 Python 提供了易用的并发操作抽象层,使用 Actor 模式。 Pykka 提供了 Actor API ,包含两种不同的实现: ThreadingActor is built on the Python Standard Library’s threading and ...

    实战Java高并发程序设计(带随书源码)

    在过去单核CPU时代,单任务在一个时间...第五,介绍高并发框架Akka的使用方法。最后,详细介绍并行程序的调试方法。 《实战Java高并发程序设计》内容丰富,实例典型,实用性强,适合有一定Java基础的技术开发人员阅读。

    Effective Akka英文原版PDF

    这本书可以帮助你快速掌握非常棒的并发框架Akka和Actor编程模式。采用强大的Scala语言,Akka的Actor模式可以帮助你减少并发程序的工作量。本书由官方发布,内容简洁,适合新手入门,照着书中的例子可以快速学习如何...

    让并发和容错更容易:Akka示例教程

    Akka用Scala语言写成,为开发高并发、分布式和容错式应用提供了便利,对开发者隐藏了很大程度的复杂性。把Akka用好肯定需要了解比这个教程更多的内容,但是希望这里的介绍和示例能够引起你的注意并继续了解Akka。写...

    akka-sample-cluster-java.zip

    akka-cluster 2.53 demo,整理官网的akka 2.53版本 对并发模型进行了更高的抽象 是异步、非阻塞、高性能的...Akka既可以在单机上构建高并发程序,也可以在网络中构建分布式程序,并提供位置透明的Actor定位服务。

    实战java高并发程序设计 pdf下载 高清完整版

    实战java高并发程序设计,学习java并发编程的一手资料,值得一看。在过去单核CPU时代,单任务在一个时间点只能执行单一程序,随着多核CPU的发展,并行程序开发就显得尤为重要。, 《实战Java高并发程序设计》主要介绍...

    java餐饮管理源码-akka:使用gradle搭建akkademo,语言是scala

    提供了一种高级抽象,能够简化在并发(Concurrency)/并行(Parallelism)应用场景下的编程开发 提供了异步非阻塞的、高性能的事件驱动编程模型 超级轻量级事件处理(每GB堆内存几百万Actor) 二、Akka简单使用 1. ...

    akka scala

    akka scala pdf 英文版 akka 是 scala基于actor的编程模型,具备高并发、套吞吐量、实时、容错等特点

    Akka:构建并发、分布式和弹性的消息驱动应用程序-开源

    Akka 是一个工具包,用于为 Java 和 Scala 构建高度并发、分布式和弹性的消息驱动应用程序。 Actors 和 Streams 使您可以构建可扩展的系统,更有效地使用服务器的资源,并使用多台服务器进行扩展。 以 The Reactive...

    物联网的参与者,Aurum优于Akka(计算机硕士论文英文参考资料).pdf

    库Akka(用Scala编写)是最受欢迎的演员库之一。但是,Akka缺少一些关键功能。我们的目标是创建我们自己的Actor库,称为Aurum,它不仅具有这些功能,而且具有更高的性能。新功能包括伪造引用、配置和启动集群、消息...

    实战Java高并发程序设计(第2版)PPT模板.pptx

    7使用akka构建高并发程序 7.1新并发模型:actor 7.2akka之helloworld 7.3有关消息投递的一些说明 7.6选择actor 7.5监督策略 7.4actor的生命周期 01 02 03 04 05 06 实战Java高并发程序设计(第2版)PPT模板全文共25...

    Akka系统概要

    Akka框架是一个用scala语言写成的Actor模型实现,可以使编程中的并发问题更容易解决,使编程过程中复杂多变的多线程问题变为简单易用的Actor对象。不光可以用scala语言操作,也可以使用java语言无缝操作。本文档制作...

    使用Akka的Actor模型和领域驱动设计构建反应式系统

    2.借助Actor,开发高并发的系统会变得非常容易;3.Actor并不局限于单个节点上的单个进程,它可以作为分布式集群运行;4.Actor和Actor模型提供了“反应式”编程所需的所有内容;5.Actor与领域驱动设计是绝佳的组合。...

    AkkaScala.pdf

    akka actor使用手册。Akka是一套开源工具和运行时,便于构建JVM上的并发应用和分布式应用。Akka支持多种并发编程模型,不过,由于受到Erlang启发,Akka尤其强调基于Actor的并发模型.

Global site tag (gtag.js) - Google Analytics