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

akka-grpc - 基于akka-httpakka-streams的scala gRPC开发工具

gRPC支持通过http/2实现protobuf格式数据交换。...对akka-http用户来说,akka-grpc具有很大吸引(相对其它gRPC开放工具),因为它是基于akka-http的,看看下面grpc服务端的接口: // Bind service handler...那么可以想象得到如果需要支持http+rpc混合模式的应用,akka-grpc将会发挥很大作用,这也是akka-http下一步的发展趋势。...所以,akka-grpc并没有提供对OAuth2规范身份验证的支持。在这个例子里我们就只能进行基本的身份证明(如店号、机器号等),但身份验证过程的安全性就不做任何加密操作了。...import akka.http.scaladsl.util.FastFuture import akka.grpc.scaladsl._ import learn.akka.grpc._ import

1.9K20

Akka-CQRS(11)- akka-http for http-web-service: Marshalling-数据序列化

前面几篇讨论了关于gRPC方式的前后端连接集成方式。gRPC也是一个开放的标准,但讲到普及性就远远不及基于http/1.1协议的web-service了。...首先,用akka-http搭建一个http server框架: import akka.actor._ import akka.stream._ import akka.http.scaladsl.Http...akka-http的数据转换机制Marshaller/Unmarshaller是通过类型转换的隐式实例来实现的,akka-http提供了多个标准类型数据转换的隐式实例,如StringMarshaller...因为akka-http提供了implicit val StringMarshaller,所以在上面的例子里我可以直接写成: complete("hello world!")...spray-json是akka-http自带默认的一个json工具库,它提供了通用的针对任何类型T的Marshaller/Unmarshaller: ToEntityMarshaller[T] 和 FromEntityUnmarshaller

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

ScalaPB(0): 找寻合适的内部系统微服务集成工具

假设我们把每种数据库的数据处理功能以微服务microservice形式提供出来的话,任何从其它集群节点对JDBC数据库微服务的调用都需要进行数据的序列化(serialization)。...曾经花了点时间研究了一下akka-http:当时我初选的所谓系统集成工具,它是通过json格式数据交换来集成系统的。json是个标准数据格式,所以可以实现异类系统之间的数据交换。...一直在考虑,如果SDP数据平台微服务之间是通过akka-http进行数据交换的形式实现集成的话,这个集成的体系内部交互效率会非常低,这是因为1、json是一种字符型的数据,占据空间较大,传输效率自然低。...实际上使用akka-http需要的门槛很高,即使akka-http已经提供了许多帮助http操作的类型,但光是理解http协议内容及httprequest,httpresponse细节、构建、使用方法就花去了我几个星期的精力...google gRPC是一种全新的RPC框架,在开源前一直是google内部使用的集成工具。gRPC支持通过http/2实现protobuf格式数据交换。

63720

akka-grpc - 应用案例

不过有些项目需求不等人,需要使用这项技术,所以研究了一下akka-grpc,写了一篇介绍。本想到此为止,继续其它项目。想想这样做法有点不负责任,像是草草收场。...毕竟用akka-grpc做了些事情,想想还是再写这篇跟大家分享使用kka-grpc的过程。 我说过,了解akka-grpc的主要目的还是在protobuf的应用上。这是一种高效率的序列化协议。...akka-grpc应用一般从IDL文件里消息类型和服务函数的定义开始,如下面这个.proto文件示范: syntax = "proto3"; import "google/protobuf/wrappers.proto...无法提供凭证。") case _ => throw new Exception("身份验证失败!无法提供凭证。")...客户端设置可以在配置文件中定义: akka { loglevel = INFO grpc.client { "com.datatech.pos.abs.Services" {

84410

Akka-CQRS(9)- gRPC,实现前端设备与平台系统的高效集成

有两种方式可以实现需要的网络连接:Restful-api, gRPC。由于gRPC支持http/2通讯协议,支持持久连接方式及双向数据流。...gRPC是google公司的标准,基于protobuffer消息:一种二进制序列化数据交换机制。gRPC的优势在这里就不再细说,读者可以参考前面有关gRPC的讨论博文。 下面是系统结构示意图: ?...这篇讨论焦点集中在gRPC的server,client两头的具体实现。刚才提过,gRPC是google公司的开源库,同时还提供了各种语言的客户端,有:java, C++,python,go ......现在市面可供选择的gRPC-scala-客户端有scalaPB和akka-grpc两个,akka-grpc是基于akka-stream和akka-http构建的,按理来说会更合适,但由于还是处于preview...首先,gRPC是通过protobuffer进行序列化数据传输的。

1.1K20

Akka-CQRS(0)- 基于akka-cluster的读写分离框架,构建gRPC移动应用后端架构

上一篇我们讨论了akka-cluster的分片(sharding)技术。在提供的例子中感觉到akka这样的分布式系统工具特别适合支持大量的带有内置状态的,相对独立完整的程序在集群节点上分布运算。...这种资源分享的模式恰恰是akka-cluster-sharding的强项。剩下海量并发的数据库操作,就可以通过akka-CQRS框架来应对了。...另外,由于移动前端和后台系统都是企业内部应用系统,可以用gRPC模式替代传统主流的HTTP/1.0协议作为系统主要集成方式。...gRPC方式是基于HTTP/2.0协议上的,可以实现点对点的持续连接,支持双向数据流操作,有效解决了request/response模式带来的效率问题。...我们在前面的博客里已经构建了基于gRPC,多分布式数据库的数据流编程框架,可以直接采用。google的移动应用编程语言dart2也是支持gRPC的,从整体系统实现的可行性方面应该不会有什么问题了。

59820

更改许可后,Akka 分支 Pekko 进入 Apache 孵化器

事实上,Pekko 是 Akka 项目的一个分支。不久前, Akka 的许可证从 Apache 2 更改为 Business Source License 1.1,Pekko 作为新的分支从中拉出。...根据介绍,Pekko 项目提供了一套工具和框架,涵盖了分布式并发系统的复杂问题空间。...目前还有一些现有的 Apache 项目,例如 Flink,它们在不同程度上使用了 Akka,因此让 Pekko 成为 Apache 的一部分给了这些其他 Apache 项目的信心。...在此之上,Pekko 提供了一套丰富的构建在 Actors 之上的库来解决现代问题,包括: 流:遵循响应式标准的完全双向背压流 HTTP:建立在流之上的全流式 HTTP 客户端 / 服务器,还提供高可用性...Web 服务所需的预期工具(例如连接池) 连接器:一组丰富的连接器集,用于构建在流之上的各种数据库、消息传递、持久性服务 grpc:一个 gRPC 服务器 / 客户端 投影(projection):提供

1.1K20

Akka-CQRS(13)- SSLTLS for gRPC and HTTPS:自签名证书产生和使用

前一篇博客里我们尝试实现了gRPC ssl/tls网络连接,但测试时用的证书如何产生始终没有搞清楚。现在akka-http开发的ws同样面临HTTPS的设置和使用问题。...数字证书的申请、签发和验证流程如下: 1) 服务⽅ S 向第三⽅方机构CA提交公钥、组织信息、个⼈信息(域名)等资料提出认证申请 (不需要提供私钥) 2) CA 通过各种手段验证申请者所提供信息的真实性...看了一下akka-http关于server端HTTPS设置的例子,证书是嵌在HttpsConnectionContext类型里面的。...import akka.http.scaladsl.server.{ Route, Directives } import akka.http.scaladsl.{ ConnectionContext..., HttpsConnectionContext, Http } import akka.stream.ActorMaterializer import akka.http.scaladsl.Http

1.4K60

Akka(28): Http:About Akka-Http

Akka-http正是这么一套能高效解决以上问题的编程工具。Akka-http是一套支持Tcp传输标准及Http标准数据的编程工具。  ...Akka-http分别提供了服务端的Server-Side-Api和客户端的Client-Side-Api来帮助编程人员简化编程。两个Api都包括了对Http消息的构建、解析、传输帮助函数。...Akka-httpHttp消息的各组成部分进行了建模:用class来代表数据结构。然后在各类的伴生对象中提供大量的帮助函数(helper)来辅助该类型的构建、匹配等操作。...Uri的操作也是比较麻烦的,所以Akka-http提供了Uri类型: /** * An immutable model of an internet URI as defined by http:/...由于Akka-http是基于Akka-stream功能之上的,它支持Http数据的流操作,也就是说它可以把一个Stream-Source放在Http消息的数据里,然后Akka-http的Client-Side-Api

1.1K70

PICE(1):Programming In Clustered Environment - 集群环境内编程模式

提供了下面这个示意图: ? 上图是我正在探讨的“现代企业I.T综合数据平台”网络结构。...所以只有通过基于http的一种服务来向其它节点提供数据。我首先考虑了akka-http,在准备过程中接触了gRPC,发现gRPC更加适合跨jvm的程序控制,主要因为gRPC支持双向的流控制。...我们在前面几个章节里已经实现了gRPCakka-stream的集成:这样我们就可以通过akka-stream实现一种互动的数据交换。所以:streaming就是标题上面提到的编程模式了。...import akka.NotUsed import akka.stream.scaladsl.Flow import grpc.jdbc.services._ import java.util.logging.Logger...akka.stream.scaladsl._ import akka.NotUsed import akka.actor.ActorSystem import akka.stream.

1.3K30

分布式系统中的必备良药 —— RPC

二、成熟的解决方案   1.Google.gRpc(https://github.com/grpc/grpc)     大名鼎鼎的Google出品的RPC框架,基于Http2设计,支持双向流、消息头压缩...、单 TCP 的多路复用、服务端推送等特性,这些特性使得 gRPC 在移动端设备上更加省电和节省网络流量。...【图1】      但是遗憾的是Apache在.Net下提供的实现并不是上面的5种模式,仅仅3种(TSimpleServer、TThreadPoolServer、TThreadedServer),特别是在...Java下大规模宣传的NIO模式没有提供实现。   ...一般用Akka(有.net版本 Akka.net)和它对标,都是基于Actor模型设计的分布式框架,顺手附上一篇经典的对比文章:https://github.com/akka/akka-meta/blob

69810

比较.NET 平台下 四种流行Actor框架

它有一个开源的核心和作为商业插件提供的工具和服务。 为另一个框架的近似移植,Akka.Net带来了原版的所有好主意,但也带来了有争议的设计决定(例如HOCON配置)。...特别是,Proto.Actor使用了带有protobuf的gRPC。它还使用现有的集群提供者,如Consul、Zookeeper,甚至是原生的Kubernetes APIs。...幸运的是,提供你自己的持久化实现很容易。 Dapr Dapr是另一个由微软支持的开源项目。它是一个更广泛的框架,提供服务发现、服务间安全可靠的通信以及存储和pub-sub功能的抽象。...该框架本身是用Go编写的,但它运行在实际应用的旁边(例如在sidecar容器中),并通过HTTPgRPC调用与之进行通信。这很有趣,因为你可以用任何技术建立一个基于行为体的解决方案。...缺点 sidecar和应用程序之间的HTTP通信的开销。 没有明确支持传统的角色层次结构 复杂的部署结构,需要多个组件,例如在Kubernetes中运行,包括用于配置的CRD。

8410

akka-typed(9) - 业务分片、整合,谈谈lagom, 需要吗?

这是个akka-cluster-sharding模式。数据中台api是向所有内部系统以及一些特定的外部第三方系统开放的,用http标准协议支持各系统与数据后台的连接也是合理的。...这个akka-http, akka-grpc可以胜任。然后各系统之间的集成可以通过一个流运算工具如kafka实现各聚合根之间的交互连接。 似乎所有需要的工具都齐备了,其中akka占了大部分功能。...play我不太熟悉,想深入了解一下用akka-http替代的可行性,不过看来不太容易。...在我看来:服务接入方面由于涉及身份验证、使用权限、二进制文件类型数据交换等使用akka-http,akka-grpc会更有控制力。...前端接入是基于akka-http的,如下: object CrmRoute extends LogSupport { def route(entityRef: EntityRef[CrmWorker.Command

77720

【Rust日报】2019-10-03 rust-lang 主仓库突破 10,0000 次 commit

://github.com/clux/kube-rs 了解更多请看 reddit 讨论 Tonic: gRPC 将支持 async/await Tonic 是一个基于 http/2 的 gRpc 实现,...Tonic 这个库是为了提供对异步/等待的一流支持,并作为使用 Rust 编写的生产系统的核心构建块。 Tonic 的目标是提供更多开箱即用的工具。它已经支持许多特性,并计划支持更多特性!...以下是功能列表: 纯 rust 实现(openssl 例外) 通过 tonic-interop 测试互操作性 双向流 自定义元数据 功能齐全的 HTTP/2 客户端和基于 hyper 的服务器 基于 openssl...或 rustls 支持的 TLS 负载平衡塔供电 可靠性特性,如超时、速率限制、并发控制等 gRPC 拦截器 ......还有更多,了解详情请点击 client 端示例: let mut client = GreeterClient::connect("http://[::1]:50051")?

69320
领券