akka-grpc - 应用案例】的更多相关文章

1.Akka RPC通信案例改造和部署在多台机器上  1.1 Akka RPC通信案例的改造(主要是把一些参数不写是) Master package com._51doit.akka.rpc import akka.actor.{Actor, ActorRef, ActorSystem, Props} import com.typesafe.config.ConfigFactory import scala.concurrent.duration._ import scala.collectio…
我们来看一下Akka的一个简单的wordcount的案例架构设计 从图中我们可以看出,不同的行我们是交给不同的actor进行入理的,每行首先进行map操作,识别出每个单词,然后交给reduce步骤的actor,进行字数的统计.最后,将不同行的统计结果都传给一个统计actor进行最后的reduce操作,统计所有行的单词出现的次数.这是一个非常典型的案例. 那么Actor的设计是怎样的呢?我们看看最简单的版本. 从图中我们可以看出,一共需要4个actor.首先需要一个总调度的actor,也就是mas…
gRPC是google开源高性能分布式RPC框架,支持http/2 双向数据流传输及Protobuff,可以在任何环境下运行. 它可以有效地将数据中心内和跨数据中心的服务与可插拔支持进行负载均衡,跟踪,运行状况检查和身份验证. 它也适用于分布式计算,将设备,移动应用程序和浏览器连接到后端服务. 核心功能: 10种语言的语言客户端库 高效的线路和简单的服务定义框架 基于http / 2传输的双向流式传输 可插入的身份验证,跟踪,负载平衡和健康检查 主要使用场景: 在微服务式架构中有效地连接多点服务…
1.参考资料 (1)grpc-java官网QuickStart: https://grpc.io/docs/quickstart/java.html (2)grpc-java的github: https://github.com/grpc/grpc-java (3)grpc-java的tutorial: https://grpc.io/docs/tutorials/basic/java.html (4)Protocol Buffers:https://developers.google.com/…
第90讲:基于Scala的Actor之上的分布式并发消息驱动框架Akka初体验 akka在业界使用非常广泛 spark背后就是由akka驱动的 要写消息驱动的编程模型都首推akka 下面将用30讲讲解akka 本讲主要讲两部分内容: 1.akka的重大意义 2.akka与scala的actor Spark源码中使用akka使用鉴赏: 在spark中有200行左右代码封装了akka的使用 spark是分布式的计算框架,有master和slave主从节点通信时都是使用akka. 客户端提交程序时也是…
一.背景 最近在开发一个项目,项目的各模块之间是使用akka grpc传输音频帧的,并且各模块中的actor分别都进行了persist.本周在开发过程中遇到了一个bug,就是音频帧在通行一段时间后,整个系统处于卡死状态,没有了反应.刚开始怀疑是akka grpc通信时,流中断了,或者没有传输过来,可是通过抓包和日志,发现流的每一帧已经接受到了.最后定位到问题时persist的原因,每次卡死之间都可以发现persit失败了.我们去看persist方法的源码可以发现上面的注解如下: /** * As…
关于grpc,在前面的scalaPB讨论里已经做了详细的介绍:google gRPC是一种全新的RPC框架,在开源前一直是google内部使用的集成工具.gRPC支持通过http/2实现protobuf格式数据交换.protobuf即protocol buffer,是google发明的一套全新的序列化传输协议serialization-protocol,是二进制编码binary-encoded的,相对java-object,XML,Json等在空间上占有优势,所以数据传输效率更高.由于gRPC支…
本文我们来讲解一下如何使用 gRPC构建微服务,gRPC是一个开源框架,可用于构建可扩展且高性能的微服务并创建服务之间的通信. 背景 随着企业越来越多地转向微服务,对构建这些微服务的低延迟和可扩展框架的需求也在增加.为了满足这一需求,各种工具和框架提供商正加快满足微服务需求.同时从构建大型微服务应用程序的经验中学习,技术专业人士分享他们对可重用组件的知识,以便其他人可以构建具有相同规模和性能的架构. 什么是 gRPC gRPC 是一个开源框架(由 Google 创建),是一个通用的 RPC 框架…
什么是Netty Netty是一个基于Java NIO的编写客服端服务器的框架,是一个异步事件框架. 官网https://netty.io/ 为什么选择Netty 由于JAVA NIO编写服务器的过程过于复杂且不易掌控,所以我们选择Netty框架进行开发. 具有很高的的性能. 且比NIO更容易编码和维护. 实践者众多,Elastic Search,dubbo,Akka,grpc等等 社区很成熟. Netty的常用组件 EventLoopGroup 相当于Reactor线程组,常用NioEvent…
前面我们已经讨论了CQRS-Reader-Actor的基本工作原理,现在是时候在之前那个POS例子里进行实际的应用示范了. 假如我们有个业务系统也是在cassandra上的,那么reader就需要把从日志读出来的事件恢复成cassandra表里的数据行row.首先,我们需要在cassandra上创建相关的keyspace和table.下面是在scala中使用cassandra-java-driver的例子: import com.datastax.driver.core._ import akk…
引言 Lagom是出品Akka的Lightbend公司推出的一个微服务框架,目前最新版本为1.6.2.Lagom一词出自瑞典语,意为"适量". https://www.lagomframework.com/documentation/1.6.x/scala/Home.html Lagom框架坚持,微服务是按服务边界Boundary将系统切分为若干个组成部分的结果,这意味着要使它们与限界上下文Bounded Context.业务功能和模块隔离等要求保持一致,才能达到可伸缩性和弹性要求,从…
grpc简介 gRPC由google开发,是一款语言中立.平台中立.开源的远程过程调用系统 gRPC客户端和服务端可以在多种环境中运行和交互,例如用java写一个服务端,可以用go语言写客户端调用 grpc和protobuf介绍 微服务架构中,由于每个服务对应的代码库是独立运行的,无法直接调用,彼此间的通信就是个大问题 gRPC可以实现微服务,将大的项目拆分为多个小且独立的业务模块,也就是服务,各服务间使用高效的protobuf协议进行RPC调用,gRPC默认使用protocol buffers…
前言:随着.Net6的发布,Minimal API成了当下受人追捧的角儿.而这之前,程序之间通信效率的王者也许可以算得上是gRPC了.那么以下咱们先通过开发一个gRPC服务的教程,然后顺势而为,再接着比拼一下minimal api服务和gRPC服务在通信上的效率.以下,Enjoy: 1.创建一个gRPC服务项目.开发模板选项如下图所示. 2.新建项目MyFirstGRPCService,用来开发gRPC服务端使用. 3.选择.Net6 LTS版本. 4.初始项目,自动引用了包 Grpc.AspN…
最近出于工作需要,了解了一下微服务架构(Microservice Architecture,MSA).我经过两周业余时间的努力,凭着自己对微服务架构的理解,从无到有,基于.NET打造了一个演示微服务架构的应用程序案例,并结合领域驱动设计(DDD)以及命令查询职责分离(CQRS)体系结构模式,对事件驱动的微服务系统架构进行了一些实战性的探索.现将自己的思考和收获整理成文,分享给大家. 微服务架构 在介绍源代码之前,我还是想谈谈微服务架构,虽然网上有很多有关微服务架构的讨论,但我觉得在此再多说一些还…
参考资料: Golang gRPC 示例:  http://www.cnblogs.com/YaoDD/p/5504881.html grpc golang学习心得(1)----安装与测试:   http://studygolang.com/articles/8274 golang中怎么处理socket长连接?:  https://www.zhihu.com/question/22925358 gRPC 基础: Go:   http://doc.oschina.net/grpc?t=60133…
Akka是由各种角色和功能的Actor组成的,工作的主要原理是把一项大的计算任务分割成小环节,再按各环节的要求构建相应功能的Actor,然后把各环节的运算托付给相应的Actor去独立完成.Akka是个工具库(Tools-Library),不是一个软件架构(Software-Framework),我们不需要按照Akka的框架格式去编写程序,而是直接按需要构建Actor去异步运算一项完整的功能,这样让用户在不知不觉中自然的实现了多线程并发软件编程(concurrent programming).按这…
上一篇我们讨论了akka-cluster的分片(sharding)技术.在提供的例子中感觉到akka这样的分布式系统工具特别适合支持大量的带有内置状态的,相对独立完整的程序在集群节点上分布运算.这里重点要关注这些程序的内部状态,它们会占用系统资源包括内存.把状态保存在内存里相对存放在数据库里能显著提高程序运算效率.在系统出现各种情况下对这些非持久化的程序状态的管理自然就成为了需要考虑的问题,此其一.在一个多用户.高并发的大型分布式系统里往往数据库数据使用会产生大量的冲突影响系统性能.如果能够把数…
keywords:android https 双向认证android GRPC https 双向认证 ManagedChannel channel = OkHttpChannelBuilder.forAddress("xxx",yyy) .overrideAuthority("zzz") .sslSocketFactory(sslFactory) .build(); 1.千万不要像官网案例那样设置setPlaintext(true),这个是设置明文,我们用的是密文…
gRPC Streaming的操作对象由服务端和客户端组成.在一个包含了多个不同服务的集群环境中可能需要从一个服务里调用另一个服务端提供的服务.这时调用服务端又成为了提供服务端的客户端了(服务消费端).那么如果我们用streaming形式来提交服务需求及获取计算结果就是以一个服务端为Source另一个服务端为通过式passthrough Flow的stream运算了.讲详细点就是请求方用需求构建Source,以连接Flow的方式把需求传递给服务提供方.服务提供方在Flow内部对需求进行处理后再把…
我在前面提到过MongoDB不支持像SQL般字符式的操作指令,所以我们必须对所有的MongoDB操作指令建立protobuf类型才能支持MongoDB指令的序列化.在对上一篇博文里我们把MongoDB的消息指令序列化单独挑出来讨论了一番,在这篇我们准备在一个MongoDB scala开发环境里通过streaming运算来示范这些protobuf消息的应用. 与前面我们介绍过的JDBC-streaming和Cassandra-streaming对应操作指令的处理相同,MGO-streaming也是…
前两篇我们介绍了JDBC和Cassandra的gRPC streaming实现.相对MongoDB来说,JDBC和Cassandra支持字符类型的query语句SQL,CQL,所以把query指令转换成protobuf structures是简单直接的.而MongoDB没有提供字符类的query,所以我们必须进行MongoDB query涉及的所有类型与protobuf类型的相互转换,实现gRPC功能会复杂的多.我们在这篇讨论里先介绍MongoDB query的protobuf转换. 在前面的M…
Scala进阶之路-Spark底层通信小案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Spark Master和worker通信过程简介 1>.Worker会向master注册自己: 2>.Master收到worker的注册信息之后,会告诉你已经注册成功,并给worker发送启动执行器的消息: 3>.Worker收到master的注册消息之后,会定期向master汇报自己的状态: 4>.master收到worker的心跳信息后,定期的更新worker的…
Scala进阶之路-并发编程模型Akka入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Akka Actor介绍 1>.Akka介绍 写并发程序很难.程序员不得不处理线程.锁和竞态条件等等,这个过程很容易出错,而且会导致程序代码难以阅读.测试和维护.Akka 是 JVM 平台上构建高并发.分布式和容错应用的工具包和运行时.Akka 用 Scala 语言写成,同时提供了 Scala 和 JAVA 的开发接口. 2>.Akka 中 中 Actor  模型 Akka 处…
转自: http://blog.csdn.net/liubenlong007/article/details/54692241 概述 前段时间项目要做服务化,所以我比较了现在流行的几大RPC框架的优缺点以及使用场景,最终结合本身项目的实际情况选择了使用dubbox作为rpc基础服务框架.下面就简单介绍一下RPC框架技术选型的过程. RPC简述 该系列文章将讲述以下RPC框架的helloword实例以及其实现原理简述,由于每一种RPC框架的原理实现不同且都比较复杂,如果想深入研究还请自行到官网或者…
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina.com protobuf Protocol Buffers 简介 案例 目录 目录简介优缺点proto3简介使用步骤下载 protobuf 编译器编写 .proto 文件编译 .proto 文件生成 java 类项目中添加 protobuf runtime测试 java 类在 Android 中使…
Spark是一个类似Map-Reduce的集群计算框架,用于快速进行数据分析. 在这个应用中,我们以统计包含"the"字符的行数为案例,.为建立这个应用,我们使用 Spark 1.0.1, Scala 2.10.4 & sbt 0.14.0. 1). 运行 mkdir SimpleSparkProject. 2). 创建一个.sbt 文件,在目录 SimpleSparkProject/simple.sbt name := "Simple Project" v…
一. 起始 去年.NetCore2.0的发布,公司决定新项目采用.NetCore开发,当作试验.但是问题在于当前公司内部使用的RPC服务为Thrift v0.9 + zookeeper版本,经过个性化定制,支持了异步,但也因为如此,这么多年来一直没有去升级,导致迁移工作很复杂(历史遗留项目太多,有各种语言的,目前只有.net体系的开发人员).另外一点公司本身是做电商服务的,很多东西依赖了阿里的数据,阿里要求数据不能够出聚石塔,我们将所有相关的应用迁移到了聚石塔,随之问题也来了,聚石塔只开放了80…
第102讲:通过案例解析Akka中的Actor运行机制以及Actor的生命周期 Actor是构建akka程序的核心基石,akka中actor提供了构建可伸缩的,容错的,分布式的应用程序的基本抽象, actor是异步的,非阻塞式的,事件驱动的轻量级的模型, actor中都有自己的成员,也有receive方法,在receive中处理具体的逻辑. actor间沟通只能通过发消息. !发消息是异步的过程,MasterActor只会对自己的邮箱感兴趣,不断循环自己的邮箱, 收到消息后进行处理. 在acto…
文章来自gRPC 官方文档中文版 认证 gRPC 被设计成可以利用插件的形式支持多种授权机制.本文档对多种支持的授权机制提供了一个概览,并且用例子来论述对应API,最后就其扩展性作了讨论. 马上将会推出更多文档和例子. 支持的授权机制 SSL/TLS gRP 集成 SSL/TLS 并对服务端授权所使用的 SSL/TLS 进行了改良,对客户端和服务端交换的所有数据进行了加密.对客户端来讲提供了可选的机制提供凭证来获得共同的授权. OAuth 2.0 gRPC 提供通用的机制(后续进行描述)来对请求…
概述 前段时间项目要做服务化,所以我比较了现在流行的几大RPC框架的优缺点以及使用场景,最终结合本身项目的实际情况选择了使用dubbox作为rpc基础服务框架.下面就简单介绍一下RPC框架技术选型的过程. RPC简述 该系列文章将讲述以下RPC框架的helloword实例以及其实现原理简述,由于每一种RPC框架的原理实现不同且都比较复杂,如果想深入研究还请自行到官网或者其他技术博客学习. RPC框架职责 RPC框架要向调用方屏蔽各种复杂性,要向服务提供方也屏蔽各类复杂性: 调用方感觉就像调用本地…