Protocol Buffers

PHP中使用gRPC客户端

半世苍凉 提交于 2019-11-30 19:49:38
因为工作需要使用gRPC,本人使用的是windows10,不过linux的操作流程基本一样。 直接进入主题,分为了几部分 1、下载Protoc 下载地址: https://github.com/google/protobuf/releases 这里采用的二进制文件,选择对应的平台,下载 https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protoc-3.7.1-win64.zip 解压后得到,在bin文件夹下的 protoc.exe。我放到 D:\Program Files\protoc-3.7.1-win64\bin 下,并加入到系统环境变量 Path 中,就可以使用 protoc 命令了,可以用 protoc --version 来查看是否成功。(这一步很重要用于生成 protobuf 文件对应的 PHP代码 用的) 2、编写 protocol buffers 文件 如何编写请看 Protobuf3语言指南 写得不错,首先创建一个为 testgrpc_com 项目,我这的位置是 E:\www\testgrpc_com ,在项目下简单写了一个 xuexitest.proto syntax = "proto3"; // 指定proto版本 package xuexitest; // 指定包名 /

在 Cocos Creator 中使用 Protobufjs(一)

一世执手 提交于 2019-11-30 12:20:12
一. 环境准备 我一直在探索 Cocos H5正确的开发姿势 ,目前做javascript项目已经离不开 nodejs、npm或grunt等脚手架工具了。 1.初始化package.json文件 > npm init 当新建好cocos-js或creator项目,在项目根目录使用 npm init 命令,一路回车,将在当前目录创建 package.json 文件用于nodejs三方模块的管理。关于npm的使用细节网络上有很多教程,在此不用细说。 2. protobufjs模块 本人最早在cocos2dx 2.x时代就开始用 protobufjs 模块来操纵protobuf一直到现在。所以下面所有内容都是关于protobufjs在cocos creator中的使用,包括原生平台(cocos2d-js也是大同小异)。 安装protobufjs到项目 > npm install protobufjs @5 --save 使用npm install命令安装模块,注意我们这里使用的是protobufjs 5.x版本。 虽然protobufjs目前最新的 6.x版本,提供了ts、rpc等功能的支持,但有一个问题是在微信小游戏中不能动态加载proto文件。 安装protobufjs到全局 > npm install -g protobufjs @5 使用npm install -g

zk中的序列化

寵の児 提交于 2019-11-30 12:04:14
网络传输和数据存储中都离不开序列化 使用的是jute,性能更强的有 Apache Avro ,thrift,protobuf等序列化组件 序列化所在模块org.apache.jute compiler下面有 外层有接口 Index 是用来做什么的? InputArchive 实现类BinaryInputArchive OutputArchive 实现类 BrinaryOutputArchive ToStringOutputArchive Record 外层有接口 Index 是做什么用的? 来源: https://my.oschina.net/iioschina/blog/3110648

最近太多人问Protobuf的问题了,把这个重新搬出来!

空扰寡人 提交于 2019-11-30 10:17:29
pb杀手 我先让pbkiller做个自我介绍 > pbkiller :我是一位专业的争对 protobuf 问题训练有素的杀手,我可以为您轻松搞定 protobuf 在 Cocos Creaotr 开发中的诸多问题,并且可以让你随意折磨曾经折磨过你的 protbuf 问题。 一、臣服 我 pbkiller 最厉害的技能是可以快速逮捕 proto 文件,让他们臣服在主人脚下,不论是在浏览器、手机、桌面环境上。 1. 呼唤 只需要低声轻吟我的名字我就会出现在你的身边,对于我的主人我是非常温柔的。 let pbkiller = require('pbkiller'); 2. 让 proto 文件跪在主人面前 对于 proto 文件我是残忍的,但请主人预先将所有 proto 文件放在 assets/resources/pb 目录,召唤一声 preload,我立马就到,您再使用 loadAll() 指令,我会将 proto 文件一网打尽,让它们全部跪在您的面前。 //所有proto对象都集中在返回的pb对象上 pbkiller.preload(() => { let pb = pbkiller.loadAll(); }); 3. 让 JSON 格式同样下跪 如果主人喜欢json格式的proto文件,目前需要麻烦主人先使用 protobufjs 附带的pbjs工具将 proto 文件转换成

Netty初学

不羁的心 提交于 2019-11-30 07:58:27
看了一天的netty.总结如下: 看之前,要对nio的机理又一定了解 入门文档的英文版:https://netty.io/wiki/user-guide-for-4.x.html 入门文档的中文版:https://wiki.jikexueyuan.com/project/netty-4-user-guide/ 但是这个着重讲怎么用.看完之后只能让代码跑起来. 讲的比较细的话,可以看 ( 一起学Netty )https://blog.csdn.net/linuu/article/details/51306480.这是一个二十篇的教程. Netty主要关心的问题有: 消息的处理机制:Netty处理消息,是通过handler,内置的handler和自定义的handler,都继承了统一的HandlerAdapter.所有的handler,塞进一个管道中,上一个处理完,传递给下一个(通过ChannelHandlerContext.fire开头的方法). 消息的编码/解码:Netty内置了很多编码器,甚至包括google的protobuf.练习的话,可以用string相关的编码器.做RPC的话可以直接用ProtoBuf.高级应用的话,可以基于ByteBuf来做. 粘包问题:Netty提供了很多方式来处理粘包.主要是再decode上下功夫.提供的策略包括:

Schema Registry 教程

