• Akka探索第一个例子by fsharp 1


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

    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 @"..DPinUserControlpackagesAkka.1.2.0lib
    et45Akka.dll"
    #r @"..DPinUserControlpackagesSystem.Collections.Immutable.1.3.1lib
    etstandard1.0System.Collections.Immutable.dll"
    #r @"..DPinUserControlpackagesNewtonsoft.Json.9.0.1lib
    et45Newtonsoft.Json.dll"
    
    open Akka
    open Akka.Actor
    open System
    
    //0
    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
    
    //1
    let system = ActorSystem.Create("Alpha")
    //2
    let actor = system.ActorOf<GreetActor>("SomeOne")
    //3
    actor.Tell(new Greet("XX"))
  • 相关阅读:
    程序员修炼之道:从小工到专家有感2
    3月13日
    第一次结对作业(2)
    3月12日
    3月11日
    第一次结对作业
    3月10日
    11月6日
    10月28日
    10月7日
  • 原文地址:https://www.cnblogs.com/weloveamber/p/6818243.html
Copyright © 2020-2023  润新知