欢迎使用 Akka,Akka 是一套被用来在在多处理器核心和网络之间被设计可扩展和具有相关弹性的开源工具集。Akka 允许你更加关注商业需求而不是书写低级别的代码来提供可靠性,容错率和高性能。

很多常用的设计实践和已经接受的程序模型不能解决一些重要的挑战,这些挑战通常是现代计算机体系结构中固有的。为了让项目取得成功,分布式系统必须能够应付一些环境出现的问题,例如组件崩溃不能响应,发送的消息没有痕迹的就丢失了,为了让分布式系统能够成功的运行,以及网络延迟和波动等问题。这些问题在具有很好管理和监控环境下的数据中心经常会发生,针对虚拟架构环境就更加容易出现上面的这些问题了。

为了帮助你处理上面提到这些现实的问题,Akka 提供了:
  • 不使用低级并发结构的多线程,例如原子或锁;让你免于考虑内存可见性的问题。
  • 系统和组件之间的远程通讯透明性; 让你免于属性和维护复杂的网络代码。
  • 一个高可用性的集群架构,这个集群具有相当的弹性,在线方式;让你真正能够部署一个反应系统。

Reactive System. A reactive system is a system that responds (reacts) to external events。

反应系统是一个能对外部事件做出相应反应的系统。早期所谓的reactive system是软件系统的一个分支,意思正如它的名字所描述的。后来这个概念被美国的David Harel明确下来,其最主要部分是描述反应行为。

什么是反应行为呢?下面看一个转换系统的例子 输入(开始)->软件系统(经过一段时间后停止运行)->(然后)输出 例子中用户把数据输入给计算机,软件对这些数据经过一段时间的计算,最后给出输出结果,我们可以看作一个会计的月结算或者一个测量的统计数据。
能够得知,输入数据经过特定的规则被转换,并且在结束计算过程以后给出结果。而reactive system却与此相反。

与转换系统相反,在reactive system里往往没有明确的时序安排。总体来讲,reactive system表示的是不限制运行时间的系统,这其中要和外部环境相互作用,也就是在外部刺激上的反应(reactive),例如和不同使用者或者外部的硬件等,但是也包括内部发生的交流行为,因为reactive system是被集成在并行运行的分布式系统的规则中的。

例如,一个计算机的操作系统是这样一个reactive system,它不会停止运行,而总是反应用户给的输入,并且计算机中的各个组件之间要进行交流。

在电信领域,生产控制或者在硬件环境的构造(嵌入式系统)中还存在很多这样的例子。在信息系统中,也就是基于数据库的应用系统中也要用到 reactive system。在给一个典型的例子就是警报系统(Early Warning System).

Akka 使用 actor 抽象模型能够让 Akka 更加容易的创建正确的并发,并行的分布式系统。actor 模型贯穿整个 Akka 的库,能够让你更加容易的理解和使用它们,并且能够保证更好的完整性。因此 Akka 提供了一个深度的整合和集成,如果你无法通过选择库来解决个别问题的时候,你可以尝试将这些整合在一起。

通过学习 Akka 和如何使用 actor 模型,你将访问到庞大和深入的工具集用来解决分布式并行系统中遇到的困难和挑战,通过统一的编程模型,其中所有的东西都能够紧密和高效的组合在了一起。

https://www.cwiki.us/display/AkkaZH/Introduction+to+Akka

