gRPC Golang/Python使用

以前开发网站都是用http协议,学过TCP/IP协议的人都知道,在传输层TCP的基础上,应用层HTTP就是填充了一定规则的文本.

1.gRPC使用和介绍

工作中使用到gRPC,其实http请求也是一种rpc变种,远程进程调用.gRPC底层是HTTP2协议

gRPC一开始由google开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统,面向移动和HTTP/2设计。目前提供C、Java和Go语言版本,分别是:grpc,grpc-java,grpc-go.其中C版本支持C,C++,Node.js,Python,Ruby,Objective-C,PHP和C#支持.

gRPC基于HTTP/2标准设计,带来诸如双向流、流控、头部压缩、单TCP连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。

gRPC基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个gRPC服务器来处理客户端调用。在客户端拥有一个存根能够像服务端一样的方法,即调用仿佛就在同一台机器。

可以使用不同语言平台进行开发

grpc.png

gRPC 默认使用protocol buffers来进行消息通讯,这是Google开源的一套成熟的结构数据序列化机制

Protocol

Protocol buffers are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then you can use special generated source code to easily write and read your structured data to and from a variety of data streams and using a variety of languages.

安装The protocol compiler

sudo apt-get install autoconf automake libtool curl make g++ unzip

./autogen.sh

####

#执行./autogen.sh时,报error: configure.ac:1: file'gtest/m4/acx_pthread.m4' does not exist的错误。

#在gmock目录新建gtest文件夹,拷贝项目根目录下m4文件夹至gtest文件夹

####

./configure

make

make check

sudo make install

sudo ldconfig # refresh shared library cache.

使用(下面go语言还需安装插件)

go get -u github.com/golang/protobuf/proto

go get -u github.com/golang/protobuf/protoc-gen-go

Go gRPC

获取:

go get google.golang.org/grpc

使用

protoc --go_out=plugins=grpc:. *.proto

如果要网关转http,请

go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway

go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger

然后

#!/usr/bin/env bash

protoc -I/usr/local/include -I. \

-I$GOPATH/src \

-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \

--go_out=plugins=grpc:. \

msg_newest.proto

protoc -I/usr/local/include -I. \

-I$GOPATH/src \

-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \

--grpc-gateway_out=logtostderr=true:. \

msg_newest.proto

Python gRPC

pip install grpcio==1.4.0

pip install grpcio-tools==1.4.0

pip install protobuf

python -m grpc.tools.protoc --python_out=pbdata --grpc_python_out=pbdata -I . msg.proto

有疑问加站长微信联系(非本文作者)

grpc双向流 python_gRPC Golang/Python使用相关推荐

  1. ASP.NET Core 3.0 gRPC 双向流

    目录 ASP.NET Core 3.0 使用gRPC ASP.NET Core 3.0 gRPC 双向流 ASP.NET Core 3.0 gRPC 认证授权 一.前言 在前一文 < 二. 什么 ...

  2. grpc双向流究竟是什么情况?2段代码告诉你

    本文分享自华为云社区<grpc双向流究竟是什么情况?2段代码告诉你>,作者:breakDawn. 为什么需要grpc双向流? 有时候请求调用和返回过程,并不是简单的一问一答形式,可能会涉及 ...

  3. Gin + gRPC双向流模式 + sse实现grpc客户端到前端界面的消息推送

    Gin + gRPC + sse实现grpc客户端到前端界面的消息推送 功能需求 工厂客户端与服务端通过gRPC连接 突破工厂防火墙(不需要额外开启端口) 前端可以控制数据推送的开启和停止 前端数据大 ...

  4. gRPC的通信方式-客户端流式、服务端流式、双向流式在Java的调用示例

    场景 gPRC简介以及Java中使用gPRC实现客户端与服务端通信(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/ ...

  5. java版gRPC实战之五:双向流,rabbitmq持久化原理

    responseObserver.onNext(DeductReply.newBuilder() .setCode(code) .setMessage(message) .build()); } @O ...

  6. java版gRPC实战之五:双向流

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos <java版gRPC实战>全系列链接 用p ...

  7. golang python rpc_grpc - 使用 golang 带你从头撸一套 RPC 服务(一)

    gRPC 是一个高性能.开源和通用的 RPC 框架,面向移动和 HTTP/2 设计,带来诸如双向流.流控.头部压缩.单 TCP 连接上的多复用请求等特.这些特性使得其在移动设备上表现更好,更省电和节省 ...

  8. Slide:配置Oracle 10g双向流复制

    配置Oracle 10g 双向流复制 View more documents from Maclean Liu 本文转自maclean_007 51CTO博客,原文链接:http://blog.51c ...

  9. workbench双向流固耦合分析

    一. 双向流固耦合的特点 1.1双向流固耦合都是瞬态分析,在单独设置流体.固体瞬态分析特性外基础上要统一流固耦合的时间步: 1.2双向流固耦合需要考虑大变形问题,以及大变形带来的网格变形问题: 1.3 ...

最新文章

  1. 人工智能将给我们的高等教育带来怎样的机遇和挑战?
  2. apue 进程退出状态
  3. 宠物乘机的三种模式【转】
  4. Python对象注意点
  5. Spring Cloud 爆高危漏洞!!!
  6. python贪吃蛇小游戏_python开发贪吃蛇小游戏
  7. 浏览器angent分析工具
  8. 1.1.0-简介-P9-分布式ID生成器解决方案
  9. Apache Thrift - 可伸缩的跨语言服务开发框架
  10. CCF201604-5 网络连接(募集解题代码)
  11. Atitti 编程语言高级 api 与高级知识 堆栈api 异常api Meta anno注解元数据api Ref 反射api Database meta api 字节码库如果你正在编写一个框架或者
  12. 免费开源PDF复制格式整理神器
  13. flash打造佛光效果实例教程
  14. 顶顶通软电话介绍-一个网络电话客户端(SIP软电话)
  15. 数据科学家必须知道的10个深度学习架构
  16. linux设置网卡开机自启,centos系统怎么设置网卡开机自启
  17. Alibaba独家首发“Java成长笔记”,差距不止一点点
  18. 双机热备(双主模式)——实现数据库的高可用
  19. 路由器交换与配置综合实验(二)外网
  20. 一篇文章看懂:量化交易

热门文章

  1. 明日直播| NLPCC workshop百度架构师带你快速上手飞桨NLP
  2. JButton:按钮组件
  3. 计算机问卷调查数据分析报告,调查问卷分析报告怎么写
  4. android sdk引入 微信分享_android 调用本地微信自定义多图分享朋友圈,可放在share sdk中一起使用...
  5. Unity Recorder 插件录屏--简单小记
  6. html5摄像头手势识别,基于OpenCV的摄像头动态手势轨迹识别及其应用
  7. Zend Studio 10.6.0正式版注册破解
  8. 中科院计算机博士论文致谢火了!网友:读完已是泪流满面……
  9. Fedora Core 6安装手册
  10. yolov5 win10 数据集制作 各种踩坑