protobuf

外网grpc通讯的尝试

守給你的承諾、 提交于 2019-12-06 14:35:49
后台内部通讯采用的grpc,最近要做一个外部业务,考虑是否也能使用grpc呢? 一、 先考虑的安全认证问题,看到一些资料,例如: https://cloud.tencent.com/developer/article/1518977 https://www.jianshu.com/p/fa43c54df957 https://www.cnblogs.com/areful/p/10404982.html 基本就是两种: 1.ssl双向认证 2.通过拦截器,io.grpc.ClientInterceptor,io.grpc.ServerInterceptor 也就是安全方面没有问题 二、 简单写个例子,IDL描述 syntax = "proto3"; package payment; import "google/protobuf/wrappers.proto"; option java_package = "cn.company.grpc"; option java_multiple_files = true; option java_outer_classname = "PaymentPB"; message HelloResp { int32 res = 1; string msg = 2; } message HelloReq { google.protobuf

canal与hbase的protobuf版本冲突

試著忘記壹切 提交于 2019-12-06 14:08:25
java.lang.UnsupportedOperationException: This is supposed to be overridden by subclasses. at com.google.protobuf.GeneratedMessage.getUnknownFields(GeneratedMessage.java:180) at com.alibaba.otter.canal.protocol.CanalPacket$ClientAuth.getSerializedSize(CanalPacket.java:2045) at com.google.protobuf.AbstractMessageLite.toByteString(AbstractMessageLite.java:49) at com.alibaba.otter.canal.client.impl.SimpleCanalConnector.doConnect(SimpleCanalConnector.java:150) at com.alibaba.otter.canal.client.impl.SimpleCanalConnector.connect(SimpleCanalConnector.java:97) at com.alibaba.otter.canal.client

[Go] protobuffer 的环境配置

最后都变了- 提交于 2019-12-06 08:52:26
一般使用gprc是需要使用protobuf作为数据传输的格式标准,可以对要传输的对象结构体进行序列化 先安装protoc,找到对应版本,下载直接把二进制文件复制到环境变量可以访问到的地方就行 https://github.com/protocolbuffers/protobuf/releases 安装go的依赖包和工具 git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc git clone https://github.com/golang/protobuf.git $GOPATH/src/github.com/golang/protobuf go install github.com/golang/protobuf/protoc-gen-go 创建文件比如orders.proto,required必填 ,后面那个1和2是字段顺序 syntax = "proto2"; message Orders { required int32 order_id=1; required string title=2; } 来源: https://www.cnblogs.com/taoshihan/p/11973997.html

ubuntu18.04环境下ncnn安装

大兔子大兔子 提交于 2019-12-06 08:37:49
1、将gcc、g++降级为4.8.5版本 sudo apt-get install gcc-4.8 g++4.8 cd /usr/bin sudo rm g++ gcc sudo ln -s gcc-4.8 gcc sudo ln -s g++-4.8 g++ 2、安装protobuf 1)下载protobuf,然后解压 https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz 2) cd protobuf-2.6.1 ./configure make -j make check sudo make install sudo ldconfig 3、安装opencv,这个网上教程很多,安装方式大同小异,不再赘述 4、安装ncnn git clone https://github.com/Tencent/ncnn.git cd ncnn mkdir build && cd build cmake .. make make install 至此,ncnn在ubuntu18.04上的安装完成,enjoy! 来源: CSDN 作者: Trehe 链接: https://blog.csdn.net/barrytough/article/details/80660806

Protocol Buffers

陌路散爱 提交于 2019-12-06 08:36:41
Google Protobuf Why Protobuf protobuf它是Google提供的一个技术, 一个类库, 也可以说是一套规范, 学java的人都知道java有自己的序列化机制, 对不同的java程序来说,他们可以使用同一种序列化机制进行数据的传递, 但是java的序列化机制并不适用于其他的语言比如python 如果想让他们共享数据,我们就得定义中数据格式, 比如xml, 通过xml定义出一个对象, 这样java,python都可以解析xml, 但是在网络上传输xml的话是不是有点浪费资源呢? xml中有大量的冗余的标签没有实际的意义还不能去除, 严重影响性能. 导致传输的效率急剧降低 protobuf的出现就是为了迎战这个效率低的问题 什么是protobuf? protobuf 全称是: protocol buffers 是一种语言中立的用于序列化结构化数据 ,相对于XML这种格式的数据来说,protobuf极其小, 机器灵活,我们只要定义好数据的格式, 就可以使用代码生成器生成代码,我们只需要使用它生成出来的代码就能实现轻松编写,读取结构化数据, 并且目前Protobuf支持 C++ , C# , Dart , Go , Java , Python多种语言 安装环境 想使用protobuf的话我们要先去下载两个工具,

Quick_Cocos2d_x V3.3 Protobuf Android