感情迁移 提交于 2019-11-30 02:49:19
物联网设备终端种类繁杂,各厂商使用的编码格式各异,所以在接入物联网平台的时候就产生了统一数据格式的需求,以便平台之上的应用进行设备管理。 EMQ X 企业版 3.4.0 提供了 Schema Registry 功能,提供编解码能力。Schema Registry 管理编解码使用的 Schema、处理编码或解码请求并返回结果。Schema Registry 配合规则引擎,可适配各种场景的设备接入和规则设计。 数据格式 下图展示了 Schema Registry 的一个应用案例。多个设备上报不同格式的数据,经过 Schema Registry 解码之后,变为统一的内部格式,然后转发给后台应用。 [图1: 使用 Schema Registry 对设备数据进行编解码] 二进制格式支持 EMQ X 3.4.0 内置的 Schema Registry 数据格式包括 Avro 和 Protobuf 。Avro 和 Protobuf 是依赖 Schema 的数据格式,编码后的数据为二进制,使用 Schema Registry 解码后的内部数据格式(Map,稍后讲解) 可直接被规则引擎和其他插件使用。此外 Schema Registry 支持用户自定义的 (3rd-party) 编解码服务,通过 HTTP 或 TCP 回调的方式,进行更加贴近业务需求的编解码。 架构设计 Schema

mac 安装protobuf 2.5.0

邮差的信 提交于 2019-11-29 21:49:31
下载安装包 目前protobuf的最新版本是3.9.1,但是hadoop等好多框架依然依赖的是2.5.0,因此,最好不要安装最新的。 https://github.com/protocolbuffers/protobuf/releases/tag/v2.5.0 编译安装 解压到安装目录,并进入安装目录 $ cd protobuf-2.5.0 以此执行以下命令: ./configure make make check make install 验证 protoc --version 如果出现 libprotoc 2.5.0则说明安装成功。 注: 卸载protobuf执行以下命令: which protoc 然后 sudo rm 这个目录,如: sudo rm /usr/local/bin/protoc 来源: https://my.oschina.net/u/3730149/blog/3107220

EMQ 9 月 新发 | EMQ X Enterprise 3.4.0 功能概览

泪湿孤枕 提交于 2019-11-29 07:24:55
9 月正式开启,EMQ 发布了 EMQ X Enterprise 3.4.0 正式版。该版本强化了管理配置和规则引擎功能,新增消息编解码、集群热配置及车联网协议支持,设计了全新的管理监控 Dashboard 页面,是目前企业应用推荐使用的稳定版本。 相关安装包已在 EMQ 官网 开放下载,同时官网提供 License 免费自助申请试用、在线购买 License 授权服务。 EMQ X Enterprise 企业级物联网 MQTT 消息平台,支持百万级物联网设备一站式接入、MQTT&CoAP 多协议处理、低时延实时消息通信。支持基于 SQL 的内置规则引擎,灵活处理/转发消息到后端服务,存储消息数据到各种数据库,或桥接 Kafka、RabbitMQ、Pulsar 等企业中间件。 EMQ X Enterprise 适用于各种物联网应用场景,助企业快速构建物联网应用,并支持公有云、私有云、物理机、容器/K8S 任意部署。 全新的 Dashboard UI 在以往版本的 EMQ X 里 EMQ 围绕 MQTT 消息接入,拓展了一系列方便快速构建物联网应用的基础功能,如认证鉴权/ACL,数据持久化和消息桥接(企业版)并集成至 Dashboard 中。 为了支撑更多新功能的引入及功能引入后系统易用性、监控管理能力的同步改进提升,EMQ 开发团队率先针对企业版设计了全新的 Dashboard

教你如何在Ubuntu 18.04 下安装 Tensorflow(CPU)

六眼飞鱼酱① 提交于 2019-11-29 02:40:22
最近我开始学习深度学习框架Tensorflow,一开始在Windows平台下的anaconda下安装,由于anaconda安装几次后navigator打开老是出现闪退的问题,所以决定换个Ubuntu下继续折腾tensorflow。本人笔记本没有NVIDIA显卡,只装的CPU版本的。而且是在虚拟机下的,下面开始吧。 先安装好Ubuntu 18.04版本的系统(最好是Ubuntu的14.04版本以上),Ubuntu系统已经有了了Python 3.7.7.7,所以不需要再安装Python了。 一、首先更新源为阿里云软件源,增加下载速度 (1)备份当前也就是默认官方的源列表 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup (2)删除sources.list文件中的列表,删除全部内容 sudo gedit /etc/apt/sources.list1 (3)替换内容后,保存 deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb http:/

TiDB Binlog 源码阅读系列文章(四)Pump server 介绍

狂风中的少年 提交于 2019-11-28 07:24:01
作者: satoru 在 上篇文章 中,我们介绍了 TiDB 如何通过 Pump client 将 binlog 发往 Pump,本文将继续介绍 Pump server 的实现,对应的源码主要集中在 TiDB Binlog 仓库的 pump/server.go 文件中。 启动 Pump Server Server 的启动主要由两个函数实现: NewServer 和 (*Server).Start 。 NewServer 依照传入的配置项创建 Server 实例,初始化 Server 运行所必需的字段,以下简单说明部分重要字段: metrics :一个 MetricClient ,用于定时向 Prometheus Pushgateway 推送 metrics。 clusterID :每个 TiDB 集群都有一个 ID,连接到同一个 TiDB 集群的服务可以通过这个 ID 识别其他服务是否属于同个集群。 pdCli : PD Client,用于注册、发现服务,获取 Timestamp Oracle。 tiStore :用于连接 TiDB storage engine,在这里主要用于查询事务相关的信息(可以通过 TiDB 中的对应 interface 描述 了解它的功能)。 storage :Pump 的存储实现,从 TiDB 发过来的 binlog 就是通过它保存的