如何构建一套分布式程序一直是我想知道的问题。

Akka就是一套用来开发分布式系统的开发库。当然开发分布式系统只是它的能力之一。除此之外高度抽象的并行运算能力,轻量级的消息系统,容错能力都是该库的特点。

首先一个重要的概念就是Actor,Akka系统用Actor来表达任务。Actor可以理解为是一个角色,我们通过消息来告诉他做什么事,而不是主动去控制他。既然他不受我们控制,那我们也不用100%的对他负责。我们需要做的是管理好他们,而他们需要把活干好。事件系统还可以将多任务并行运算的能力给释放出来。设想一下,在并行运算中比较多考虑的就是共享资源的处理。多个任务或存或取某个独占资源,这时我们需要把一切安排的井井有条,这是传统的做法。换个角度,如果共享资源由一个任务进行管理呢?需要使用共享资源的任务都给该任务发消息,他们之间通过消息来进行信息传递。清晰的权责划分之后,我们就可以把一些复杂的共享逻辑合并在一处。而任务的执行则可以更顺畅的进行,这是非消息系统所不具有的能力。
Akka的第一个程序
该任务就是简单的构建最基础的内容,网上有fsharp的例子,这里我用fsharp来实现csharp给出的例子,看的更清晰一些。
0.定义消息Message和Actor
1.构建ActorSystem
2.在ActorSystem的基础上生成Actor
3.给Actor发消息,触发Actor的动作

#I __SOURCE_DIRECTORY__
#r @"..\DPinUserControl\packages\Akka.1.2.0\lib\net45\Akka.dll"
#r @"..\DPinUserControl\packages\System.Collections.Immutable.1.3.1\lib\netstandard1.0\System.Collections.Immutable.dll"
#r @"..\DPinUserControl\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll" open Akka
open Akka.Actor
open System //
type Greet(who:string) =
member x.Who = who type GreetActor() =
inherit ReceiveActor()
do
base.Receive<Greet>(fun (greet:Greet) -> Console.WriteLine("Hello {0}", greet.Who)) |> ignore //
let system = ActorSystem.Create("Alpha")
//
let actor = system.ActorOf<GreetActor>("SomeOne")
//
actor.Tell(new Greet("XX"))

Akka探索第一个例子by fsharp 1的更多相关文章

  1. Akka探索第二个例子by fsharp

    本文重度借鉴了github上akkabootcamp教程. 先上代码 open Akka open Akka.Actor open System type Message = | ContinuePr ...

  2. Qt之QCustomPlot绘图(一)配置和第一个例子

    最近一个用Qt开发的项目需要绘制坐标曲线,我在老师的指点下使用了QCustomPlot这个插件,使用方法简单,功能还算不错. 可是在网上找了很多资料和博文都只是将官方提供的例子演示一遍,没有系统全面的 ...

  3. 三 akka学习 actor的例子

    (转载: http://blog.csdn.net/chenleixing/article/details/44044243 ) Java并发编程的4种风格:Threads,Executors,For ...

  4. ElasticSearch 5学习(5)——第一个例子(很实用)

    想要知道ElasticSearch是如何使用的,最快的方式就是通过一个简单的例子,第一个例子将会包括基本概念如索引.搜索.和聚合等,需求是关于公司管理员工的一些业务. 员工文档索引 业务首先需要存储员 ...

  5. MXNet学习~第一个例子~跑MNIST

    反正基本上是给自己看的,直接贴写过注释后的代码,可能有的地方理解不对,你多担待,看到了也提出来(基本上对未来的自己说的),三层跑到了97%,毕竟是第一个例子,主要就是用来理解MXNet怎么使用. #导 ...

  6. emberjs学习一(环境和第一个例子)

    code { margin: 0; padding: 0; white-space: pre; border: none; background: transparent; } code, pre t ...

  7. 键盘过滤第一个例子ctrl2cap(4.1~4.4)汇总,测试

    键盘过滤第一个例子ctrl2cap(4.1~4.4)汇总,测试 完整源代码 /// /// @file ctrl2cap.c /// @author wowocock /// @date 2009-1 ...

  8. springmvc的介绍和第一个例子

    SpringMVC是Spring 框架自带的一部分. SpringMVC底层基于:Servlet Struts2底层基于:filter struts1底层基于:Servlet spring 各模块 我 ...

  9. 04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s

     1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2  spring-mv ...

随机推荐

  1. iOS的iPhone屏幕尺寸、分辨率、PPI和使用123倍图

  2. Hyperledger Fabric java chaincode 编译部署(1.4V)

    前提条件: 构建好了一个拥有四个peer 一个Order 的1.4版本的Fabric网络. 证书通过Cryptogen生成,没有使用CA服务. 开启TLS. 网络中的peer都加入了一个 名为mych ...

  3. loj #2006. 「SCOI2015」小凸玩矩阵

    #2006. 「SCOI2015」小凸玩矩阵   题目描述 小凸和小方是好朋友,小方给小凸一个 N×M N \times MN×M(N≤M N \leq MN≤M)的矩阵 A AA,要求小凸从其中选出 ...

  4. Linux文件属性用户、组、权限

    Linux系统中的用户是分角色的,用户的角色是由UID和GID来识别的(也就是说系统识别的是用户的UID.GID,而非用户用户名),有个UID是唯一的(系统中唯一如同身份证一样)用来标识系统的用户账号 ...

  5. javascript事件委托//就是父级事件给子级

    <!DOCTYPE html><html><head> <title></title> <style type="text/ ...

  6. [JLOI2010]冠军调查 BZOJ2768 最小割

    题目描述 一年一度的欧洲足球冠军联赛已经进入了淘汰赛阶段.随着卫冕冠军巴萨罗那的淘汰,英超劲旅切尔西成为了头号热门. 新浪体育最近在吉林教育学院进行了一次大规模的调查,调查的内容就是关于切尔西能否在今 ...

  7. shiro 的简单应用

    shiro   的简单应用 shiro官网:https://shiro.apache.org/ shiro 简介: Apache Shiro(日语"堡垒(Castle)"的意思)是 ...

  8. vue项目中打包编译后,CSS样式【-webkit-box-orient: vertical】打包后丢失问题

    最近在做vue项目的时候页面处理多行文本样式时用到了-webkit-box-orient: vertical这个属性,本地跑项目没问题,但是打包放到服务器后发现这个属性丢失了.如下图: 后来在网上查了 ...

  9. APP设计规范

    设计师DPI指南 本指南旨在为初级到中级设计人员提供“入门”或介绍性阅读,他们希望从一开始就学习或获得有关跨DPI和跨平台设计的更多知识. 尽可能少的数学和没有不可解析的图形,只需在简短的部分中订购直 ...

  10. python统计字符串中字符个数

    str = "xxx" result = {} for i in set(str):#set将字符串转为集合对象,用于去重,减少计算量 result[i] = str.count( ...