早过忘川 提交于 2019-12-06 06:59:15
ios集成protobuf之后,调用pro.android/build_native.sh 生成android工程的时候会出现 jni/../../Classes/AppDelegate.cpp:125: error: undefined reference to 'luaopen_protobuf_c' clang++: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [obj/local/armeabi/libcocos2dlua.so] Error 1 这时要修改 Android.mk文件, define copy-pbc-file-name $(patsubst jni/%,%, $(shell find $(LOCAL_PATH)/../../Classes/pbc $(LOCAL_PATH)/../../Classes/binding/lua -name "*.c")) endef LOCAL_SRC_FILES := hellolua/main.cpp \ ../../Classes/VisibleRect.cpp \ ../../Classes/AppDelegate.cpp \ ../../Classes/ConfigParser.cpp \ $

程序性能优化之网络传输与数据存储优化(五)上

霸气de小男生 提交于 2019-12-06 02:48:21
阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击: https://space.bilibili.com/474380680 本篇文章将先从google protobuf来介绍网络传输与数据存储优化: 简介 protobuf也叫protocol buffer是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 、json进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。 protobuf在各种rpc的实现上都占据重要角色。 优点  性能好/效率高  代码生成机制  支持“向后兼容”和“向前兼容”  支持多种编程语言 缺点  应用不够广(相比xml和json)  二进制格式导致可读性差  缺乏自描述 安装  github源代码下载地址: https://github.com/google/protobuf 源码包中的src/README.md, 有详细的安装说明,安装过程如下: 1、解压压缩包:unzip protobuf-master.zip

protoc转换为python

戏子无情 提交于 2019-12-05 22:55:52
1.配置proto 环境 ,下载地址: https://github.com/protocolbuffers/protobuf/releases 2.进入python3.6的scripts目录下,输入pip install protobuf==3.6.1进行安装 检查pip list 3.验证是否成功 cmd 下输入python 导入import google.protobuf不保持 则ok 4.手动生成pb.2文件 在cmd 下输入where protoc.exe 找到该文件,并且复制到新建的文件夹中,找到protoc文件,并将其复制到新建的文件夹中,cmd到新建的目录输入: 像这样: 结果如图: 到此ok,注意执行命令的适合,注意空格,另外protoc文件中,有其他文件,则需将其他以该种方式处理好,再进行否则报错 像这样: 5.转换成功的效果: 如有红线提示,则安装相应包即可,以上内容需要安装google 包 来源: https://www.cnblogs.com/yanhuidj/p/11949328.html

RPC协议

妖精的绣舞 提交于 2019-12-05 22:06:32
什么是 RPC? 初步印象   RPC的语义是远程过程调用,在一般的印象中,就是将一个服务调用封装在一个本地方法中,让调用者像使用本地方法一样调用服务。而具体的实现是通过调用方和服务方各自的 stub 基于TCP长连接进行数据交互达成。   上面的解释似云里雾里,仅仅了解到这种程度是远远不够的,还需要更进一步,以相对 底层 和 抽象 的视角来理解RPC。 三个特点   广义上来讲,所有本应用程序外的调用都可以归类为RPC,不管是分布式服务,第三方服务的HTTP接口,还是读写Redis的一次请求。从抽象的角度来讲,它们都一样是RPC,由于不在本地执行,都有三个特点:   需要事先约定调用的语义(接口语法)   需要网络传输   需要约定网络传输中的内容格式   以一次Redis调用为例,执行 redis.set("rpc", 1) 这个调用,其中:   set 及其参数 ("rpc", 1) ,就是对 调用语义 的约定,由redis的API给出   RedisServer会监听一个服务端口,通过TCP传输内容,用异步事件驱动实现高并发   底层库会约定数据如何进行编解码,如何标识命令和参数,如何表示结果,如何表示数据的结尾等等   这三个特点都是因为 调用不在本地 而不得不衍生出来的问题,也因此决定了RPC的形态。所有的RPC解决方案都是在解决这三个问题

【转】深入 ProtoBuf - 简介

天涯浪子 提交于 2019-12-05 20:20:19
之前在网络通信和通用数据交换等应用场景中经常使用的技术是 JSON 或 XML,而在最近的开发中接触到了 Google 的 ProtoBuf。 在查阅相关资料学习 ProtoBuf 以及研读其源码之后,发现其在效率、兼容性等方面非常出色。在以后的项目技术选型中,尤其是网络通信、通用数据交换等场景应该会优先选择 ProtoBuf。 自己在学习 ProtoBuf 的过程中翻译了官方的主要文档,一来当然是在学习 ProtoBuf,二来是培养阅读英文文档的能力,三来是因为 Google 的文档?不存在的! 看完这些文档对 ProtoBuf 应该就有相当程度的了解了。 翻译文档见 [索引]文章索引 ,导航为翻译 - 技术 - ProtoBuf 官方文档。 但是官方文档更多的是作为查阅和权威参考,并不意味着看完官方文档就能立马理解其原理。 本文以及接下来的几篇文章会对 ProtoBuf 的编码、序列化、反序列化、反射等原理做一些详细介绍,同时也会尽量将这些原理表达的更为通俗易懂。 何为 ProtoBuf 我们先来看看官方文档给出的定义和描述: protocol buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。 Protocol Buffers 是一种灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML 更小(3