【轻知识】跑grpc的一个demo——Building APIs with GRPC, PHP, and Golang

作者 : 开心源码 本文共2130个字,预计阅读时间需要6分钟 发布时间: 2022-05-12 共160人阅读

文章的名字以别人的文档来命名,上周晚上一边泡脚一边搜资料,无意间在speakerdeck搜关于php microservice的东西搜到了一个文档《Building APIs with GRPC, PHP, and Golang》。感觉挺有意思的。就想着跑起来。把这个代码。作者demo

科学上网环境

我也是一遍安装一遍弄好了v-p-n。
Composer、Pecl、go get 都需要代理商。

ShadowSocks用户端+privoxy搞定了科学上网(Ubuntu下SS(ShadowSocks)搭建)。
启动

ssr+privoxy启动后,用curl google.com。检测能否成功。

假如curl发生下面情况。而且你还很郁闷。八成是服务器时间不对。

[root@localhost ~]# curl www.google.com<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head>  <title>502 - No server or forwarder data received (Privoxy@localhost)</title>  <meta http-equiv="Content-Style-Type" content="text/css">

Composer 和 go get 的科学上网可以。配置环境变量export http_proxy='127.0.0.1:8118' && export https_proxy='127.0.0.1:8118'。而后composer 、go get 下载就好使了。

pecl 呢?比方安装grpc 扩展时候,提醒我(Connection tossl://pecl.php.net:443′ failed: )。这么pear config-set http_proxy your.proxy:port`(php pecl命令使用代理商上网)就搞定了。

查看能否配置了代理商/home/nobody/web/php7/bin/pear config-show |grep 127

安装 Protocol Buffers

参考 protocolbuffers/protobuf/blob/master/src/README.md

安装完即可以用protoc根据.proto文件生成对应语言的文件了 。

环境安装

先跑了一个官方demo

《Go Quick Start》。我发现我的go版本不对。我的go版本是1.8.3 。run demo时,报了如下错误

golang.org/x/net/http2/server.go:220: s.RegisterOnShutdown undefined

这个issue说的是 。RegisterOnShutdown 方法是在 go1.9 增加的。于是我安装了一个高于1.9版本的go1.11.4(用1.4.3编译了一份1.11.4),如何用1.4.3编译,我参考的是《Go语言学习笔记》第十二章。

1.11.4 安装之后,安装官方文档走了一遍好了。下载grpc 是比较慢的。

php 环境

我单独编译了一份 7.1的环境。我本机自带5.4的版本不能用。grpc的扩展官方文档有说PHP Quickstart。

好久没有编译php了。发现编译之后php.ini 不在etc下。于是:、

cp /home/nobody/web/php-7.1.25/php.ini-development /home/nobody/web/php7/etc/php.ini

composer 指定php执行,安装protobuf 跟grpc。

/home/nobody/web/php7/bin/php /usr/bin/composer install

demo运行

继续看她的文档就OK了。在运行go的时候,由于目录的缘故。grpc-server/main.go文件引入 `pb “../libs/go”的路径需要变下。总之,引入问题的报错是很好判断与改正的。

收获与教训

收获就是理解了http2,各个rpc框架的比照。protobuf的好处。科学上网。

教训。不应该看ppt去找相关资料。而是应该先安装官方文档走一走。就会顺利。还有就是科学上网的必要性。

好吧!由于英文不好的缘故,推特没怎样用过!第一次发推!以后会着重学习英语。

对了,关于RPC。忽然想起了 《Go Web 编程》([Asta谢] 的
8.4 RPC。真是一个不错的告诉你什么是rpc的小例子。

参考资料:

  • 《Building APIs with GRPC, PHP, and Golang》https://speakerdeck.com/cecyc/building-apis-with-grpc-php-and-golang

*《Ubuntu下SS(ShadowSocks)搭建》https://www.songma.com/p/4c95d10b898b

  • 《php pecl命令使用代理商上网》https://www.yanglong.pro/php-pecl%E5%91%BD%E4%BB%A4%E4%BD%BF%E7%94%A8%E4%BB%A3%E7%90%86%E4%B8%8A%E7%BD%91/

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 【轻知识】跑grpc的一个demo——Building APIs with GRPC, PHP, and Golang

发表回复