Akka to .NET】的更多相关文章

因为经常买双色球,嫌每次对彩票号麻烦,于是休息的时候做了个双色球兑奖的小程序,做完了发现业务还挺复杂的,于是改DDD重做设计,拆分服务,各种折腾...,不过这和本随笔没多大关系,等差不多了再总结一下,有空就写出来. 上面说了拆服务,拆成了录入,开奖,兑奖三个服务,三个服务开始是用消息队列的,不过后来发现其实就是服务的领域对象之间的交互,就联想到了Actor,面向对象于是一切都是对象,actor也是一切都是actor,看着就门当户对,于是就干掉消息队列...细节以后有机会再说. 上面其实也和这随笔…
Akka.NET 1.1近日发布,带来新特性和性能提升.InfoQ采访了Akka.net维护者Aaron Stannard,了解更多有关Akka.Streams和Akka.Cluster的信息.Aaron还阐述了与Akka for JVM实现有关的路线图计划. InfoQ:这个版本有什么突出的特性? Aaron Stannard:Akka.NET 1.1的主要目标是将Akka.Cluster由Beta测试版程序包变成最终版(RTM)程序包.该版本还提供了测试工具,对在生产环境里运行Akka.NE…
Akka.NET 是Java/Scala 流行框架Akka的一个 .NET 开源移植.可用于构建高并发,分布式和容错事件驱动的应用在 .NET 和 Mono 平台之上.Akka.NET 经过一年多的努力,发布 1.0 正式版,最新版本是1.0.4 ,具体参见 https://github.com/akkadotnet/akka.net/releases !Akka.NET 1.0 已经支持Mono平台,还有清晰的指南,还有 HOWTO,让开发者添加新特性的同时可以很方便的添加相关的文档 Code…
AKKA 笔记 - 有限状态机 -2 原文地址: http://rerun.me/2016/05/22/akka-notes-finite-state-machines-2/ 在上一节的Akka FSM笔记中,我们看了一些基本的使用Akka FSM和咖啡机的使用方式 - Actor的数据结构和一队我们要发给Actor的消息.这次的第二部分也是最终部分,我们会过一遍这些状态的实现细节. 总结 作为一个快速的总结,让我们先看一下FMS的结构和我们要发过去的消息. 状态和数据 FSM的三个状态和要在各…
原文地址:http://rerun.me/2016/05/21/akka-notes-finite-state-machines-1/ 我最近有个机会在工作上使用了Akka FSM,是个非常有趣的例子.API(实际上就是DSL),使用体验很棒.这里是我尝试用Akka FSM的有限状态机来写日志.作为例子,我们会以构建一个咖啡机的步骤作为例子. 为什么不用BECOME和UNBECOME 我们知道plain vanilla Akka Actor可以用become/unbecome切换行为.那么,为什…
失败更像是分布式系统的一个特性.因此Akka用一个容忍失败的模型,在你的业务逻辑与失败处理逻辑(supervision逻辑)中间你能有一个清晰的边界.只需要一点点工作,这很赞.这就是我们要讨论的主题. ACTOR SUPERVISION 想象一个方法调用了你栈顶的方法但却出了一个异常.那么在栈下的方法能做什么呢? 抓住异常并按顺序处理恢复 抓住异常,也许记个日志并保持安静. 下层的方法也可以选择无视这个异常(或者抓住并重扔出来) 想象下一直扔到main方法仍然没有处理这个异常.这种情况下,程序肯…
当我们说Actor生命周期的时候,我们能看到Actor能被很多种方式停掉(用ActorSystem.stop或ActorContext.stop或发送一个PoisonPill - 也有一个kill和gracefulstop). 无论Actor是怎么死的,有些情况一些系统中的其他actor想要知道.让我们举一个Actor与数据库交互的例子 - 我们叫它RepositoryActor.很明显,会有一些其他actor会向这个RepositoryActor发送消息.这些有"兴趣"的Actor很…
原文:http://rerun.me/2014/10/21/akka-notes-child-actors-and-path/ Actor是完全的继承结构.你创建的任何Actor肯定都是一个其他Actor的child. 让我们分析下: PATH 我们用ActorSystem.actorof创建一个ActorRef并打印出他的path val actorSystem=ActorSystem("SupervisionActorSystem") val actorRef=actorSyste…
原文地址:http://rerun.me/2014/10/21/akka-notes-actor-lifecycle-basic/ (请注意这了讨论的生命周期并不包括 preRestart 或者postRestart方法,当我们讨论supervision时候我们会说这个) 基本的Actor生命周期很直观.除了一点小不同,你可以直接拿基本Actor生命周期与Java Servlet生命周期作比较. 像其他常规类一样,我们有一个构造函数. preStart方法会被调用. 这里你可以在postStop…
Akka可能很多人都没有用过,也不知道是什么,但如果说起Scala或Spark就有很多人都听说过或使用过 ,这里简单说下三者的关系Akka是使用Scala开发的,Spark中使用了Akka作为其消息的通信工具:这篇文章主要 说说Akka的一些特性,做个简要的介绍: 要说Akka首先要从并发开始说起,我记得之前我也写过并发模型相关的文章,并发模型主要有这么三类: 1.共享内存模型 2.Actor模型 3.CSP模型 共享内存模型:是通过使用线程与锁对共享内存进行控制用于实现并发,它依赖于多线程.锁…
系列主题:基于消息的软件架构模型演变 既然这个系列的主题是"基于消息的架构模型演变",少不了说说Actor模型.Akka.net是一个基于Actor模型的分布式框架.如果你对分布式应用还非常陌生,当别人在谈"分布式"."云计算"等名词时你感到茫然,那么本篇文章将带你进行一次分布式开发之旅. 一.什么是Actor模型 Actor模型由Carl Hewitt于上世纪70年代早期提出并在Erlang语言中得到了广泛应用,目的是为了解决分布式编程中一系列…
原文在http://rerun.me/2014/10/06/akka-notes-actorsystem-in-progress/ 像我们前面看到的,我们可以用ActorSystem的actorof方法来创建Actor.其实你可以用ActorSystem做更多事.我们可以先看下Configuration和Scheduling. 让我们先看下ActorSystem 的方法. 1. 配置管理 还记得前一篇我们用application.conf文件来配置我们的日志级别吗?这个文件跟java里用的.pr…
1.mailbox Akka的每个actor默认有一个mailbox,按照FIFO顺序单线程处理.在抛出异常导致父actor根据设置的监管策略执行重启或恢复操作时,会从触发异常的消息的后续消息开始处理,邮箱并不会被清空.如果你想重新处理那个触发异常的消息,可以通过重写preRestart方法来访问该消息,java 中的preRestart参数为(Throwable reason, Option<Object> message),message.get()可以获得该消息(因为是从Option对象…
Akka基础 Akka笔记之Actor简介  Akka中的Actor遵循Actor模型.你可以把Actor当作是人.这些人不会亲自去和别人交谈.他们只通过邮件来交流.  1. 消息传递 2. 并发 3. 异常处理 4. 多任务 5. 消息链 Akka笔记之消息传递 消息发送给actor代理: 消息是不可变对象(可带有属性的case class): 分发器dispatcher和邮箱: dispatcher从actorRef取出一条消息放在目标actor邮箱中,然后放mailbox放在一个Threa…
定义一个 Actor 类 要定义自己的Actor类,需要继承 Actor 并实现receive 方法. receive 方法需要定义一系列 case 语句(类型为 PartialFunction[Any, Unit]) 来描述你的Actor能够处理哪些消息,以及如何进行处理. 如下例: import akka.actor.Actor import akka.actor.Props import akka.event.Logging class MyActor extends Actor { va…
Akka的模块化做得非常好,它为不同的功能提供了不同的Jar包. akka-actor-2.0.jar – 标准Actor, 有类型Actor,等等 akka-remote-2.0.jar – 远程Actor akka-slf4j-2.0.jar – SLF4J事件处理监听器 akka-testkit-2.0.jar – 用于测试Actor的工具包 akka-kernel-2.0.jar – Akka微内核,可运行一个基本的最小应用服务器 akka-<storage-system>-mailb…
1.提供可扩展的实时事务处理. 2.为以下目标设计: 垂直扩展(并发) 水平扩展(远程调用) 高容错 3.Akka的核心,Akka-actor非常小的,可以非常方便地放进你的应用中,提供你需要的异步无锁并行功能,不会有任何困扰. 4.任何需要高吞吐率和低延迟的系统都是使用Akka的候选. 5.Actor使你能够进行服务失败管理(监管者),负载管理(缓和策略.超时和隔离),水平和垂直方向上的可扩展性(增加cpu核数和/或增加更多的机器)管理.…
Akka 是一个用 Scala 编写的库,用于简化编写容错的.高可伸缩性的 Java 和 Scala 的 Actor 模型应用.它已经成功运用在电信行业.系统几乎不会宕机(高可用性 99.9999999 % 一年只有 31 ms 宕机). Actor模型并非什么新鲜事物,它由Carl Hewitt于上世纪70年代早期提出,目的是为了解决分布式编程中一系列的编程问题.其特点如下: 系统中的所有事物都可以扮演一个Actor Actor之间完全独立 在收到消息时Actor所采取的所有动作都是并行的,在…
<深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 <深入理解Spark:核心思想与源码分析>一书第一章的内容请看链接<第1章 环境准备> <深入理解Spark:核心思想与源码分析>一书第二章的内容请看链接<第2章 SPARK设计理念与基本架构> <深入理解Spark:核心思想与源码分析>一书第三章第一部分的内容请看链接<深入理解Spark:核心…
上次我们看Actor消息机制,我们看到开火-忘记型消息发出(意思是我们只要发个消息给Actor但是不期望有响应). 技术上来讲, 我们发消息给Actors就是要它的副作用. 这就是这么设计的.除了不响应, 目标Actor当然也可以对消息做以下事情- 1.发送一个响应给发送者(在我们的case里,TeacherActor应该响应一首名言给StudentActor) 2.转发一个响应给其他的潜在的受众Actor,他们也可能响应/转发/产生副作用.Routers(路由)和Supervisors(监管)…
3.THROW IN A LOGBACK.XML 现在我们把SLF4J日志配置在logback. <?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoder>…
在前两章 ( 一 , 二 ) ,我们大致讲了Actor和message是怎么工作的,让我们看一下日志和测试我们的 TeacherActor . RECAP 这是上一节我们的Actor代码: class TeacherActor extends Actor { val quotes = List( "Moderation is for cowards", "Anything worth doing is worth overdoing", "The trou…
消息 我们只是让QuoteRequest到ActorRef去但是我们根本没见过消息类! 它是这样的: (一个最佳实践是把你的消息类包装在一个完整的对象里以利于更好的组织) TeacherProtocol package me.rerun.akkanotes.messaging.protocols object TeacherProtocol{ case class QuoteRequest() case class QuoteResponse(quoteString:String) } 就像你知…
从第一篇Akka笔记的介绍中,我们是从很高的高度去观察Akka工具箱中的Actors.在这篇笔记的第二篇,我们会看一下Actors中的消息部分.而且延续上一次的例子,我们还会使用同样的学生与老师的例子. 在Actor消息的第一部分,我们会建立一个Teacher Actor,而且会使用一个叫StudentSimulatorApp的主程序. 回顾学生-老师模式的细节 现在考虑下StudentSimulatorApp单独发消息给TeacherActor.当我说到StudentSimulatorApp,…
任何以前做过多线程的人都不会否认管理多线程程序是困难并且痛苦的. 我说管理是因为它开始很容易而且当你看到性能提升时会很兴奋.但是,当你看到你没法从子线程的错误中恢复 或者 这些僵尸bug很难重现 或者 当用性能剖析器时你发现你的线程在更新一个共享状态时阻塞了很长时间时,那真的很痛苦. 我倾向于不说Java的并发API和集合把并发编程变的更轻松和容易了,因为如果你看到这,你肯定渴望对子线程任务有更多控制或者希望更简单但又不愿意去写一堆的锁和同步代码块,而且希望对这种模式有更高层的抽象. 着这个Ak…
Akka.NET Current Roadmap Akka.NET is a community-driven port of the popular Java/Scala framework Akka to .NET. Subscribe to the Akka.NET dev feed: https://twitter.com/AkkaDotNet (@AkkaDotNet) Support forum: https://groups.google.com/forum/#!forum/akk…
前言 在Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境中,我们已经部署好了一个Spark的开发环境. 在Spark集群 + Akka + Kafka + Scala 开发(2) : 开发一个Spark应用中,我们已经写好了一个Spark的应用. 本文的目标是写一个基于akka的scala工程,在一个spark standalone的集群环境中运行. akka是什么? akka的作用 akka的名字是action kernel的回文.根据官方定义:akk…
前言 在Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境,我们已经部署好了一个Spark的开发环境. 本文的目标是写一个Spark应用,并可以在集群中测试. 创建一个Scala的工程- SimpleAPP 建一个目录SimpleAPP mkdir SimpleAPP mkdir -p SimpleAPP/src/main/scala 建一个SimpleAPP/src/main/scala/SimpleApp.scala文件 这个程序会进行MapReduc…
目标 配置一个spark standalone集群 + akka + kafka + scala的开发环境. 创建一个基于spark的scala工程,并在spark standalone的集群环境中运行. 创建一个基于spark+akka的scala工程,并在spark standalone的集群环境中运行. 创建一个基于spark+kafka的scala工程,并在spark standalone的集群环境中运行. 集群框架图 本图主要是说明各个组件可以发布到不同的逻辑机器上. GSpark C…
定位  本文适合于想要了解新语言 Scala 以及异步并发编程框架 Akka, Future 的筒鞋. 读完本文后,将了解如何使用 ForkJoin 框架.如何使用 Akka 构建并发程序.如何使用 Future 进行异步编程,还有一系列小的编程点. 目标       实现十亿个不重复整数的排序, 由于文件外排序没有解决,因此,暂时实现的是一千万个不重复数,可以一次性加载到 2G 的内存里.  一. 任务拆分 首先要进行任务拆分.要实现一千万个不重复整数的排序, 可以拆分为三个子任务: (1)…