Go语言的开源项目1.Docker项目
网址为。
介绍:Docker是一种操作系统层面的虚拟化技术,可以在操作系统和应用程序之间进行隔离 , 也可以称之为容器 。Docker可以在一台物理服务器上快速运行一个或多个实例 。例如 , 启动一个Cent OS操作系统 , 并在其内部命令行执行指令后结束,整个过程就像自己在操作系统一样高效 。
2.golang项目
网址为。
介绍:Go语言的早期源码使用C语言和汇编语言写成 。从Go 1.5版本自举后,完全使用Go语言自身进行编写 。Go语言的源码对了解Go语言的底层调度有极大的参考意义,建议希望对Go语言有深入了解的读者读一读 。
3.Kubernetes项目
网址为。
介绍:Google公司开发的构建于Docker之上的容器调度服务 , 用户可以通过Kubernetes集群进行云端容器集群管理 。
4.etcd项目
网址为。
介绍:一款分布式、可靠的KV存储系统,可以快速进行云配置 。
5.beego项目
网址为。
介绍:beego是一个类似Python的Tornado框架,采用了RESTFul的设计思路,使用Go语言编写的一个极轻量级、高可伸缩性和高性能的Web应用框架 。
6.martini项目
网址为。
介绍:一款快速构建模块化的Web应用的Web框架 。
7.codis项目
网址为Labs/codis 。
介绍:国产的优秀分布式Redis解决方案 。
8.delve项目
网址为。
介绍:Go语言强大的调试器 , 被很多集成环境和编辑器整合 。
gRPC入坑记概要
由于gRPC主要是谷歌开发的 , 由于一些已知的原因 , gRPC跑demo还是不那么顺利的 。单独写这一篇 , 主要是gRPC安装过程中的坑太多了,记录下来让大家少走弯路 。
主要的坑:
本文讲解gRPC demo的同时,会介绍如何解决这些坑 。本文对应的Github地址:。该仓库存储了demo示例,以及部分系统编译好的二进制包,大家觉得有些步骤里耗时实在太长了,可以直接clone该仓库,复制二进制包到对应目录(仅限测试开发,生产环境还是老老实实自己编译吧) 。
升级GCC
gRPC命令行工具编译需要使用 GCC4.8及以上版本 。CentOS6系列的内置版本是GCC4.7 。
如果你的系统GCC版本=4.8,可以忽略本节 。如果仅使用golang、java,请忽略本节 。
如果需要升级gcc至4.8或更高版本,建议直接采用安装SCL源之后安装devtoolset-6(devtoolset-6目前gcc版本为6.3),因为devtoolset-4及之前的版本都已经结束支持,只能通过其他方法安装 。
升级到gcc 6.3:
需要注意的是scl命令启用只是 临时 的 , 退出shell或重启就会恢复原系统gcc版本 。如果要长期使用gcc 6.3的话:
这样退出shell重新打开就是新版的gcc了 。其它版本同理 。
升级到gcc 7.3:
已经停止支持的devtoolset4(gcc 5.2)及之前版本的安装方法,可能比较慢,大家感兴趣的话可以尝试 。
编译gRPC命令行工具
gRPC分C、JAVA、GO、NodeJS版本 , C版本包括C, Python, Ruby, Objective-C, PHP, C#,这些语言都是基于C版本开发的,共用代码库一个代码库 。
如果使用C版本的gRPC,最终要从源码里编译出下列工具:
这些工具作为插件供proto编译器使用 。需要先下载 grpc/grpc github上的源码 。
这里有2个坑:
1、grpc/grpc仓库比较大,鉴于国内访问的网速,建议使用国内镜像 。码云()提供了同步更新的镜像地址:
这样下载速度提高了不少 。
2、git submodule update这个命令实际就是在下载.gitmodules文件里定义的第三方依赖项到third_party目录,这个依赖项有很多,大家可以打开.gitmodules文件查看下详情 。依赖的仓库都在github上,下载没几个小时是下载不下来的,就等着慢慢下载吧 。
回头想想,我们花费了很多时间 , 结果只是为了得到grpc的proto编译插件 。
PHP相关支持
PHP暂时不支持作为grpc的服务端 。作为客户端是可以的,需要机器安装:
其中protoc和protobuf c扩展已经在 Protobuf 小试牛刀 介绍过了,这里不再赘述 。上一小节里如果安装成功,那么grpc_php_plugin也是有了的 。下面介绍如何安装PHP版的gRPC库 。
安装grpc c扩展:
要求:GCC编译器需要4.8及以上版本 。可以使用pecl安装:
也可以指定版本:
或者下载源码()安装:
grpc/grpc代码库里也有PHP扩展的C源码,在grpc/src/php/ext/grpc目录,进去也可以直接编译 。
编译完成后在php.ini里添加,使用php --ri grpc可以查看信息 。
安装完C扩展后,还需要使用composer安装grpc的库:
gRPC示例
编写gRPC proto
一共定义了三个文件:
其中 User 作为 Model定义 , Response 用于 RPC统一返回定义,GreeterService 则是服务接口定义 。
限于篇幅,proto文件详见仓库的proto目录 。
GreeterService.proto文件内容如下:
这里面定义了一个service,相当于定义了一个服务接口,我们把方法名、参数定义好了 , 后面需要去实现它 。由于gRPC不支持PHP作为服务端,这里我们使用Golang作为服务端 。
首先需要使用proto工具编译出golang的代码:
执行成功,会在 Pb_Go目录里生成Go代码:
如果需要生成PHP客户端的代码 , 则需要使用grpc php的命令行工具grpc_php_plugin,前面小结如果执行成功,这个工具已经有了 。然后:
最终生成的文件:
注意:编译那里如果我们不加--grpc_out=../$out --plugin=protoc-gen-grpc=/usr/local/bin/grpc_php_plugin , 生成的PHP类是没有GreeterClient的 。这个文件是gRPC编译工具自动生成的,用于连接gRPC服务端 。
go编写服务
我们用Golang写服务端 。上面虽然生成了Golang的部分代码,但真正的服务还没有写呢 。
main.go
首先我们新建个main.go,代码不多,我直接贴出来:
然后就可以编译了 。
有个大坑:go build main.go的时候会先下载go.mod里定义的依赖(依赖比较多,详情查看:),其中下面这条非常慢,仓库太大了 , 虽然重定向到github:
为了快速下载,我在码云上做了镜像,地址:gitee.com/52fhy/google-api-go-client。改了之后下载快多了 。
编译成功后,生成了二进制文件main 。我们可以直接运行:
go test
为了测试我们写的服务是否正常,可以写测试用例:
test_client.go
运行:
运行有点慢,感觉依赖的库多了 。
php客户端
使用gRPC PHP客户端 , 确保你已经安装了:
示例:
client_test.php
运行后输出:
常见问题
1、CentOS6使用 go mod获取第三方依赖包unknown revision xxx错误
解决:其实go mod调用链中会用到一些git指令,当git版本比较旧时,调用失败产生错误,并给出歧义的提示信息 。方法就是升级git版本,CentOS6自带的git是1.7版本 。升级完毕后,再尝试go mod 。
快速升级方法:
centos6:
2、PHP报错:Fatal error: Class 'Google\Protobuf\Internal\Message' not found
解决:请安装PHP的protobuf c扩展 。
3、PHP报错:Fatal error: Class '\Grpc\BaseStub' not found
解决:使用composer require grpc/grpc安装grpc 。另外对应的grpc C扩展也要安装 。
4、下载 github release包很慢怎么办?
解决:下载Mac版 Free Download Manager 下载工具可以解决Github 下载缓慢或失败问题 。速度嗖嗖的 。
参考
1、为CentOS 6、7升级gcc至4.8、4.9、5.2、6.3、7.3等高版本
2、centos 6.x/7.x使用yum升级git版本 - 夜空
3、Protobuf 小试牛刀 - 飞鸿影
(本文完)
golang自动生成model结构体源码码地址---------
github:
码云:
生成示例---------
参数配置--------conf.go
生成model--------
gitee码云ssh配置无法使用的解决办法时间为2021-11-02 , git版本2.33.1-64-bit,电脑为Window10 。
根据网上所述,安装好Git、本地生成SSH公私钥、增加公钥到Gitee 。但是拉取远程仓库到本地提示git@gitee.com: Permission denied (publickey)
使用ssh -T git@gitee.com命令查看也是如此 。
原来是新版本Window上的Git使用的OpenSSH版本是8.8,默认使用的是RSA-SHA2算法,而Gitee使用的golang ssh库使用的是RSA-SHA1算法,造成公钥验证不通过 。
解决办法是在个人用户的.ssh文件夹下创建一个名为config的配置文件,文件中写入以下内容
Host gitee.com
HostkeyAlgorithmsssh-rsa
PubkeyAcceptedAlgorithmsssh-rsa
【go语言项目码云 go项目源码】go语言项目码云的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于go项目源码、go语言项目码云的信息别忘了在本站进行查找喔 。
推荐阅读
- 唐山电商网站搭建优势,电商网站平台搭建
- python中异常的,python中的异常处理有哪些
- 网络堵车豪车游戏,豪车堵车第一视角
- c语言不显示函数 c语言不显示函数怎么办
- 如何营销基金经验,基金营销手段
- oracle数据库解决方案,oracle数据库问题
- 有什么设备可以在水里拍摄,能在水里用的相机
- python如果函数 python函数内的函数
- oracle查询时加上行数,oracle在查询的结果中加一列