Protocol Buffers

seata1.2.0 源码启动

此生再无相见时 提交于 2020-04-26 01:55:36
github 地址 https://github.com/seata/seata 本文使用的是 2020-04-21 日 四天前刚发版的最新版本 1.2.0 io.seata.server.Server 类启动 seata-server 需要在工程目录下执行 mvn clean install -DskipTests=true ,这样就会 根据 resources里面的proto文件生成代码,我这边用的maven 版本 是 apache-maven-3.1.0,执行的时候会报错 D:\workspace\idea\seata\serializer\seata-serializer-protobuf>mvn clean install -DskipTests=true [INFO] Scanning for projects... [WARNING] [WARNING] Some problems were encountered while building the effective model for io.seata:seata-serializer-protobuf:jar:1.2.0 [WARNING] 'version' contains an expression but should be a constant. @ io.seata:seata-parent:$

Cartographer安装与卸载

喜欢而已 提交于 2020-04-25 18:36:19
注意:protoc版本会影响后续的安装,首先确认系统中有没有protobuf:locate protobuf;如果有,把所有与其相关的文件全部删除,再安装 1:安装ceres_solver (1)cmake .. -G Ninja -DCXX11=ON (2)ninja (3)sudo ninja install 2:安装protobuf3 (1)cmake -G Ninja -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -Dprotobuf_BUILD_TESTS=OFF ../cmake (2)ninja (3)sudo ninja install 3:安装cartographer (1)cmake .. -G Ninja (2)ninja (3)sudo ninja install 3.1刷新安装的库 (1)sudo updatedb 4:在自己的ws下编译cartographer_ros 5:卸载cartographer (1)locate cartographer (2)rm所有.h .a bin等文件(/usr/local/share/cartographer /usr/local/include/cartographer /usr/local/bin/) 来源: oschina 链接:

Go gRPC进阶-proto数据验证(九)

