【Scala 】Akka库】的更多相关文章

简介编辑 Akka 是一个用 Scala 编写的库,用于简化编写容错的.高可伸缩性的 Java 和 Scala 的 Actor 模型应用.它已经成功运用在电信行业.系统几乎不会宕机(高可用性 99.9999999 % 一年只有 31 ms 宕机 Actor模型并非什么新鲜事物,它由Carl Hewitt于上世纪70年代早期提出,目的是为了解决分布式编程中一系列的编程问题.其特点如下: 系统中的所有事物都可以扮演一个Actor Actor之间完全独立 在收到消息时Actor所采取的所有动作都是并行…
1. Scala json解析库:https://github.com/json4s/json4s…
对于 A => B => C 这种 future 之间的操作,akka 默认会自动的按照顺序执行,但对于数据库操作来说,我们希望几个操作顺序执行,就需要使用语法来声明 有两种声明 future 先后关系的方法,第一种是 flatMap,第二种是 for import scala.concurrent.Future import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.blocking…
[From] https://colobu.com/2016/02/15/Scala-Async/ 在我以前的文章中,我介绍了Scala Future and Promise.Future代表一个异步计算,你可以设置你的回调函数或者利用Await.result等待获取异步计算的结果,你还可以组合多个future为一个新的future.Promise让你可以控制是否完成计算还是抛出异常,它的future方法返回一个Future对象,complete.success和failure允许你完成计算.如…
自然语言处理 ScalaNLP-机器学习和数值计算库的套装 Breeze -Scala用的数值处理库 Chalk-自然语言处理库. FACTORIE-可部署的概率建模工具包.用Scala实现的软件库. 为用户提供简洁的语言来创建关系因素图.评估參数并进行判断. 数据分析/数据可视化 MLlib in Apache Spark-Spark下的分布式机器学习库 Scalding -CAscading的Scala接口 Summing Bird-用Scalding 和 Storm进行Streaming…
package com.example import akka.actor._ import akka.util.Timeout object Tutorial_03_Ask_Pattern extends App { val system = ActorSystem("DonutStoreActorySystem") val donutInfoActor = system.actorOf(Props[DonutInfoActor], name="DonutInfoActor…
package com.example import akka.actor.ActorSystem import scala.util.{Failure, Success} import scala.concurrent.ExecutionContext.Implicits.global object Tutorial_01_ActorSystem_Introduction extends App { println("Step1 : Create an actor system")…
import java.util.concurrent.{ExecutorService, Executors, TimeUnit} import akka.actor.{Actor, ActorSystem, Props} import akka.util.Timeout import scala.concurrent.{Await, ExecutionContext} import scala.concurrent.duration.Duration Runnable 无返回值 class…
Akka基础 Akka笔记之Actor简介  Akka中的Actor遵循Actor模型.你可以把Actor当作是人.这些人不会亲自去和别人交谈.他们只通过邮件来交流.  1. 消息传递 2. 并发 3. 异常处理 4. 多任务 5. 消息链 Akka笔记之消息传递 消息发送给actor代理: 消息是不可变对象(可带有属性的case class): 分发器dispatcher和邮箱: dispatcher从actorRef取出一条消息放在目标actor邮箱中,然后放mailbox放在一个Threa…
scala中特质定义:包括一些字段,行为(方法/函数/动作)和一些未实现的功能接口的集合,能够方便的实现扩展或混入到已有类或抽象类中. scala中特质(trait)是一个非常实用的特性,在程序设计中能够 更好的抽象现实.使程序更关注各自功能和更好的将程序拆分成多个特质模块,使程序具有更强的扩展性.熟悉java的同学.能够将特质理解为抽象类.可是scala中能够在一个类中同一时候混入多个特质(使用extends 或with).而java中一个类仅仅能继承一个抽象类,假设要实现多个抽象类就必需使用…
package com.example import akka.actor._ object Tutorial_02_Tell_Pattern extends App { println("Step 1: Create an actory system") val system = ActorSystem("DonutStoreActorSystem") val donutInActor = system.actorOf(Props[DonutInActor], n…
package com.yz8 import org.junit.Test class test { @Test def test: Unit = { val ints = List(1,5,7,6,8) println(ints.head)//1 println(ints.tail)//List(5, 7, 6, 8) //判断集合是否为空 println(ints.isEmpty) println(ints==Nil) } @Test def test2(): Unit ={ val int…
前言 在Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境中,我们已经部署好了一个Spark的开发环境. 在Spark集群 + Akka + Kafka + Scala 开发(2) : 开发一个Spark应用中,我们已经写好了一个Spark的应用. 本文的目标是写一个基于akka的scala工程,在一个spark standalone的集群环境中运行. akka是什么? akka的作用 akka的名字是action kernel的回文.根据官方定义:akk…
目标 配置一个spark standalone集群 + akka + kafka + scala的开发环境. 创建一个基于spark的scala工程,并在spark standalone的集群环境中运行. 创建一个基于spark+akka的scala工程,并在spark standalone的集群环境中运行. 创建一个基于spark+kafka的scala工程,并在spark standalone的集群环境中运行. 集群框架图 本图主要是说明各个组件可以发布到不同的逻辑机器上. GSpark C…
其实我想找一门“具有Python的简洁写法和融合Java平台的优势, 同时又足够有挑战性和灵活性”的编程语言. Scala 就是一个不错的选择. Scala 有很多语言特性, 建议先掌握基础常用的: 变量.控制结构 .正则与模式匹配.集合.文件读写/目录遍历.高阶函数.并发 Actor 模型: 然后是面向对象特性:类.Trait.泛型.注解 .操作符重载;  最后再细细学习那些复杂不常用的特性:类型转换.编译解析等:注重挖掘根源性的思想,能够推导出其它的特性. 本文使用 Scala 实现 Jav…
Quick Start Guide: Reactive Tweets 快速入门指南: Reactive Tweets (reactive tweets 大概可以理解为“响应式推文”,在此可以测试下GFW是否还在正常工作 Twitter) A typical use case for stream processing is consuming a live stream of data that we want to extract or aggregate some other data fr…
Scala是一个运行在Java JVM上的面向对象的语言.它支持函数编程,在语法上比Java更加灵活,同时通过Akka库,Scala支持强大的基于Actor的多线程编程.具有这些优势,使得我最近很想在一个新的项目中使用Scala,但是在新项目中,抛弃我们常用的Java和C#,而直接使用一门新的语言是很困难的.这不仅包括学习新语言这个过程,未来,更为项目的长期发展和日后的开发和支持增加了很多变数.毕竟一门新的语言是不可能在很短的时间内在行业中达到Java和C#的流行度的. 那么,我们就不能在新项目…
Scala Scala是一门运行时基于JVM的编程语言,具备函数式编程和面向对象特点. 基本知识 basics 任意词均可作为符号名,对于关键词,以反引号包裹,避免使用下划线,避免带美元符的名字. 声明类型为Type的符号x的方式是先给出符号后通过冒号指定类型,x:Type,不同于java/c++等语言的Type x形式. 变量声明 variable/constant declaration 关键字 val, var, lazy val, final val val x= 0 //自动推断出类型…
️ 引言 近两年,一直在折腾用FP与OO共存的编程语言Scala,采取以函数式编程为主的方式,结合TDD和BDD的手段,采用Domain Driven Design的方法学,去构造DDDD应用(Domain Driven Design & Distributed).期间,尝试了大量的框架:业务领域主要适用Akka.Scalaz等框架,UI和基础设施方面主要适用Spring.Kafka等框架,测试则主要适用Spock.ScalaTest.Selenium等框架. 两年的折腾,不能说没有一点收获.在…
Scala Macros对scala函数库编程人员来说是一项不可或缺的编程工具,可以通过它来解决一些用普通编程或者类层次编程(type level programming)都无法解决的问题,这是因为Scala Macros可以直接对程序进行修改.Scala Macros的工作原理是在程序编译时按照编程人员的意旨对一段程序进行修改产生出一段新的程序.具体过程是:当编译器在对程序进行类型验证(typecheck)时如果发现Macro标记就会将这个Macro的功能实现程序(implementation…
2003 年,Herb Sutter 在他的文章 “The Free Lunch Is Over” 中揭露了行业中最不可告人的一个小秘密,他明确论证了处理器在速度上的发展已经走到了尽头,并且将由全新的单芯片上的并行 “内核”(虚拟 CPU)所取代.这一发现对编程社区造成了不小的冲击,因为正确创建线程安全的代码,在理论而非实践中,始终会提高高性能开发人员的身价,而让各公司难以聘用他们.看上去,仅有少数人充分理解了 Java 的线程模型.并发 API 以及 “同步” 的含义,以便能够编写同时提供安全…
我的确认为计算机学院应该开一门 Scala 的语言课程. 在这篇文章中,我会讲述为什么我会有这样的想法,在此之前,有几点我想要先声明一下: 本文无意对编程语言进行评比,我要讲述的主体是为什么你应该学习 Scala.51CTO之前曾发布过一篇 Java 程序员为何要学习Scala的文章,可能也会对你有所帮助. 目前 Scala 有两个实现方式,一种是在 JVM(Java 虚拟机)上运行,另一种是在 CLR(Common Language Runtime 的缩写,即公共语言运行库)上运行.不过,JV…
最基本的练习~: 使用伴生对象: object holder{ class Foo{ private var x = 5} object Foo{def im_in_yr_foo(f: Foo) = f.x} } import holder.Foo val x = new Foo Foo.im_in_yr_foo(x) 基本的会话: Scala的if块是个表达式.在Java中,达到类似的目的就是这种代码: String x = true ? "true string" : "…
The Neophyte's Guide to Scala Part 12: Type Classes 过去的两周我们讨论了一些使我们保持DRY和灵活性的函数式编程技术,特别是函数组合,partial function的应用,以及currying.接下来,我将会继续讨论如何使你的代码尽可能的灵活. 但是,这次我们将不会讨论怎么使用函数作为一等对象来达到这个目的,而是使用类型系统,这次它不是阻碍着我们,而是使得我们的代码更灵活:你将会学到关于 type classes 的知识. 你可能会觉得这是一…
Scala中函数为头等公民,你不仅可以定义一个函数然后调用它,而且你可以写一个未命名的函数字面量,然后可以把它当成一个值传递到其它函数或是赋值给其它变量.下面的例子为一个简单的函数字面量(参考整数字面量,3 为一整数字面量). (x :Int ) => x +1 这是个函数字面量,它的功能为+1. 符好 => 表示这个函数将符号左边的东西(本例为一个整数),转换成符号右边的东西(加1). 函数字面量为一个对象(就像3是个对象),因此如果你愿意的话,可以把这个函数字面量保持在一个变量中.这个变量…
========================Master============================== package com.scala.akka.rpc.demo2 import akka.actor.{Actor, ActorSystem, Props}import com.typesafe.config.ConfigFactory import scala.collection.mutableimport scala.concurrent.duration._ /**…
欢迎訪问我的独立博客:http://cuipengfei.me/blog/2014/10/23/scala-stream-application-scenario-and-how-its-implemented/ 如果一个场景 须要在50个随机数中找到前两个能够被3整除的数字. 听起来非常easy,我们能够这样来写: 1 2 3 4 5 6 7 8 9 def randomList = (1 to 50).map(_ => Random.nextInt(100)).toList def isDi…
Akka FSM 源代码分析 萧猛 <simonxiao@qq.com> 啰嗦几句 有限状态机本身不是啥新奇东西,在GoF的设计模式一书中就有状态模式, 也给出了实现的建议.各种语言对状态机模式都有非常多种实现的方式.我自己以前用C++和java实现过,也以前把 apache mina 源代码中的一个状态机实现抠出来单独使用. 但Akka的状态机是我见过的最简洁美丽实现.充分利用了Scala的很多先进的语言机制让代码更加简洁清晰.利用了Akka Actor实现并发.用户基本不用考虑线程安全的问…
配置eclipse出错解决 山重水复疑无路,柳暗花明又一村!经过大量的验证...终于make it. 参考博客:http://blog.csdn.net/wankunde/article/details/41843217 其中四个步骤: Scala 工程版本 该方法和Java 工程类似. 新建scala工程 1.在工程中移除自带的scala版本库 1.添加spark 库spark-assembly-1.1.0-cdh5.2.0-hadoop2.5.0-cdh5.2.0.jar 3.修改工程中的s…
Akka-http的客户端Api应该是以HttpRequest操作为主轴的网上消息交换模式编程工具.我们知道:Akka-http是搭建在Akka-stream之上的.所以,Akka-http在客户端构建与服务器的连接通道也可以用Akka-stream的Flow来表示.这个Flow可以通过调用Http.outgoingConnection来获取: /** * Creates a [[akka.stream.scaladsl.Flow]] representing a prospective HTT…