首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Akka(40): Http:Marshalling reviewed - 传输数据序列化重温

上篇我们讨论了Akka-http的文件交换。由于文件内容编码和传输线上数据表达型式皆为bytes,所以可以直接把文件内容存进HttpEntity中进行传递。...Akka-http提供了基础数据类型到MessageEntity转换的隐式实例,如下: trait PredefinedToEntityMarshallers extends MultipartMarshallers...Akka-http是通过RootJasonFormat[T]来提供转换隐式实例的: /** * A special JsonFormat signaling that the format produces...这是因为Akka-http提供的是ToResponseMarshaller[Source[T,M]]的隐式实例: implicit def fromEntityStreamingSupportAndByteStringMarshaller...下面是本次讨论的示范源代码: import akka.actor._ import akka.stream.scaladsl._ import akka.http.scaladsl.marshalling

1.2K80
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Akka(41): Http:DBTable-rows streaming - 数据库表行交换

    在上期讨论我们提到过这种转换其实是ROW->Json->ByteString或者反方向的转换,在Akka-http里称之为Marshalling和Unmarshalling。...Akka-http的Marshalling实现采用了type-class编程模式,需要为每一种类型与Json的转换在可视域内提供Marshaller[A,B]类型的隐式实例。...下面是这部分客户端的完整代码:  import akka.actor._ import akka.stream._ import akka.stream.scaladsl._ import akka.http.scaladsl.Http...Akka-http在客户端没有提供像complete这样的强大的自动化功能。我们可能需要自定义并提供像ToRequestMarshaller[Source[T,_]]这样的隐式实例。...下面是本次讨论的示范代码: 服务端: import akka.actor._ import akka.stream._ import akka.stream.scaladsl._ import akka.http.scaladsl.Http

    1.5K70

    Akka(35): Http:Server side streaming

    所以,Akka-http的核心功能应该是数据交换的实现了:应该能通过某种公开的数据格式和传输标准比较方便的实现包括异类系统之间通过网上进行的数据交换。覆盖包括:数据编码、发送和数据接收、解析全过程。...Akka-http提供了许多网上传输标准数据的概括模型以及数据类型转换方法,可以使编程人员很方便的构建网上往来的Request和Response。...Akka-http是基于Akka-stream开发的:不但它的工作流程可以用Akka-stream来表达,它还支持stream化的数据传输。...简单来说:Akka-http的消息数据内容HttpEntity可以支持理论上无限长度的data-stream。...首先需要在implicit-scope内提供Marshaller[ByteString,MessageEntity]类型的隐式实例: trait JsonCodec extends Json4sSupport

    82850

    geotrellis使用(六)Scala并发(并行)编程

    其次还有强大的for表达式、偏函数、隐式转换等,下面主要为大家介绍Scala并发(并行)编程。...首先安装SBT,很简单,只需要下载安装包即可(http://www.scala-sbt.org/release/docs/Installing-sbt-on-Windows.html),具体安装过程以及配置等...2、akka       akka是一个简单易用的Scala并发编程框架(网址:http://akka.io/),其宗旨就是"Build powerful concurrent & distributed...引入akka只需要在build.sbt文件中添加在SBT操作一节中介绍的代码即可,但是要根据自己的Scala版本以及要使用的akka版本进行修改。添加完之后IDEA会自动去下载akka的actor包。..." 4 } 5 } 四、总结       本文为大家简单介绍了scala基础、sbt简单操作、原生actor、akka的并发以及并行方式actor,这些是我在学习Geotrellis的过程中学习基础知识的一部分经验总结和梳理

    1.4K50

    Akka(32): Http:High-Level-Api,Route exception handling

    Akka-http routing DSL在Route运算中抛出的异常是由内向外浮出的:当内层Route未能捕获异常时,外一层Route会接着尝试捕捉,依次向外扩展。...Akka-http提供了ExceptionHandler类来处理Route运算产生的异常: trait ExceptionHandler extends ExceptionHandler.PF {...我们可以通过下面的方法来定制异常处理的方式: 自定义ExceptionHandler,然后: 1、把Exceptionhandler的隐式实例放在顶层Route的可视域内(implicit scope)...} } } 下面是本次讨论中的示范源代码: import akka.actor._ import akka.http.scaladsl.Http import akka.http.scaladsl.model...._ import akka.http.scaladsl.server._ import akka.http.scaladsl.server.Directives._ import akka.stream

    67860

    阅读源码|Spark 与 Flink 的 RPC 实现

    代码只是将思考的结果转换为实际可用的软件的手段,思考的结果或者说解决问题的方法才是重要的内容。 分布式计算系统的分布式特性决定了设计过程中必然会考虑节点间的通信问题,即笼统的 RPC 需求。...关于更多 Actor Model 的概念性和介绍性资料,可以参考的资料有 Akka 的官方文档和《反应式设计模式》等等。...对于业务软件来说,Akka Model 过于底层,如果要利用它带来的好处通常会直接使用 Akka Streams 和 Akka HTTP 等上层建筑;对于其他分布式系统来说,主要有以下两个问题。...Flink 的代码不能像 Spark 那样按照不同的类型来看,因为类的实现可能涉及到反射访问另一个类,这种情况下按照功能点来阅读代码会更好理解。 我们首先看到上面抽象的构造过程。...Flink 的 RPC 实现把一个简单的 tell 和 ask 的模型,先是搞成 RMI 导致性能堪忧并且实现高度依赖难以理解、维护和扩展的反射,再是暴露出多个功能重复的接口,活生生的把 Java 写成了

    1.2K20

    使用Akka HTTP构建微服务:CDC方法

    同时考虑到所有HTTP元素必须匹配(方法,url,标题,正文和查询) 用于验证消费者契约的实际测试的定义: 此代码将针对以前的方案运行,虚拟服务器将响应 交互部分中定义的唯一HTTP请求(如果响应为deined...并且我使用了隐式声明依赖关系,但可以显性地提高代码的可读性。...这非常简单,两个参与者(提供者和消费者)的定义与可能的交互。..._中看到此对象的导入:; 还需要导入其中import spray.json._提供转换的所有功能; 在这种情况下,我正在使用toJson寻找它将要转换的特定对象的协议(或格式)的隐式定义。...你可以看到dao在trait中被实例化,如果逻辑变得更复杂,我建议将它作为必需的参数(隐式或类属性)移动,以便从外部注入它们。

    7.5K50

    少年:Scala 学一下

    还可以在赋值语句中直接使用,并且与for关键字配合使用 隐式系统 scala语言比较特有的特征,只是简简单单的一个implicit关键字 三个基本的语义,隐式值、隐式视图、隐式类,隐式传递 隐式值与隐式视图的组合...隐式触发条件,这些使得隐式既简单又神秘 隐式只是把基础上编译器的技术暴露给开发人员去使用,如 Java语言中的类型转换 JavaScript语言中的:console.info(-"1" + 1...) 、console.info("1" + 1) 单独使用隐式,简单而功能有限。...学习 Scala 概述 主要说了下Scala语言的由来,环境的搭建,以及简单的scala代码底层对应*.class 文件反编译后结构。...非常好,第五章到第七章,隐式、类型系统、隐式与类型系统的结合,是这本书的重点和精化,我看了很多遍,需要思考、实践、逐渐理解 韩顺平Scala280讲 ? 韩老师的讲解通俗易懂,受益匪浅。

    73410

    restapi(6)- do it the functional way, 重温函数式编程

    本来作者的目的很简单:前端通过httprequest提交了一张图片及产品编号pid、系统读取MongoDB查找相同pid的数量count,然后将图片和描述包括count写入数据库并在reponse里返回...把一个简单功能的实现搞的这么复杂都是我的错,可能受OOP荼毒太深。这次希望静下心来用函数式编程模式把这段代码从新实现一次,示范一下函数式编程的代码精炼和高雅特点。...现在我们可以用隐式转换implicit conversion方式进行代码简化重用: import monix.execution.Scheduler.Implicits.global implicit...逻辑思路上没问题,不过这样的做法是典型的行令式编程模式。在函数式编程模式里,阶段性的运算结果是在包嵌在Monad中的。Monad本身只是一个运算计划,只有真正运算时才能获取结果。...._ import akka.http.scaladsl.model._ import akka.http.scaladsl.coding.Gzip import akka.stream.scaladsl

    95030

    04.Scala:高阶函数、隐式转换

    Scala:高阶函数、隐式转换 课程目标 理解高阶函数的概念(作为值的函数、匿名函数、闭包、柯里化) 掌握隐式转换和隐式参数 掌握Akka并发编程框架 1....1.3 柯里化 在scala和spark的源代码中,大量使用到了柯里化。...可以简单认为,就是可以访问不在当前作用域范围的一个函数。...隐式转换和隐式参数 隐式转换和隐式参数是scala非常有特色的功能,也是Java等其他编程语言没有的功能。我们可以很方便地利用隐式转换来丰富现有类的功能。...后面在编写Akka并发编程、Spark SQL、Flink都会看到隐式转换和隐式参数的身影。 2.1 定义 所谓隐式转换,是指以implicit关键字声明的带有单个参数的方法。

    95020

    Scala:高阶函数、隐式转换(四)

    Scala:高阶函数、隐式转换 课程目标 理解高阶函数的概念(作为值的函数、匿名函数、闭包、柯里化) 掌握隐式转换和隐式参数 掌握Akka并发编程框架 1....1.3 柯里化 在scala和spark的源代码中,大量使用到了柯里化。...可以简单认为,就是可以访问不在当前作用域范围的一个函数。...隐式转换和隐式参数 隐式转换和隐式参数是scala非常有特色的功能,也是Java等其他编程语言没有的功能。我们可以很方便地利用隐式转换来丰富现有类的功能。...后面在编写Akka并发编程、Spark SQL、Flink都会看到隐式转换和隐式参数的身影。 2.1 定义 所谓隐式转换,是指以implicit关键字声明的带有单个参数的方法。

    58520

    编码修炼 | 快速了解Scala技术栈

    而Scala程序员,却早就在享受lambda、高阶函数、trait、隐式转换等带来的福利了。 Java像是一头史前巨兽,它在OO的方向上几乎走到了极致,硬将它拉入FP阵营,确乎有些强人所难了。...我并没有真正在项目中使用过Finagle,大家可以到它的官方网站获得更多消息。 对于分布式的支持,绝对绕不开的框架还是AKKA。...许多框架在分布式处理方面也选择了使用AKKA,例如Spark、Spray。...我个人认为,在进行Web开发时,完全可以放弃Web框架,直接选择AngularJS结合Spray和AKKA,同样能够很好地满足Web开发需要。...Spray对HTTP请求的内部处理机制实则是基于Akka-IO,通过IO这个Actor发出对HTTP的bind消息。例如: IO(Http) !

    2K60

    PowerJob 原理剖析之 Akka Toolkit

    上面这段文字摘抄自 Akka 官网(akka.io),翻译成中文也就是:“Akka 是一个为 Java 和 Scala 构建高并发、分布式和弹性消息驱动应用程序的工具包”。...akka-http:HTTP 组件,现代、快速、异步、流媒体优先的 HTTP 服务器和客户端。 akka-cluster:集群组件,包括集群成员管理、弹性路由等。...发送一个 HTTP 请求,用高层封装库其实也就差不多三行代码的样子,你这用个 Akka 前置准备工作还那么多,说好的简单呢?...如果使用现有协议如 HTTP,发送也许 3 行代码能搞定,但接收一定远不止三行。...同时,Akka 已经帮你搞定了各种异常后的处理。也就是说,使用 akka-remote,可以让数据接收方非常的简单,只专注逻辑的实现。 其次,在分布式环境中,通讯往往不是单向的。

    1.4K20

    我们的技术实践

    对于隐式参数或支持类型转换的隐式调用,应尽量让import语句离调用近一些;对于增加方法的隐式转换(相当于C#的扩展方法),则应将import放在文件头,保持调用代码的干净 在一个模块中,尽量将隐式转换定义放到...关键字 AKKA的技术实践 我们产品用的AKKA并不够深入,仅仅使用了AKKA的基本功能。...分析的结果则以Future的方式返回给Spray。 几条AKKA实践的小原则: actor接收的消息可以分为command和event两类。...因为采用了之前介绍的元数据架构,这个修改主要影响到了REST路由层和应用服务层的部分代码; 遵循Redux的三大基本原则; Redux的三大基本原则 单一数据源 State 是只读的 使用纯函数来执行修改...;建议将这些隐式定义放到Object中,交由Router引用,而不是定义为trait去继承。

    1.2K50
    领券