akka

Akka HTTP 非官方中文翻译

谁说我不能喝 提交于 2020-04-06 20:54:06
Akka HTTP 10.1.11 非官文中文翻译在线阅读地址: 中文文档:Akka HTTP Unofficial Chinese 码云镜像:Akka HTTP Unofficial Chinese 翻译难免有错误或表达不够清楚的地方。因此,Akka HTTP 中文版翻译采用了基于原始 Paradox 的 md 文件对照翻译的形式,英文原文将显示在中文译文的上方。翻译的源码内容可以在 https://github.com/yangbajing/akka-http 仓库的 docs-zh 子项目找到。 欢迎大家指出或改进不好的地方,一起完善并在未来跟进官方版本的更新。欢迎随时编辑并提交 Pull Request。 本次翻译完成了 Scala API 文档和大部分 Java API 文档的中文译文,但有关具体指令(Directives)使用说明的内容还未翻译。接下来除了继续完成剩余的 Java API 文档翻译以外,也将考虑优先挑选翻译常用及重要的指令,另外某些代码示例的注释也会考虑进行中文翻译。 Akka HTTP 模块组在 akka-actor 和 akka-stream 的基础上实现了全HTTP栈( 服务器-和客户端 )的功能。它并不是一个 web 框架,而是一个更通用的工具箱,以便生成提供或消费基于 HTTP 的网络服务。虽然与浏览器进行互动是其功能的组成部分,但这个并不是

Akka Actor: 从最简单的例子开始

梦想的初衷 提交于 2020-03-26 00:49:50
3 月,跳不动了?>>> Akka 是什么?它提供了 JVM 上的 Actor 编程模型 -- 同时兼顾了并发与分布式。它由 Scala 编写的,替代了 Scala 本身的 Actor。Actor 视线程为重量级的资源,能够以少量的内存胜任更高的并发,类似的东西有纤程,协程。有一个数据对比是同样的 1GB 内存,可以创建 2.7M 个 Actor, 而线程只能创建 4096 个,仅供参考,当然 Java 也是会基于线程池来执行的。 Actor 增加了程序的灵活性,并减轻了复杂度(标准的赞美之辞)。 所谓 Action 编程模型兼顾并发与分布,是由于让你编程时可以不用考虑线程,线程配置成为部署的范畴; Actor 之间通信只能发送异步消息,Actor 可以分布在同一 JVM, 不同 JVM, 或是不同物理机器上。 因为 《Akka IN ACTION》中提供了第一个例子起点着实有点高,所以网上找来了一个了解 Akka Actor 的最简单例子,来自于 Simple Scala Akka Actor examples (Hello, world examples) 。并非纯属翻译,主要是为了练手,所以不完全一致: 阅读全文 >> 来源: oschina 链接: https://my.oschina.net/u/2791/blog/3211579

使用Cassandra和Spark 2.0实现Rest API服务

寵の児 提交于 2020-03-24 10:51:31
3 月,跳不动了?>>> 阿里云智能数据库事业部 OLAP 平台团队现向 2021 届海内外院校应届毕业生(毕业时间在2020年11月-2021年10月之间)招聘大数据系统工程师,有机会转正,有意请加 iteblog 微信内推。   在这篇文章中,我将介绍如何在 Spark 中使用Akka-http并结合 Cassandra 实现REST服务,在这个系统中 Cassandra 用于数据的存储。   我们已经见识到 Spark 的威力,如果和 Cassandra 正确地结合可以实现更强大的系统。我们先创建一个 build.sbt 文件,内容如下: name := "cassandra-spark-akka-http-starter-kit" version := "1.0" scalaVersion := "2.11.8" organization := "com.iteblog" val akkaV = "2.4.5" libraryDependencies ++= Seq( "org.apache.spark" % "spark-core_2.11" % "2.0.0", "org.apache.spark" % "spark-sql_2.11" % "2.0.0", "com.typesafe.akka" %% "akka-http-core" % akkaV, "com

Learn Orleans 01 - 初探

蓝咒 提交于 2020-03-23 01:46:54
Orleans的官方定义是“用于构建健壮的,可扩展的分布式应用程序的跨平台框架”。它是Actor模型的.NET实现。 本章主要记录一些基础概念。 Actor模型 Actor模型并不是什么新的概念,它由Carl Hewitt在1973年提出,Gul Agha在1986年发表技术报告“Actors: A Model of Concurrent Computation in Distributed Systems”。 -- https://blog.csdn.net/gulianchao/article/details/7249117 Actor模型是一个概念模型,用于处理并发计算。它定义了一系列系统组件应该如何动作和交互的通用规则,最著名的使用这套规则的编程语言是 Erlang 。 一个Actor指的是一个最基本的计算单元。它能接收一个消息并且基于其执行计算。 面向对象思想通过隐藏类的私有方法来实现封装,仅允许外部调用公有方法来使用类。这一点在Actor中,给出了另外的理解。Actor外部仅能通过消息调用,Actor内部的实现对外不可见。 Actors一大重要特征在于actors之间相互隔离,它们并不互相共享内存。一个actor能维持一个私有的状态,并且这个状态不可能被另一个actor所改变。 光有一个actor是不够的,多个actors才能组成系统

Akka和java内存模型 22

爷,独闯天下 提交于 2020-03-18 18:39:55
3 月,跳不动了?>>> 原文:https://doc.akka.io/docs/akka/2.5/general/jmm.html 使用Lightbend平台(包括Scala和Akka)的一个主要好处是它简化了编写并发软件的过程。本文讨论Lightbend平台,特别是Akka如何在并发应用程序中使用共享内存。 Java内存模型 在Java 5之前,Java内存模型(JMM)定义不明确。当多个线程访问共享内存时,有可能获得各种奇怪的结果,例如: 一个线程没有看到其他线程写的值:一个可见性问题 一个线程观察其他线程的“impossible”行为,这是由于指令未按预期顺序执行引起的:指令重新排序问题。 随着Java 5中JSR 133的实现,很多这些问题都得到了解决。JMM是一组基于“happens-before”关系的规则,它限制一个存储器访问必须在另一个存储器访问之前发生。这些规则的两个例子是: 监视器锁定规则:锁的释放在一系列要求获取同一个锁之前。 volatile变量规则:volatile变量的写入在一系列查询同一个volatile变量前。 尽管JMM看起来很复杂,但规范试图在易用性和编写高性能和可伸缩并发数据结构的能力之间找到平衡点。 Akka和java内存模型 使用Akka中的Actors实现,多个线程可以通过两种方式在共享内存上执行操作: 如果消息被发送给一个Actor

Akka Actor_Future的使用

假如想象 提交于 2020-03-18 18:38:29
3 月,跳不动了?>>> Akka Actor_Future的使用 常见的是通过Actor的tell方法给另外一个actor发送消息,但是actor 和 future怎么交互,发送消息,如下, Future<Object> future = Patterns.ask(a, "are you ready?", timeout); 做了一个Future 和 Actor 结合使用的例子,如下, package com.usoft; import akka.actor.ActorRef; import akka.actor.ActorSystem; import akka.actor.Props; import akka.actor.UntypedActor; import akka.event.Logging; import akka.event.LoggingAdapter; import akka.pattern.Patterns; import akka.util.Timeout; import scala.concurrent.Await; import scala.concurrent.Future; import scala.concurrent.duration.Duration; /** * Created by liyanxin on 2015/1/8. */

Akka-Actor之Hello-World

99封情书 提交于 2020-03-18 18:34:55
3 月,跳不动了?>>> Akka-Actor之Hello-World actor是一种并发模型,akka是使用scala语言实现这种并发模型的一个库。在akka中,消息在不同的actor之间传递,以此来驱动任务的执行,这和一般的方法调用的方式有明显的区别。 每个actor都有自己的“地址”,这个地址可以用来唯一的标示一个actor实例,每个actor都有一个个“邮箱”,希望与该actor通信的其他actor将消息根据其“地址”发送其邮箱,邮箱可以看作是一个消息队列,actor会从其“邮箱”取出消息,根据不同的消息值做不同的逻辑处理。 下面通过例子代码来学习Actor,在这之前我们需要新建一个maven项目,并引入akka依赖: <dependency> <groupId>com.typesafe.akka</groupId> <artifactId>akka-actor_2.13</artifactId> <version>2.6.4</version> </dependency> 注意,最开始akka的actor是untyped的,后来较新版的akka出了typed的,上面的依赖是untyped的,这里学习的也是untyped的。对于typed的,依赖是: <dependency> <groupId>com.typesafe.akka</groupId> <artifactId

Scala语言学习四-akka actor

半城伤御伤魂 提交于 2020-03-10 18:22:32
并发编程模型 Akka -并发编程框架 (不需要关注并发情况底层的东西,易开发易维护) Akka 介绍 写并发程序很难。 程序员不得不处理线程、 锁和竞态条件等等, 这个过程很容易出错, 而且会导致程序代码难以阅读、 测试和维护。 Akka 是 JVM 平台上构建高并发、 分布式和容错应用的工具包和运行时。 Akka 用 Scala 语言写成, 同时提供了 Scala 和 JAVA 的开发接口。 Akka 中 Actor 模型 Akka 处理并发的方法基于 Actor 模型。 在基于 Actor 的系统里, 所有的事物都是 Actor, 就好像在面向对象设计里面所有的事物都是对象一样。 但是有一个重要区别, 那就是 Actor 模型是作为一个并发模型设计和架构的, 而面向对象模式则不是。 Actor 与 Actor 之间只能通 过消息通信。 对并发模型进行了更高的抽象 异步、 非阻塞、 高性能的事件驱动编程模型(就是不会一个卡主另一个) 轻量级事件处理(1GB 内存可容纳百万级别个 Actor) 为什么 Actor 模型是一种处理并发问题的解决方案? 处理并发问题就是如何保证共享数据的一致性和正确性,为什么会有保持共享数据正确性这个问题呢? 无非是我们的程序是多线程的, 多个线程对同一个数据进行修改, 若不加同步条件, 势必会造成数据污染。那么我们是不是可以转换一下思维,

How to wait for Akka actor to start during tests?

旧巷老猫 提交于 2020-03-06 04:59:08
问题 I have a test that needs to make an assertion on something that happens during an actor's preStart() , but I haven't figured out how to wait until that happens, and sometimes it doesn't happen before the assertion is made (and sometimes it does). I have tried this: EventFilter.debug(start = "started", occurrences = 1).assertDone(10.seconds) but I get an error message when using it: java.lang.AssertionError: assertion failed: 1 messages outstanding on DebugFilter(None,Left(started),false) 回答1:

阿里资深架构带你玩转Java高并发

笑着哭i 提交于 2020-03-04 16:29:32
【推荐】2020年最新Java电子书集合.pdf(吐血整理) >>> 前言 关于Java与并行 由于单核CPU的主频逐步逼近极限,多核CPU架构成为了一种必然的技术趋势。所以,多线程并行程序便显得越来越重要。并行计算的一个重要应用场景就是服务端编程。可以看到,目前服务端CPU的核心数已经轻松超越10核心,而Java显然已经成为当下最流行的服务端编程语言,因此熟悉和了解基于Java的并行程序开发有着重要的实用价值。 如果还没有购买又需要这本【实战Java高并发程序设计】书籍文档的话帮忙转发一下然后再关注我私信回复“电子书”免费获取吧! 适合阅读人群 虽然本书力求通俗,但要通读本书并取得良好的学习效果,要求读者需要具备基本的Java知识或者一定的编程经验。因此,本书适合以下读者: ●拥有一定开发经验的Java平台开发人员(Java. Scala, JRuby等) ●软件设计师、架构师 ●系统调优人员 ●有一定的Java编程基础并希望进一步加深对并行的理解的研发人员 本书的体系结构 本书立足于实际开发,又不缺乏理论介绍,力求通俗易懂、循序渐进。本书共分为8章。 第1章 主要介绍了并行计算中相关的一些基本概念,树立读者对并行计算的基本认识:介绍了两个重要的并行性能评估定律,以及Java内存模型JMM. 第2章 介绍了Java并行程序开发的基础,包括Java中Thread的基本使用方法等