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

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

由于jdbc数据库不支持分布式运算模式,所以从数据交换角度上它与集群环境是脱离:jdbc数据不可以从集群任何节点获取。所以只有通过基于http一种服务来向其它节点提供数据。...我首先考虑了akka-http,在准备过程接触了gRPC,发现gRPC更加适合跨jvm程序控制,主要因为gRPC支持双向流控制。...首先示范一个传统Unary(request/response)模式实现:从客户端向服务端发出一个Query指令、服务端按指令从JDBC数据库返回DataRows。...下面是.proto文件对应IDL定义: message JDBCDataRow { string year = 1; string state = 2; string county = 3;..."scalapb/scalapb.proto"; package grpc.jdbc.services; option (scalapb.options) = { // use a custom

1.3K30

Akka-Cluster(5)- load-balancing with backoff-supervised stateless computation - 无状态任务集群节点均衡分配

分布式程序运算是一种水平扩展(scale-out)运算模式,其核心思想是能够充分利用服务器集群每个服务器节点计算资源,包括:CPU、内存、硬盘、IO总线等。...当然,任务分派是通过算法实现,包括所有普通routerrouting算法:round-robin, random等等。 ...对正常停止动作,PoisonPill, context.stop作用:重新构建新实例并启动。 OnFailure:不响应child-actor正常停止,任其终止。..."scalapb/scalapb.proto"; option (scalapb.options) = { // use a custom Scala package name // package_name...import "google/protobuf/any.proto"; import "scalapb/scalapb.proto"; option (scalapb.options) = {

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

ScalaPB(2): 在scala中用gRPC实现微服务

gRPC是google开源提供一个RPC软件框架,它特点是极大简化了传统RPC开发流程和代码量,使用户可以免除许多陷阱并聚焦于实际应用逻辑。...在一个.proto字符类文件中用IDL来描述用户自定义数据类型和服务 2、用protoc编译器编译文件并产生自定义数据类型和服务api源代码 3、在server端实现.proto定义服务函数 4...在本篇讨论我们先示范Unary-service编程流程,下面是.proto文件内容: syntax = "proto3"; import "google/protobuf/wrappers.proto...通过对.proto文件进行编译后产生文件包括一个HelloWorldGrpc.scala文件,里面提供了一些重要api: trait HelloWorld -> 用于实现HelloWorld服务trait...Future.successful(Greeting(message = s"Hello $greeter, ${request.msg}")) } } 可以看到我们直接使用了IDL描述自定义数据类型

1.8K30

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

前面我们完成了一个CQRS模式数据采集(录入)平台。可以预见:数据产生是在线下各式各样终端系统,包括web、桌面、移动终端。...下面是这个例子.proto定义文件: syntax = "proto3"; import "google/protobuf/wrappers.proto"; import "google/protobuf.../any.proto"; import "scalapb/scalapb.proto"; option (scalapb.options) = { // use a custom Scala package...google/protobuf/any.proto"; import "scalapb/scalapb.proto"; option (scalapb.options) = { // use a...但NettyChannelBuilder还具备更多设置参数,ssl/tls设置。 3、还有:因为客户端是按照顺序来发送操作指令,每发一个指令,等待返回结果后才能再发下一个指令。

1.2K20

ScalaPB(1): using protobuf in akka

我们上次提过:由于java-object-serialization会把一个java-object类型信息、实例值、它所包含其它类型描述信息等都写入序列化结果里,所以会占据较大空间,传输数据效率相对就低了...在akka中使用自定义序列化方法包括下面的这些步骤: 1、在.proto文件对消息类型进行IDL定义 2、用ScalaPB编译IDL文件并产生scala源代码。...这些源代码包括了涉及消息类型及它们操作方法 3、在akka程序模块import产生classes,然后直接调用这些类型和方法 4、按akka要求编写序列化方法 5、在akka.conf文件里...actor.serializers段落定义akka默认serializer 下面的build.sbt文件里描述了程序结构: lazy val commonSettings = Seq( name...注意依赖项scalapb.runtime。PB.targets指明了产生源代码路径。

1.6K30

PICE(6):集群环境里多异类端点gRPC Streaming - Heterogeneous multi-endpoints gRPC streaming

gRPC Streaming操作对象由服务端和客户端组成。在一个包含了多个不同服务集群环境可能需要从一个服务里调用另一个服务端提供服务。...如果run这个stream得到结果应该是一个描述完整移动路径消息。从请求-服务角度来描述:我们可以把每个节点消息更新处理当作某种完整数据处理过程。...我们把共用消息统一放到一个common.proto文件里: syntax = "proto3"; package sdp.grpc.services; message HelloMsg { string..."; import "google/protobuf/any.proto"; import "scalapb/scalapb.proto"; option (scalapb.options) = {..."; import "common.proto"; import "cql/cql.proto"; import "jdbc/jdbc.proto"; import "mgo/mgo.proto"; 下面我们把最核心服务实现挑出来讲解一下

65330

ScalaPB(4): 通用跨系统protobuf数据,sbt设置

用户首先在.proto文件中用IDL来定义系统各种需要进行交换数据类型。然后用protoc编译器自动产生相关源代码,里面包括了完整序列化处理函数。...在一个集成系统环境内,protobuf数据必须保持与所有系统松散耦合,不能对这些用户系统有任何依赖。...这样把protobuf数据类型和相关序列化/反序列化函数打成一个独立包,由用户系统各自引用就是一种最佳解决方案了。 下面示范产生一个独立protobuf包。...我们再随便建个.proto文件: syntax = "proto3"; // Brought in from scalapb-runtime import "scalapb/scalapb.proto..."; import "google/protobuf/wrappers.proto"; package proto.microservices; message Added { int32

1.1K40

akka-grpc - 基于akka-http和akka-streamsscala gRPC开发工具

在http/1应用对二进制文件传输交换有诸多限制和不便,特别是效率方面的问题。在protobuf这种序列化模式对任何类型数据格式都一视同仁,可以很方便实现图片等文件上传下载。...与scalaPB一样,akka-grpc也是通过编译IDL(.proto)文件用相应插件(plugin)产生相关scala类和服务函数代码。...实际上akka-grpc产生代码plugin还是采用scalaPB插件,这个过程已经在scalaPB系列博客里详细介绍过了。...数据类型和服务函数用IDL定义.proto文件内容如下: syntax = "proto3"; //#options option java_multiple_files = true; //option...所以,akka-grpc并没有提供对OAuth2规范身份验证支持。在这个例子里我们就只能进行基本身份证明(店号、机器号等),但身份验证过程安全性就不做任何加密操作了。

1.9K20

Akka-CQRS(10)- gRPC on SSLTLS 安全连接

使用gRPC作为云平台和移动前端连接方式,网络安全应该是必须考虑一个重点。gRPC是支持ssl/tls安全通讯机制。用了一个周末来研究具体使用方法,实际上是一个周末挖坑填坑过程。..." %% "compilerplugin" % "0.9.0-M6" 在sbt执行dependencyTree: ~/scala/intellij/learn-grpc> sbt [info] Loading..." % scalapb.compiler.Version.scalapbVersion ) // (optional) If you need scalapb/scalapb.proto or anything...from // google/protobuf/*.proto //libraryDependencies += "com.thesamet.scalapb" %% "scalapb-runtime"...判断正确,是证书问题。再研究一下证书是怎么产生,尝试按文档指引重新产生这些自签证书:可惜是好像还有些文件是缺失serial。

1.3K40

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

,而且才刚刚达到枯浅理解水平,如果在实际应用能够真正调动自然,则需要添加更多努力了。    ...在scala编程世界里我们可以用scalaPB来实现对gRPC和protobuf使用。...google gRPC使用流程如下: 1、创建一个.proto文件,用IDL语言(Interface Definition Language)定义数据类型和服务 2、对.proto文件进行编译后产生相关...java数据类型和抽象服务框架 3、在java编程可以直接调用编译产生数据类型及对数据进行操作 4、继承并实现产生服务类 scalaPB是一个scala版protobuf编译器。...编译.proto文件后产生scala语言数据类型和抽象服务类,这样我们就可以在scala环境里使用protobuf和gRPC实现微服务集成编程了。

64520
领券