使用 golang 实现网络抓包是非常容易的,可以使用谷歌的包 github.com/google/gopacket。由于 gopacket 构建在 libpcap 之上,我强烈建议您了解该库的工作原理。您可以在 C 中学习如何使用 libpcap 进行更深入的了解。 1.libpcap
thrift 之 go 入门 Getting Started with Thrift Go
下载、安装 thrift 编译器
- thrift 编译器的下载连接 https://thrift.apache.org/downloa 这里注意下版本
- 将下载的编译器放到系统的可执行目录下,并去掉版本信息, eg: thrift-0.19.0.exe 改为 thrift.exe
go 安装 thrift 包
go get github.com/apache/thrift@0.19.0
#这里的版本要和上面的对应
新建 tmp 目录
新建一个临时目录 tmp
在新建的 tmp 目录下新建一个存放 thrift 文件的 thrift 目录
将上述 thrift 包的实例文件(tutorial)拷贝到 thrift 目录下
我这里的 thrift 安装包的路径是 C:\Users\shanks\go\pkg\mod\github.com\apache\thrift@v0.19.0
将 tutorial 中的 shared.thrift 和 tutorial.thrift 文件 拷贝到 tmp/thrift中
生成对应语言的协议文件
在上述新建的 tmp 目录下执行
thrift -r --gen go thrift/tutorial.thrift
生产 go 语言版本的 thrift协议代码
拷贝实例代码
将上述安装目录下的 tutorial\go\src 中的代码(包括上层的 server.crt 和 server.key )拷贝到 tmp 目录下
编译 go 代码
go mod init example.com/m 有 go.mod 可不执行
go build main.go
编译报错处理即可
go flags包简介 go flags package introduction
flag包是Go语言标准库提供用来解析命令行参数的包,使得开发命令行工具更为简单
常用方法
1.flag.Usage 输出使用方法,如linux下ls -h的帮助输出
2.flag.Type(参数名, 默认值, 使用提示) Type为类型 如String, Int, Uint 调用相应的flag.Sring flag.Int flag.Uint方法
thrift 备忘录 thrift memorandum
下载
thrift 编译器的下载连接 https://thrift.apache.org/download
版本
上述下载的编译器版本要和后续引用的 thrift 头文件的版本对应,比如这里下载的是 0.19.0 版本,后续引用头文件 github.com/apache/thrift 或者 git.apache.org/thrift.git 需要 git checkout 0.19.0
多个仓库 replace 的问题
go.mod 中可以手动添加 replace git.apache.org/thrift.git v0.19.0 => github.com/apache/thrift v0.19.0
体系化认识 RPC
RPC(Remote Procedure Call),即远程过程调用,是一个分布式系统间通信的必备技术。
RPC 最核心要解决的问题就是在分布式系统间,如何执行另外一个地址空间上的函数、方法,就仿佛在本地调用一样,个人总结的 RPC 最核心的概念和技术包括如下,如图所示:
Go 常用命令 Go Common commands
一键安装 go one key install go
apt-get install go
设置代理 set proxy
go env -w GOPROXY=https://goproxy.cn,direct
构建 go.mod create go.mod
go mod init xxx.com/xxx
设置模块代理 关于go mod安装第三方包提示: module declares its path as: xxx but was required as: yyy 解决办法
在 go.mod 中手动添加
replace yyy v0.16.0 => xxx v0.16.0
v0.16.0 是版本号,是否指定看具体情况
负载均衡算法
1、轮询法
将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。
2、随机法
通过系统的随机算法,根据后端服务器的列表大小值来随机选取其中的一台服务器进行访问。由概率统计理论可以得知,随着客户端调用服务端的次数增多,其实际效果越来越接近于平均分配调用量到后端的每一台服务器,也就是轮询的结果。
PPP 原理介绍
PPP的基本概念
PPP的基本架构
PPP协议处于TCP/IP的数据链路层,主要用在支持全双工的同异步链路上,进行点到点之间的数据传输。
图8-16 PPP在协议栈中的位置
PPP主要由以下几类协议族组成: