阿里巴巴分布式框架是什么(阿里p8架构师浅谈:分布式应用框架Akka详解)

1.什么是Akka

Akka 是一个用 Scala 编写的库,用于简化编写容错的、高可伸缩性的 Java 和 Scala 的 Actor 模型应用。它分为开发库和运行环境,可以用于构建高并发、分布式、可容错、事件驱动的基于JVM的应用。使构建高并发的分布式应用更加容易。

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

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

以微内核的形式:你可以将应用放进一个独立的内核。

2.Akka的五大特性

1)易于构建并行和分布式应用 (Simple Concurrency & Distribution)

Akka在设计【我爱线报网】52线报网-专注分享活动首码线报优惠券零投网赚项目时采用了异步通讯和分布式架构,并对上层进行抽象,如Actors、Futures ,STM等。

2)可靠性(Resilient by Design)

系统具备自愈能力,在本地/远程都有监护。

3)高性能(High Performance)

在单机中每秒可发送50000000个消息。内存占用小,1GB内存中可保存2500000个actors。

4)弹性,无中心(Elastic — Decentralized)

自适应的负责均衡,路由,分区,配置

5)可扩展(Extensible)

可以使用Akka 扩展包进行扩展。

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

Akka被成功运用在众多行业的众多大企业,从投资业到商业银行、从【我爱线报网】52线报网-专注分享活动首码线报优惠券零投网赚项目零售业到社会媒体、仿真、游戏和赌博、汽车和交通系统、数据分析等等等等。任何需要高吞吐率和低延迟的系统都是使用Akka的候选。

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

为了帮助你使用akka,下面的链接中有一些Akka用户关于他们如何使用Akka的描述:

http://stackoverflow.com/questions/4493001/good-use-case-for-akka

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

以下是Akka被部署到生产环境中的领域

事务处理 (在线游戏【我爱线报网】52线报网-专注分享活动首码线报优惠券零投网赚项目,金融/银行业,贸易,统计,赌博,社会媒体,电信):垂直扩展,水平扩展,容错/高可用性

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

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

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

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

通信Hub (电信, Web媒体, 手机媒体):垂直扩展,水平扩展,容错/【我爱线报网】52线报网-专注分享活动首码线报优惠券零投网赚项目高可用性

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

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

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

4. Scala语言

Scala是一种多范式的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。

百度百科,Scala语言介绍:

http://baike.baidu.com/link?url=86mpCDT8PbqP29vR-ZDHQeMt1grr–g42DtVMkjvru4g57_TATYquSDnjLOJl-WovbPuywyikI7q1I0ZvWjuca

百度文库,Scala编程【我爱线报网】52线报网-专注分享活动首码线报优惠券零投网赚项目入门:

http://wenku.baidu.com/view/27cbf218964bcf84b9d57b83.html

5.Actors模型

Actor模型并非什么新鲜事物,它由Carl Hewitt于上世纪70年代早期提出,目的是为了解决分布式编程中一系列的编程问题。其特点如下:

系统中的所有事物都可以扮演一个Actor

Actor之间完全独立

在收到消息时Actor所采取的所有动作都是并行的,在一个方法中的动作没有明确的顺序

Actor由标识和当前行为描述

Actor可能被分成原始(primitive)和非原始(non primitive)类别

很多开发语言都提供了原生的Actor模型。例如erlang【我爱线报网】52线报网-专注分享活动首码线报优惠券零投网赚项目,scala等

Actor,可以看作是一个个独立的实体,他们之间是毫无关联的。但是,他们可以通过消息来通信。一个Actor收到其他Actor的信息后,它可以根据需要作出各种相应。消息的类型可以是任意的,消息的内容也可以是任意的。这点有点像webservice了。只提供接口服务,你不必了解我是如何实现的。一个Actor如何处理多个Actor的请求呢?它先建立一个消息队列,每次收到消息后,就放入队列,而它每次也从队列中取出消息体来处理。通常我们都使得这个过程是循环的。让Actor可以时刻处理发送来的消息。

6.示例

http://www.th7.cn/Program/java/2012/03/29/67【我爱线报网】52线报网-专注分享活动首码线报优惠券零投网赚项目015.shtml

应用场景:服务端要处理大量的客户端的请求,并且处理请求耗费较长的时间。这时就需要使用并发处理。多线程是一种方法,这里使用Akka框架处理并发。(以下代码在Groovy1.7.5、akka-actors-1.2下运行成功)

这里有三个角色:Client、Master、Worker

Client傻乎乎地发同步请求给Master,一直等到结果返回客户端才离开。

Master接收客户端发来的请求,然后将请求交给Worker处理,处理完成之后将结果返回给Client。

Worker负责具体的业务处理,它耗费的事件比较长。

所以这里的关键在于Master,如果Master线性地“接收请求――调用W【我爱线报网】52线报网-专注分享活动首码线报优惠券零投网赚项目orker处理得到返回结果――将结果返回”,这样的系统必将歇菜。

使用Akka可以方便地将它变成并行地。

推荐阅读

给力项目线报网会员可免费下载 加入会员
友情提醒: 请尽量登录购买,防止付款了不发货!
QQ交流群:226333560 站长微信:qgzmt2
温馨提示:本站提供的一切软件、教程和内容信息都来自网络收集整理,仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,版权争议与本站无关。用户必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!

给TA打赏
共{{data.count}}人
人已打赏
行业资讯

中瑞博信项目管理集团有限公司(融资丨「中博瑞康」完成数千万元天使轮融资,致力于实现细胞制备工具国产化)

2024-9-17 8:14:05

行业资讯

rascal(妙用RASCI工具,巧解岗位职责混乱难题| 案例分析)

2024-9-17 8:34:49

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索