Skip to content
/ iip Public

基于TCP的多路复用的基础通讯协议及框架(IIP,Internal Interaction Protocol),该协议可作为RPC接口调用的底层协议,如同http2之于gRPC,本项目基于该协议实现了client/server的基础框架。

License

Notifications You must be signed in to change notification settings

truexf/iip

Folders and files

NameName
Last commit message
Last commit date

Latest commit

8ee6128 · Apr 10, 2023
Apr 10, 2023
Apr 10, 2023
Jul 23, 2021
Oct 15, 2021
Jul 30, 2021
Jul 6, 2021
Jun 8, 2022
Nov 22, 2021
Jul 22, 2021
Jul 29, 2021
Apr 10, 2023
Apr 10, 2023
Jul 16, 2021
Jul 8, 2021
Nov 21, 2021
Apr 10, 2023
Jul 16, 2021
Dec 6, 2021
Aug 13, 2021
Jul 22, 2021
Apr 10, 2023
Nov 22, 2021
Jul 21, 2021
Jul 29, 2021
Jul 20, 2021
Jul 17, 2021

Repository files navigation

GoDoc

IIP是什么?

基于TCP的多路复用的基础通讯协议及框架(IIP,Internal Interaction Protocol),该协议可作为RPC接口调用的底层协议,如同http2之于gRPC,本项目基于该协议实现了client/server的基础框架。

使用说明

benchmark对比测试

  • BenchmarkPFEchoClientServer: 普通iip client单个channel
  • BenchmarkPFEchoNetHttp:标准库 net/http
  • BenchmarkPFIIPBalanceClient:iip load balance client
  • 运行benchmark前需要先编译运行启动server端,server代码在example/echo_server/ 编译:$ go build ./echo_server.go 启动: $ ./echo_server
  • 单核:
$ GOMAXPROCS=1 go test -bench=. -naddr="192.168.2.98:9091" -lbcaddr="192.168.2.98:9090#2" -iipaddr="192.168.2.98:9090" -run="PF.*" -benchmem -benchtime=10s
BenchmarkPFEchoClientServer 	    5418	   1944837 ns/op	   99428 B/op	      16 allocs/op
BenchmarkPFEchoNetHttp      	    3510	   3342903 ns/op	   51476 B/op	      64 allocs/op
BenchmarkPFIIPBalanceClient 	    6043	   1942451 ns/op	   92033 B/op	      16 allocs/op
  • 四核:
$ GOMAXPROCS=4 go test -bench=. -naddr="192.168.2.98:9091" -lbcaddr="192.168.2.98:9090#2" -iipaddr="192.168.2.98:9090" -run="PF.*" -benchmem -benchtime=10s
BenchmarkPFEchoClientServer-4   	    7243	   1589468 ns/op	   99418 B/op	      16 allocs/op
BenchmarkPFEchoNetHttp-4        	   13854	    868070 ns/op	   51576 B/op	      64 allocs/op
BenchmarkPFIIPBalanceClient-4   	   19844	    590167 ns/op	   85720 B/op	      15 allocs/op
  • 八核:
$ GOMAXPROCS=8 go test -bench=. -naddr="192.168.2.98:9091" -lbcaddr="192.168.2.98:9090#2" -iipaddr="192.168.2.98:9090" -run="PF.*" -benchmem -benchtime=10s
BenchmarkPFEchoClientServer-8   	    7090	   1630507 ns/op	   99443 B/op	      16 allocs/op
BenchmarkPFEchoNetHttp-8        	   27556	    428245 ns/op	   52198 B/op	      65 allocs/op
BenchmarkPFIIPBalanceClient-8   	   36670	    305865 ns/op	   84436 B/op	      15 allocs/op

典型案例

一个靠谱的底层通讯框架组件,必然是基于一个真实生产系统,伴随着该系统的成长迭代,历史思考和实践基础上抽象发展而成。

image
百寻广告流量交易平台日处理数十亿次广告流量请求,峰值qps 4w+, 采用iip承载其内部核心交易系统的微服务。

IIP架构

image

IIP帧格式:

image

* 对于协议的扩展性考虑,按分层的思想,可以在上层通过对数据字段进行进一步的协议定义来满足,本协议保持简单性,不提供额外的冗余扩展字段。

比如示例中的文件下载,每次请求响应传输文件的其中一块,文件的整体组合由一个简单的上层协议实现。

About

基于TCP的多路复用的基础通讯协议及框架(IIP,Internal Interaction Protocol),该协议可作为RPC接口调用的底层协议,如同http2之于gRPC,本项目基于该协议实现了client/server的基础框架。

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages