您可以在sbt的官方文档或sbt插件仓库中找到用于为protobuf生成Scala case类的插件。以下是一些资源,可以帮助您完成这个任务:
使用sbt-protobuf插件,您可以在项目的build.sbt文件中配置protobuf生成Scala case类的相关设置。一旦配置完成,通过运行sbt编译任务,插件将自动解析和处理protobuf文件,并生成对应的Scala case类。
注意:以上提到的资源和插件与腾讯云无关,仅供参考使用。
在akka中使用自定义序列化方法包括下面的这些步骤: 1、在.proto文件中对消息类型进行IDL定义 2、用ScalaPB编译IDL文件并产生scala源代码。...我们还需要在project/scalapb.sbt中指定scalaPB插件: addSbtPlugin("com.thesamet" % "sbt-protoc" % "0.99.18") libraryDependencies...import akka.protobuf.calcservice._ import scala.concurrent.duration._ import scala.util._ import learn.proto.messages...下面是本次示范的完整源代码: project/scalapb.sbt addSbtPlugin("com.thesamet" % "sbt-protoc" % "0.99.18") libraryDependencies...scala.io.StdIn.readLine() calcSystem.terminate() } CalcService.scala package akka.protobuf.calcservice
gRPC是google开源提供的一个RPC软件框架,它的特点是极大简化了传统RPC的开发流程和代码量,使用户可以免除许多陷阱并聚焦于实际应用逻辑中。...作为一种google的最新RPC解决方案,gRPC具备了以下这些强项: 1、gRPC在HTTP/2协议上用protobuf取代了json实现了最佳效率 2、用IDL(Interface Definition....proto字符类文件中用IDL来描述用户自定义的数据类型和服务 2、用protoc编译器编译文件并产生自定义数据类型和服务的api源代码 3、在server端实现.proto中定义的服务函数 4、在client...在本篇讨论中我们先示范Unary-service的编程流程,下面是.proto文件内容: syntax = "proto3"; import "google/protobuf/wrappers.proto...下面是本次示范的源代码: project/scalapb.sbt addSbtPlugin("com.thesamet" % "sbt-protoc" % "0.99.18") libraryDependencies
这是在系统集成编程方面相对akka-http占优的一个亮点。protobuf格式数据可以很方便的转换成 json格式数据,支持对外部系统的的开放协议数据交换。...在http/1应用中对二进制文件的传输交换有诸多限制和不便,特别是效率方面的问题。在protobuf这种序列化模式中对任何类型的数据格式都一视同仁,可以很方便的实现图片等文件的上传下载。...也许,在开发一套内部IT系统的过程中akka-grpc可以很趁手。...与scalaPB一样,akka-grpc也是通过编译IDL(.proto)文件用相应的插件(plugin)产生相关的scala类和服务函数代码。...这个可以通过在built.sbt里增加akkaGrpcCodeGeneratorSettings += "server_power_apis"就能做到。
想想实际上用JWT会更加便捷,而且更安全和功能强大,因为除JWT的加密签名之外还可以把私密的用户信息放在JWT里加密后在服务端和客户端之间传递。...当然,最基本的是通过对JWT的验证机制可以控制客户端对某些功能的使用权限。...request-header的,但gRPC又一个结构Context可以在两个地方都能调用。...所以,我们可以在构建server时把JWT从header搬到Context里。不过,千万注意这个Context的读写必须在同一个线程里。...Some(user) => Some(user.userInfo) case _ => None } } 下面是本次示范的源代码: project/plugins.sbt
二、SBT简介 使用Scala语言编程,最好使用SBT框架,可以自动帮你完成包管理等,相当于java中的maven,下面先简单介绍一下SBT基础。 ...安装完成之后,在IDEA中安装sbt插件,然后选择创建SBT项目,与普通Scala语言最主要的不同是会创建一个build.sbt文件,这个文件主要记录的就是项目的依赖等,要添加依赖就可以添加如下两行代码...resolvers表示系统如何能够找到上面的libraryDependencies,at 方法通过两个字符串创建了一个 Resolver 对象,前者为名称,后者为地址。...1、原生支持 Scala语言原生支持并发编程,只需要使类继承scala.actors.Actor即可,复写父类的act方法,也可以直接建立一个匿名类,直接使用actor{}即可,其中receive...通过打印actor.path可以得到akka://akkatest/user/akkaactor,可以看出该Actor确实是在system之下,其中user表示是用户自定义Actor。
我们知道,在集群环境节点之间进行交换的数据必须经过序列化/反序列化处理过程,而在这方面protobuf是一个比较高效、易用的模式。...在一个集成的系统环境内,protobuf数据必须保持与所有系统的松散耦合,不能对这些用户系统有任何依赖。...在使用方sbt项目里可以用unmanagedBase指定.jar路径或者把包放到默认的lib/目录下: lazy val commonSettings = Seq( name := "using-common-protobuf-data...在上面的.sbt文件中有关路径的设置需要总结一下: 1、改变默认源代码路径: (src/main/scala, src/test/scala) scalaSource in Compile := baseDirectory.value...baseDirectory.value / "jars" //只在编译时引用 unmanagedBase in Compile := baseDirectory.value / "lib" / "main" 4、取消根目录为源代码默认路径
gRPC的优势在这里就不再细说,读者可以参考前面有关gRPC的讨论博文。 下面是系统结构示意图: ? 这篇讨论焦点集中在gRPC的server,client两头的具体实现。...但就是没有scala的,只能找第三方的scala客户端了。...下面是这个例子的.proto定义文件: syntax = "proto3"; import "google/protobuf/wrappers.proto"; import "google/protobuf...在客户端用了同一个posmessages.proto定义文件: syntax = "proto3"; import "google/protobuf/wrappers.proto"; import "...("net.virtual-void" % "sbt-dependency-graph" % "0.9.2") addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager
首先声明:标题上的所谓编程模式是我个人考虑在集群环境下跨节点(jvm)的流程控制编程模式,纯粹按实际需要构想,没什么理论支持。...在5月份的深圳scala meetup上我分享了有关集群环境下的编程模式思路。我提供了下面这个示意图: ? 上图是我正在探讨的“现代企业I.T综合数据平台”网络结构。...我想如果进一步延伸的话把流元素变成程序指令应该可以实现程序流的控制了。...(false), queryTimeout = q.queryTimeout ) jdbcAkkaStream(ctx, toRow) 这里涉及了两类数据的跨平台交换...这样可以避免protobuf,Any类型的复杂操作。
Scala这边,我们所熟悉的Ktoso大佬包了一个sbt-jmh插件,使得我们可以方便地利用SBT来运行JMH测试。...要使用sbt-jmh插件,首先,在plugins.sbt文件里面添加插件: // project/plugins.sbt addSbtPlugin("pl.project13.scala" % "sbt-jmh..." % "0.3.4") 之后,在项目中的模块定义中,使用它: // build.sbt enablePlugins(JmhPlugin) 然后,我们就可以在sbt的console下,执行如下命令,...上面三个注解的选项的意思分别是: State表明可以在类里面创建成员变量,供所有测试复用,复用的范围是在Benchmark当中; OutputTimeUnit表示输出Benchmark结果的时候,计时单位是...我所使用的是网上找到的一个应该是从Spark代码中抠出来的一个实现,速度快,估值准。只需要在build.sbt中如下引入即可。
- Play 2.x 打开play项目根目录下project/plugins.sbt文件,找到添加sbt-plugin这一行,例如: addSbtPlugin("com.typesafe.play...- Play 2.x 执行play idea生成idea项目 在Idea中,单击菜单File-Open(注意不是Import Project),打开play项目 在Project Structure...窗口的Modules中,添加依赖target\scala-2.10\classes_managed 3....- Play 2.2.1 注意:case .. => 右边的{}不能缺: @connected match { case Admin(name) => { <span...配置多个数据库时,非默认数据库(即非ebean.default)对应的实体类如何定义?
Steps 以 cpg 为根结点,我们可以查找代码属性图中的所有结点类型,比如类、方法、调用、控制流等。...scala trait MyTrait { def method(): Unit = println("This is a trait method.") } 案例类,用于生成不可变的数据接口,自动生成...apply、unapply、toString、equals 等方法: scala case class MyCaseClass(name: String, age: Int) 对象类,也称单例类,只能有一个实例...,类似 r0.field = value,2 为读取,类似 r1 = r0.field;这个指定不是必须的,不过在代码量大的时候可以稍微提升下速度; fieldAccess 包含所有类型为 BroadCastReceiver...在该仓库中可以找到每个 Step 的实现。从中我们发现递归搜索 .repeat 默认为深度优先,可以通过 .bfs 设置为广度优先,等等诸如此类的 Trick。
gRPC的ssl/tls的原理是在服务端安装安全证书公用certificate和私钥key, 在客户端安装公共证书就可以了,gRPC代码是这样写的: // Server SslContext sslContext...这个可以用sbt插件sbt-dependency-graph。...: ~/scala/intellij/learn-grpc> sbt [info] Loading settings for project global-plugins from idea.sbt...... sbt:learn-grpc> dependencyTree [info] | | +-com.google.protobuf:protobuf-java:3.7.1 [info] |...这次起码证明grpc ssl/tls是可以发挥作用的。
: https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases, [organization]/[module]/(scala_[scalaVersion...=true , 也可以通过设置环境变量 SBT_OPTS="-Dsbt.override.build.repos=true" 实现。...sbt 项目依赖 在使用 scala 的时候,大家一定要注意自己的sdk版本以及配置的依赖包的版本要一致,如果不符,就会出现各种奇怪的问题 libraryDependencies += "org.apache.spark...它提供了一套容错机制,允许在Actor出现异常时进行一些恢复或重置操作。 Akka既可以在单机上构建高并发程序,也可以在网络中构建分布式程序,并提供位置透明的Actor定位服务。...} /** * 为了不让while的运行速度在receive方法之上,我们可以让他休眠0.1秒 */ Thread.sleep(100) }
akka-stream提供的功能,如: Flow[Request] .throttle(1, 10.millis, 1, ThrottleMode.Shaping) .map(computeResponse) 在客户端我们可以直接经客户端...我们可以用scan来实现这样的功能。...compilerplugin" % "0.7.1", "beyondthelines" %% "grpcakkastreamgenerator" % "0.0.5" ) build.sbt...maven") libraryDependencies ++= Seq( "com.thesamet.scalapb" %% "scalapb-runtime" % scalapbVersion % "protobuf...grpc.akkastreams.generators.GrpcAkkaStreamGenerator() -> (sourceManaged in Compile).value ) src/main/protobuf
上期我们介绍了cluster singleton,它的作用是保证在一个集群环境里永远会有唯一一个singleton实例存在。...具体使用方式是在集群所有节点部署ClusterSingletonManager,由集群中的leader节点选定其中一个节点并指示上面的ClusterSingletonManager运行一个cluster...在集群环境里每个节点上akka-cluster系统都提供一个DistributedPubSubMediator实例作为该节点向外发布及订阅消息的渠道。...DistributedPubSubMediator.Remove(path) Put在Mediator上登记了self,包括path,所以取消订阅也就是从Mediator上取消特定path。...下面是这次讨论中的示范源代码: project/scalapb.sbt addSbtPlugin("com.thesamet" % "sbt-protoc" % "0.99.18") libraryDependencies
() // 统计包含 Spark 的行数// res4: Long = 17 scala RDD的更多操作 RDD 的 actions 和 transformations 可用在更复杂的计算中,例如通过如下代码可以找到包含单词最多的那一行内容共有几个单词...代码首先将每一行内容 map 为一个整数,这将创建一个新的 RDD,并在这个 RDD 中执行 reduce 操作,找到最大的数。...验证 sbt 是否可用 如果由于网络问题无法下载依赖,导致 sbt 无法正确运行的话,可以下载笔者提供的离线依赖包 sbt-0.13.9-repo.tar.gz 到本地中(依赖包的本地位置为 ~/.sbt...点击查看:解决 sbt 无法下载依赖包的问题 使用 sbt 打包 Scala 程序 为保证 sbt 能正常运行,先执行如下命令检查整个应用程序的文件结构: cd ~/sparkappfind ....SimpleApp的文件结构 生成的 jar 包的位置为 ~/sparkapp/target/scala-2.10/simple-project_2.10-1.0.jar。
安装 首先需要安装好Java和Scala,然后下载Spark安装,确保PATH 和JAVA_HOME 已经设置,然后需要使用Scala的SBT 构建Spark如下: $ sbt/sbt assembly...使用SBT进行编译打包: sbt compile sbt test sbt package 打包名称假设为AlsApacheLogParser.jar。...实例: import com.alvinalexander.accesslogparser._ val p = new AccessLogParser 现在就可以像之前读取readme.cmd一样读取...> log.count (a lot of output here) res0: Long = 100000 分析Apache日志 我们可以分析Apache日志中404有多少个,创建方法如下: def...case None => "0" } } 其中Option[AccessLogRecord]是分析器的返回值。
你可以在https://github.com/mariniss/mylibrary-contracts找到源代码。 让我们以CDC风格开始我们的微服务实现!首先,我们必须定义我们的项目。...我们可以轻松地使用SBT创建一个新的Scala项目并定义build.sbt,如下所示: build.sbt name := "myLibrary-contracts" version := "0.1"...sbt: sbt test:它执行扩展了FunSpec和WordSpec的所有测试(如在build.sbt定义) sbt pactTest:它执行所有pacts测试 该测试验证了消费者协议,并生成提供者必须遵守的契约...您可以在官方文档中找到更多关于如何在Slick中实现实体和DAO的示例和信息。...为了现在开始我们的应用程序,需要一个带有分类表的数据库,并且我们可以手动完成,或者让机器为我们完成工作。所以我们可以实现一个数据库迁移,它能够在启动时应用任何必要的数据库更改来执行应用程序。
我们举个例子: 如果您有要在项目中使用的 jar 文件(非托管依赖项),只需将它们复制到 sbt 项目根目录下的 lib 文件夹中,sbt 就会自动找到它们。...例如 : "org.scalatest" %% "scalatest" % "3.2.9" 会被解析为 “org.scalatest:scalatest_2.13:3.2.9”,假设当前 Scala 版本为...target/: 这个目录是sbt生成的,用于存放编译生成的类文件、打包文件以及其他构建过程中生成的临时文件。...回到开头的托管依赖项管理的内容,我们来聊聊在sbt中添加依赖项 sbt中添加依赖项 在 build.sbt 文件中,可以通过 libraryDependencies 来添加依赖。...动态构建定义 sbt 构建文件使用 Scala 语言,可以通过使用Scala语言的强大特性编写复杂的逻辑和动态配置。
集群机器规划 三台机器的操作系统全部为CentOS7.2....由于SPARK安装需要scala2.11.x,所以在scala官网下载相应的scala源码进行配置。...**安装第三方工具包 ** 如果想对spark源码进行编译和扩展改动,那么需要对源码编译,那么需要安装一些第三方和开发类库。...-3.3.9/bin:$PATH source /etc/profile #下载protobuf tar -zxf protobuf-2.5.0.tar.gz mv protobuf-2.5.0 /opt...:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export SCALA_HOME=/opt/soft/scala-2.11.8 2.在hadoop-env.sh
领取专属 10元无门槛券
手把手带您无忧上云