内容简介:Teleport2.0 实现了一个全新的Golang TCP Socket框架,它通用、高效、灵活!可被用于Peer-Peer对等通信、RPC、长连接网关、微服务、推送服务,游戏服务等领域。 1. 特性 服务器和客户端之间对等通信,两者API方法...
Teleport2.0 实现了一个全新的Golang TCP Socket框架,它通用、高效、灵活!可被用于Peer-Peer对等通信、RPC、长连接网关、微服务、推送服务,游戏服务等领域。
1. 特性
服务器和客户端之间对等通信,两者API方法基本一致
底层通信数据包包含Header和Body两部分
支持单独定制Header和Body编码类型,例如JSON Protobuf
Body支持gzip压缩
Header包含状态码及其描述文本
支持推,拉,回复等通信方式
支持插件机制,可以自定义认证、心跳、微服务注册中心、统计信息插件等
无论服务器或客户端,均支持都优雅重启、优雅关闭
支持实现反向代理功能
日志信息详尽,支持打印输入、输出消息的详细信息(状态码、消息头、消息体)
支持设置慢操作报警阈值
底层连接使用I/O缓冲区
端点间通信使用I/O多路复用技术
teleport-server-peer
AB Testing 1: [Mac 4CPU 8GB] [single-process single-conn] teleport: QPS 37550
AB Testing 2: [Mac 4CPU 8GB] [single-process single-conn] teleport/socket: QPS 55419
2. 架构
2.1 名称解释
Peer:通信端点,可能是客户端或客户端
Session:连接会话,具有推、拉、回复、关闭等操作
Context:处理收到的或发送的数据包
Pull-Launch:从对端Peer拉数据
Pull-Handle:处理和回复对端Peer的拉请求
Push-Launch:将数据推送到对端Peer
Push-Handle:处理同伴的推送
Router:Handler注册路由
2.2 执行层次
Peer -> Connection -> Socket -> Session -> Context
2.3 数据包
HeaderLength | HeaderCodecId | Header | BodyLength | BodyCodecId | Body
注意:
HeaderLength: uint32, 4 bytes, big endian
BodyLength: uint32, 4 bytes, big endian
HeaderCodecId: uint8, 1 byte
BodyCodecId: uint8, 1 byte
type Packet struct { // HeaderCodec header codec name HeaderCodec string `json:"header_codec"` // BodyCodec body codec name BodyCodec string `json:"body_codec"` // header content Header *Header `json:"header"` // body content Body interface{} `json:"body"` // header length HeaderLength int64 `json:"header_length"` // body length BodyLength int64 `json:"body_length"` // HeaderLength + BodyLength Length int64 `json:"length"` }
2.4 头信息
type Header struct { // Packet id Id string // Service type Type int32 // Service URI Uri string // Body encoding type Gzip int32 // As reply, it indicates the service status code StatusCode int32 // As reply, it indicates the service status text Status string }
3. 开源项目
项目地址:https://github.com/henrylee2cn/teleport
授权协议:Apache2.0
【声明】文章转载自:开源中国社区 [http://www.oschina.net]
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Java一个全新的微服务框架(RedKale)
- WWDC19 苹果宣布全新的 UI 框架 SwiftUI
- CVPR 2019 | 全新缺失图像数据插补框架—CollaGAN
- 苹果发布全新 Swift UI 框架:一次编码,五端通用
- Amazon全新轻量级服务器端Swift框架:Smoke
- PhalApi 2.12.2 全新发布,PHP 轻量级开源接口框架
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Intersectional Internet
Safiya Umoja Noble、Brendesha M. Tynes / Peter Lang Publishing / 2016
From race, sex, class, and culture, the multidisciplinary field of Internet studies needs theoretical and methodological approaches that allow us to question the organization of social relations that ......一起来看看 《The Intersectional Internet》 这本书的介绍吧!