Akka 介绍的更多相关文章

  1. Scala进阶之路-并发编程模型Akka入门篇

    Scala进阶之路-并发编程模型Akka入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Akka Actor介绍 1>.Akka介绍 写并发程序很难.程序员不得不处 ...

  2. 15. Scala并发编程模型Akka

    15.1 Akka介绍 1) Akka是Java虚拟机JVM平台上构建高并发.分布式和容错应用的工具包和运行时,可以理解成Akka是编写并发程序的框架 2) Akka用Scala语言写成,同时提供了S ...

  3. 深入理解Akka Actor模型

    Carl Hewitt 在1973年对Actor模型进行了如下定义:"Actor模型是一个把'Actor'作为并发计算的通用原语". Actor是异步驱动,可以并行和分布式部署及运 ...

  4. 【Flink】Flink 底层RPC框架分析

    1. 前言 对于Flink中各个组件(JobMaster.TaskManager.Dispatcher等),其底层RPC框架基于Akka实现,本文着重分析Flink中的Rpc框架实现机制及梳理其通信流 ...

  5. Akka初步介绍

    Akka可能很多人都没有用过,也不知道是什么,但如果说起Scala或Spark就有很多人都听说过或使用过 ,这里简单说下三者的关系Akka是使用Scala开发的,Spark中使用了Akka作为其消息的 ...

  6. Spark如何使用Akka实现进程、节点通信的简明介绍

    <深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 <深入理解Spark:核心思想与源码分析> ...

  7. 以Akka为示例,介绍Actor模型

    许多开发者在创建和维护多线程应用程序时经历过各种各样的问题,他们希望能在一个更高层次的抽象上进行工作,以避免直接和线程与锁打交道.为了帮助这些开发者,Arun Manivannan编写了一系列的博客帖 ...

  8. Akka详细介绍

    AKKA NOTES - 介绍演员 任何在过去做过多线程的人都不会否认管理多线程应用程序有多么困难和痛苦.我说管理因为它开始很简单,一旦你开始看到性能改进,它变得非常有趣.但是,当您发现没有更简单的方 ...

  9. Akka in action (第一章 介绍Akka)

    在本章 概述Akka 了解Actors和Actor系统 Akka的适用范围 在第一章中,会介绍给你Akk的个方面,它能做什么,与现有的解决方案有那些不同.重点关注Akka有哪些功能和使用范围和强大的并 ...

随机推荐

  1. 小菜鸟之java异常

    一.异常简介 什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错.在java中,阻止当前方法或作用域的情况,称之为异常. java中异常的体系是怎么样的呢? 1.Java中的所有不正常类都 ...

  2. mapreduce运行的bug收录

    在8088端口可以看到日志文件(主要看error),操作如下: 1.window jdk版本最好和linux jdk 版本一致,不然容易出现莫名奇妙的bug 之前出现一个bug: Unsupporte ...

  3. 洛谷 P2633 Count on a tree 题解

    题面 对于每个点建立一颗主席树: 然后按照树上差分的思想统计主席树的前缀和: lca+主席树+前向星存表就可以了: #include <bits/stdc++.h> #define inc ...

  4. 树状数组+二维前缀和(A.The beautiful values of the palace)--The Preliminary Contest for ICPC Asia Nanjing 2019

    题意: 给你螺旋型的矩阵,告诉你那几个点有值,问你某一个矩阵区间的和是多少. 思路: 以后记住:二维前缀和sort+树状数组就行了!!!. #define IOS ios_base::sync_wit ...

  5. [NAIPC2016]Jewel Thief(决策单调性+分治)

    [NAIPC2016]Jewel Thief(决策单调性+分治) 题面 原题提交地址(题目编号H) 原题面下载地址 有\(n\)个物品,每个物品有一个体积\(w_i\)和价值\(v_i\),现在要求对 ...

  6. table表格的无缝循环

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. CentOS 7 关闭Selinux

    临时关闭: [root@localhost ~]# getenforceEnforcing [root@localhost ~]# setenforce 0[root@localhost ~]# ge ...

  8. MySQL性能优化(一):优化方式

    原文:MySQL性能优化(一):优化方式 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/v ...

  9. php运行结果设置无缓存

    修改配置php.ini vim /usr/local/php/lib/php.ini opcache.enable= 重启php服务 service php-fpm restart done! 参考地 ...

  10. 第一个简单的Echarts实例

    该示例使用 vue-cli 脚手架搭建 安装echarts依赖 npm install echarts -S 或者使用国内的淘宝镜像: 安装 npm install -g cnpm --registr ...