Akka 来构建具备高容错性、可以横向扩展的分布式网络应用程序。

Akka 通常是指一个强大的分布式工具集,用于协调远程计算资源来进行一些工作

  • Akka 工具集以及Actor 模型的介绍。
  • Actor 与并发:响应式编程。Actor 与Future 的使用。
  • 传递消息:消息传递模式。 第4 章 Actor 的生命周期—处理状态与错误:Actor 生命周期、监督机制、Stash/ Unstash、Become/Unbecome 以及有限自动机。
  • 纵向扩展:并发编程、Router Group/Pool、Dispatcher、阻塞I/O 的处理以 及API。
  • 横向扩展—集群化:集群、CAP 理论以及Akka Cluster。
  • 处理邮箱问题:加大邮箱负载、不同邮箱的选择、熔断机制。

Actor 模型是一种并发计算的理论模型,而Akka 的核心其实是Actor 并发模型的一种现代化实现

  什么是Actor 首先,让我们来定义什么是Actor。在Actor 模型中,Actor 是一个并发原语;更简单 地说,可以把一个Actor 看作是一个工人,就像能够工作或是处理任务的进程和线程一样。 把Actor 看成是某个机构中拥有特定职位及职责的员工可能会对理解有所帮助。比如说一 个寿司餐馆。餐馆的职员需要做各种各样不同的工作,给客人准备餐盘就是其中之一。

  Actor 每次只同步处理一个消息。邮箱本质上是等待Actor 处理的一个工作队列,如 图1-1 所示。处理一个消息时,为了能够做出响应,Actor 可以修改内部状态,创建更多 Actor 或是将消息发送给其他Actor。

 在具体实现中,我们通常使用Actor 系统这个术语来表示多个Actor 的集合以及所 有与该Actor 集合相关的东西,包括地址、邮箱以及配置。 下面再重申一下这几个重要的概念:

  • Actor:一个表示工作节点的并发原语,同步处理接收到的消息。Actor 可以保存 并修改内部状态。
  • 消息:用于跨进程(比如多个Actor 之间)通信的数据。
  • 消息传递:一种软件开发范式,通过传递消息来触发各种行为,而不是直接 触发行为。
  • 邮箱地址:消息传递的目标地址,当Actor 空闲时会从该地址获取消息进行处理。
  • 邮箱:在Actor 处理消息前具体存储消息的地方。可以将其看作是一个消息队列。
  • Actor 系统:多个Actor 的集合以及这些Actor 的邮箱地址、邮箱和配置等。

  我们可以举一个现实世界中的例子来比喻使用Actor 模型来建模的 过程,这会帮助我们理解它带来的好处。比如有一个寿司餐馆,其中有3 个Actor:客人、 服务员以及厨师。 首先,客人向服务员点单。服务员将客人点的菜品写在一张纸条上,然后将这张纸 条放在厨师的邮箱中(将纸条贴在厨房的窗户上)。当厨师有空闲的时候,就会获取这条 消息(客人点的菜品),然后就开始制作寿司(处理消息),直至寿司制作完成。寿司准 备好以后,厨师会发送一条消息(盛放寿司的盘子)到服务员的邮箱(厨房的窗户),等 待服务员来获取这条消息。此时厨师可以去处理其他客人的订单。 当服务员有空闲时,就可以从厨房的窗户获取食物的消息(盛放寿司的盘子),然后 将其送到客人的邮箱(比如餐桌)。当客人准备好的时候,他们就会处理消息(吃寿司), 如图1-2 所示。 运用餐厅的运作来理解Actor 模型是很容易的。随着越来越多的客人来到餐厅,我们 可以想象服务员每次接收一位客人的下单,并将订单交给厨房,接着厨师处理订单制作寿 司,最后服务员将寿司交给客人。每个任务都可以并发进行。这就是Actor 模型提供的最 大好处之一:当每个人各司其职时,使用Actor 模型分析并发事件非常容易。而使用Actor 模型对真实应用程序的建模过程和本例中对寿司餐厅的建模过程并没有太大差异。