三世轮回 提交于 2020-04-24 13:40:07
前言 上篇介绍了 go-grpc-middleware 的 grpc_zap 、 grpc_auth 和 grpc_recovery 使用,本篇将介绍 grpc_validator ,它可以对gRPC数据的输入和输出进行验证。 创建proto文件,添加验证规则 这里使用第三方插件 go-proto-validators 自动生成验证规则。 go get github.com/mwitkow/go-proto-validators 1.新建simple.proto文件 syntax = "proto3"; package proto; import "github.com/mwitkow/go-proto-validators/validator.proto"; message InnerMessage { // some_integer can only be in range (1, 100). int32 some_integer = 1 [(validator.field) = {int_gt: 0, int_lt: 100}]; // some_float can only be in range (0;1). double some_float = 2 [(validator.field) = {float_gte: 0, float_lte: 1}]; }

Go语言(十五) 反射

风流意气都作罢 提交于 2020-04-24 12:33:42
反射 变量介绍 变量的内在机制 类型信息,这部分是元信息,是预先定义好的 值类型,这部分是在程序运行过程中动态改变的 反射介绍 反射与空接口 空接口可以存储任何类型的变量 在程序运行时动态获取变量的类型信息和值信息,就叫 反射 import ( "fmt" "reflect" ) func TestType(a interface{}) { //获取类型(静态信息) t := reflect.TypeOf(a) kind := t.Kind() switch kind { case reflect.Int: fmt.Printf("a is a int\n") a = 2 case reflect.String: fmt.Printf("a is a string\n") } fmt.Printf("t=%v,kind=%v\n\n",t,kind) } func TestValue(a interface{}) { v := reflect.ValueOf(a) //kind := v.Kind() t := v.Type() switch t.Kind() { case reflect.Int: fmt.Printf("a is a int\n") v.SetInt(10000) case reflect.String: v.SetString("xxx") fmt

aelf技术点解读 | 分红合约接口实现方案

家住魔仙堡 提交于 2020-04-24 01:56:02
Profit合约:统一的分红管理方案 概要 由于aelf主链采用DPoS共识机制,通过持有代币或者锁仓来获得权益是aelf治理模型中重要组成部分。这就产生了一个需求:实现一个能够统一管理分红的标准流程,并将其作为一个基础的智能合约。这个合约在创世区块中即部署于链上,其应用包括但不限于:生产节点在某一届任期结束时根据其区块生产数量(以此作为权重)获得相应奖励,选民通过节点竞选投票所质押ELF来分享相应的奖励,DApp合约允许用户通过抵押Token来分享合约盈利。 分红方案即代币分配策略:任何地址都可以成为分红方案(profit scheme)的管理者(manager)。每个管理者(manager)都可以为该分红方案添加受益人(beneficiary),并为每个受益人设定股份(shares)。之后,当分红项目创建者对其项目受益人发放(distribute)分红时,将按其对应的股份进行代币分配。每次分红结束后,分红方案的账期(period)即加一,根据具体分红数额会在该账期对应的虚拟地址(virtual address)上增加余额,持有股份的账户可以从中获得相应分红。分红的受益人不仅可以是账户地址,也可以是另一个分红方案,子分红方案所获分红可直接打进其总账(general ledger)。分红方案之间可以进行级联。 进一步阐述几个概念: 分红方案(profit scheme)

.NET Core微服务之路:让我们对上一个Demo通讯进行修改,完成RPC通讯

谁都会走 提交于 2020-04-22 05:04:19
  最近一段时间有些事情耽搁了更新,抱歉各位了。   上一篇我们简单的介绍了DotNetty通信框架,并简单的介绍了基于DotNetty实现了回路(Echo)通信过程。   我们来回忆一下上一个项目的整个流程: 当服务端启动后,绑定并监听(READ)设定的端口,比如1889。 当客户端启动后,绑定指定端口,等待用户输入。 当用户输入任意字符串数据后,客户端将这组数据进行转码为byte格式进行传输到服务端。 当服务端收到客户端传来的数据,进行转码后输出控制台,并将这组数据再次回传到客户端。 客户端收到数据,也打印出来。   很简单的实现了一个点对点的通信例子。接下来我们将对这个DEMO进行简单的修改,模拟最简单的gRPC通信的一个构造过程。   本篇很简单,只要实现了上一个demo,稍作修改,就能实现gRPC了(当然实际构建gRPC根本不会这么简单),本篇也是顺带一下这几天搞出来的一个轻量级RPC框架,先接上一个例子。 服务端 增加两个静态方法SayHello和SayByebye,用于提供远程调用,超级简单,不解释。 public static class Say { public static string SayHello( string content) { return $ " hello {content} " ; } public static string

.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端

坚强是说给别人听的谎言 提交于 2020-04-22 03:49:02
.NET Core love gRPC 千呼万唤的 .NET Core 3.0 终于在 9 月份正式发布,在它的众多新特性中,除了性能得到了大大提高,比较受关注的应该是 ASP.NET Core 3.0 对 gRPC 的集成了。 它的源码托管在 grpc-dotnet 这个 Github 库中,由微软 .NET 团队与谷歌 gRPC 团队共同维护. .NET Core 对 gRPC 的支持在 grpc 官方仓库早已有实现(grpc/csharp),但服务端没有很好地与 ASP.NET Core 集成,使用起来还需要自己进行一些集成扩展。 而 ASP.NET Core 3.0 新增了 gRPC 服务的托管功能,能让 gRPC 与 ASP.NET Core 框架本身的特性很好地结合,如日志、依赖注入、身份认证和授权,并由 Kestrel 服务器提供 HTTP/2 链接,性能上得到充分保障。 推荐把项目中已有的 RPC 框架或者内部服务间 REST 调用都迁移到 gRPC 上,因为它已经是云原生应用的标准 RPC 框架,在整个 CNCF 主导下的云原生应用开发生态里 gRpc 有着举足轻重的地位。 对于 gRPC 的使用方式,前段时间已经有其他大神写的几篇文章了,这里就不再赘述了。 本文主要介绍的是区别于标准使用规范的,但对.NET 应用更加友好的使用方式,最后会提供源码来展示。

ASP.NET Core 3.0 使用gRPC

会有一股神秘感。 提交于 2020-04-22 03:31:32
目录 ASP.NET Core 3.0 使用gRPC ASP.NET Core 3.0 gRPC 双向流 ASP.NET Core 3.0 gRPC 拦截器 一.简介 gRPC 是一个由Google开源的,跨语言的,高性能的远程过程调用(RPC)框架。 gRPC使客户端和服务端应用程序可以透明地进行通信,并简化了连接系统的构建。它使用HTTP/2作为通信协议,使用 Protocol Buffers 作为序列化协议。 它的主要优点: 现代高性能轻量级 RPC 框架。 约定优先的 API 开发,默认使用 Protocol Buffers 作为描述语言,允许与语言无关的实现。 可用于多种语言的工具,以生成强类型的服务器和客户端。 支持客户端,服务器双向流调用。 通过Protocol Buffers二进制序列化减少网络使用。 使用 HTTP/2 进行传输 这些优点使gRPC非常适合: 高性能轻量级微服务 - gRPC设计为低延迟和高吞吐量通信,非常适合需要高性能的轻量级微服务。 多语言混合开发 - gRPC工具支持所有流行的开发语言,使gRPC成为多语言开发环境的理想选择。 点对点实时通信 - gRPC对双向流调用提供出色的支持。gRPC服务可以实时推送消息而无需轮询。 网络受限环境 - 使用 Protocol Buffers二进制序列化消息,该序列化始终小于等效的JSON消息

gRPC in ASP.NET Core 3.x -- Protocol Buffer(2)Go语言的例子(上)

試著忘記壹切 提交于 2020-04-22 01:52:50
上一篇文章(大约半年前写的): https://www.cnblogs.com/cgzl/p/11246324.html 建立Go项目 在GOPATH的src下面建立一个文件夹 protobuf-go,然后在里面执行命令 go mod init github.com/solenovex/protobuf-go 这个命令是用来初始化go module的。 命令执行后在该目录生成go.mod文件,其内容如下: 其实直接执行go mod init 也行,默认会取当前文件夹的名字作为项目名。 如果你使用的是Goland,那么需要启用Go modules集成: 然后我们需要安装Protocol buffer的 Go 支持库: go get -u github.com/golang/protobuf/protoc-gen-go 安装好之后: 下面会出现require github.com/…. 后边显示indirect,说明我们的代码还没有对其进行直接引用 建立main.go,代码如下: 然后执行命令 go run main.go 如果输出 "hello world!" 就说明一切正常。 建立proto 在项目下建立src/first文件夹,在里面建立person.proto文件: 下面需要通过这个proto文件,生成go的代码,命令行执行: protoc --proto_path src/

grpc-gateway--支持grpc和restful

﹥>﹥吖頭↗ 提交于 2020-04-20 13:57:07
The grpc-gateway is a plugin of the Google protocol buffers compiler protoc . It reads protobuf service definitions and generates a reverse-proxy server which 'translates a RESTful HTTP API into gRPC. This server is generated according to the google.api.http annotations in your service definitions. grpc-gateway 是protoc的一个插件。它读取gRPC服务定义,并生成一个反向代理服务器,将RESTful JSON API转换为gRPC。此服务器是根据gRPC定义中的自定义选项生成的。 参考: 1. https://github.com/grpc-ecosystem/grpc-gateway https://grpc-ecosystem.github.io/grpc-gateway/ 2. grpc-gateway应用 煎鱼 grpc + grpc gateway 3. OpenNESS eaa.proto生成swagger yaml 4. gRPC 调试工具 gRPC