Akka并发编程框架 -概念模型(Akka.net或者Orleans)的更多相关文章

  1. java并发编程框架 Executor ExecutorService invokeall

    首先介绍两个重要的接口,Executor和ExecutorService,定义如下: public interface Executor { void execute(Runnable command ...

  2. java架构《并发编程框架篇 __Disruptor》

    Disruptor入门   获得Disruptor 可以通过Maven或者下载jar来安装Disruptor.只要把对应的jar放在Java classpath就可以了. 基本的事件生产和消费 我们从 ...

  3. Akka并发编程——第五节:Actor模型(四)

    本节主要内容: 1. 停止Actor 1. 停止Actor (1)通过ActorSystem.shutdown方法停止全部 Actor的执行 /* *停止Actor:ActorSystem.shutd ...

  4. disruptor - Concurrent Programming Framework 并发编程框架

    disruptor发布了Java的2.0版本(.Net版本见这里),disruptor是一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式实现,或者事件 ...

  5. Java并发编程 - Executor,Executors,ExecutorService, CompletionServie,Future,Callable

    一.Exectuor框架简介 Java从1.5版本开始,为简化多线程并发编程,引入全新的并发编程包:java.util.concurrent及其并发编程框架(Executor框架). Executor ...

  6. GitHub标星120K+的JDK并发编程指南,连续霸榜GitHub终于开源了

    前言 在编程行业中,有一个东西是和广大程序员形影不离的,在最一开始接触编程就是配置它的运行环境,然后java / javac,对,这个东西就是jdk 昨天项目刚上线,可以稍微休息一下了,但是猛的闲下来 ...

  7. Scala-Unit7-Scala并发编程模型AKKA

    一.Akka简介 Akka时spark的底层通信框架,Hadoop的底层通信框架时rpc. 并发的程序编写很难,但是Akka解决了spark的这个问题. Akka构建在JVM平台上,是一种高并发.分布 ...

  8. 大数据入门第二十一天——scala入门(二)并发编程Akka

    一.概述 1.什么是akka Akka基于Actor模型,提供了一个用于构建可扩展的(Scalable).弹性的(Resilient).快速响应的(Responsive)应用程序的平台. 更多入门的基 ...

  9. Scala并发编程模型AKKA

    一.并发编程模型AKKA Spark使用底层通信框架AKKA 分布式 master worker hadoop使用的是rpc 1)akka简介 写并发程序很难,AKKA解决spark这个问题. akk ...

随机推荐

  1. nnet3bin/nnet3-xvector-compute.cc

    将特征在xvector神经网络模型中前向传播,并写出输出向量.我们将说话人识别的特定神经网络结构的输出向量或embedding称之为"Xvector".该网络结构包括:帧级别的多个 ...

  2. 【转载】Jenkins安装以及邮件配置

    转载:http://www.nnzhp.cn/archives/590 Jenkins介绍 Jenkins是一个java开发的.开源的.非常好用持续集成的工具,它能帮我们实现自动化部署环境.测试.打包 ...

  3. SQL Server - case when...then...else...end

    Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex ' THEN '男' ' THEN '女' ELSE '其他' END --Case搜索函数 ' T ...

  4. 【原创】运维基础之keepalived

    keepalived 2.0.12 官方:http://www.keepalived.org/ 一 简介 Keepalived is a routing software written in C. ...

  5. 创建Node.js TypeScript后端项目

    1.安装Node.js扩展,支持TypeScript语法 npm install -g typescript   npm install -g typings 2.创建项目目录project_fold ...

  6. C# 在遍历中修改或者移除元素

    ; i >= ; i--) { var l = imgList[i].Trim(); if (!l.ToLower().Contains(".jpg") && ...

  7. 利用远程服务器在docker容器搭建pyspider运行时出错的问题

    This system supports the C.UTF-8 locale which is recommended. You might be able to resolve your issu ...

  8. Java Spring Boot VS .NetCore (六) UI thymeleaf vs cshtml

    Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...

  9. C/S,B/S应用的区别

    ——————C/S,B/S应用的区别 C/S是指客户端/服务器架构,是一种典型的两层架构,可充分发挥客户端pc的性能,相对减轻服务器的压力. B/S是指浏览器/服务器架构,区别于传统的C/S(客户端/ ...

  10. Vue基础语法

    一.挂载点,模版和实例 二.Vue实例中的数据,事件和方法 1.v-html指令和v-text指令 v-html :不转义 v-text :转义过后的内容 <div id="root& ...