teleport

package
v0.0.0-...-fbc1b07 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 4, 2022 License: Apache-2.0 Imports: 13 Imported by: 0

README

teleport GoDoc GitHub release

Teleport是一款适用于分布式系统的高并发API框架,它采用socket全双工通信,实现S/C对等工作,支持长、短两种连接模式,支持断开后自动连接与手动断开连接,内部数据传输格式为JSON。

框架模型

![image](https://pholcus/common/teleport/raw/master/doc/Teleport API Model Diagram.png)

技术交流群

Go-Web 编程 42730308 Go-Web 编程

Documentation

Overview

Teleport是一款适用于分布式系统的高并发API框架,它采用socket全双工通信,实现S/C对等工作,支持长、短两种连接模式,支持断开后自动连接与手动断开连接,内部数据传输格式为JSON。

Index

Constants

View Source
const (
	// 返回成功
	SUCCESS = 0
	// 返回失败
	FAILURE = -1
	// 返回非法请求
	LLLEGAL = -2
)
View Source
const (
	SERVER = iota + 1
	CLIENT
)

mode

View Source
const (
	// 身份登记
	IDENTITY = "+identity+"
	// 心跳操作符
	HEARTBEAT = "+heartbeat+"
	// 默认包头
	DEFAULT_PACK_HEADER = "henrylee2cn"
	// SERVER默认UID
	DEFAULT_SERVER_UID = "server"
	// 默认端口
	DEFAULT_PORT = ":8080"
	// 服务器默认心跳间隔时长
	DEFAULT_TIMEOUT_S = 20e9
	// 客户端默认心跳间隔时长
	DEFAULT_TIMEOUT_C = 15e9
	// 等待连接的轮询时长
	LOOP_TIMEOUT = 1e9
)

API中定义操作时必须保留的字段

View Source
const (
	// 支持数据最大长度为 2 << 61
	// DataLengthOfLenth = 8
	// 支持数据最大长度为 2 << 30
	DataLengthOfLenth = 4
)

Variables

This section is empty.

Functions

func BytesToInt

func BytesToInt(b []byte) int

字节转换成整形

func HashString

func HashString(encode string) uint64

func IntToBytes

func IntToBytes(n int) []byte

整形转换成字节

func MakeHash

func MakeHash(s string) string

string to hash

func MakeMd5

func MakeMd5(obj interface{}, length int) string

制作特征值方法二

func MakeUnique

func MakeUnique(obj interface{}) string

制作特征值方法一

Types

type API

type API map[string]Handle

每个API方法需判断status状态,并做相应处理

type Connect

type Connect struct {
	// 标准包conn接口实例,继承该接口所有方法
	net.Conn
	// 标记连接是否有效
	Usable bool
	// 是否为短链接模式
	Short bool
	// 专用写入数据缓存通道
	WriteChan chan *NetData
	// 从连接循环接收数据
	Buffer []byte
	// 临时缓冲区,用来存储被截断的数据
	TmpBuffer []byte
}

封装连接

func NewConnect

func NewConnect(conn net.Conn, bufferLen int, wChanCap int) (k string, v *Connect)

创建Connect实例,默认为长连接(Short=false)

func (*Connect) Addr

func (self *Connect) Addr() string

返回远程节点地址

type Handle

type Handle interface {
	Process(*NetData) *NetData
}

请求处理接口

type NetData

type NetData struct {
	// 消息体
	Body interface{}
	// 操作代号
	Operation string
	// 发信节点uid
	From string
	// 收信节点uid
	To string
	// 返回状态
	Status int
	// 标识符
	Flag string
}

定义数据传输结构

func NewNetData

func NewNetData(from, to, operation string, flag string, body interface{}) *NetData

func ReturnData

func ReturnData(body interface{}, OpAndToAndFrom ...string) *NetData

***********************************************常用函数*************************************************** \\ API中生成返回结果的方法 OpAndToAndFrom[0]参数为空时,系统将指定与对端相同的操作符 OpAndToAndFrom[1]参数为空时,系统将指定与对端为接收者 OpAndToAndFrom[2]参数为空时,系统将指定自身为发送者

func ReturnError

func ReturnError(receive *NetData, status int, msg string, nodeuid ...string) *NetData

返回错误,receive建议为直接接收到的*NetData

type Protocol

type Protocol struct {
	// contains filtered or unexported fields
}

通讯协议处理,主要处理封包和解包的过程

func NewProtocol

func NewProtocol(packetHeader string) *Protocol

func (*Protocol) Packet

func (self *Protocol) Packet(message []byte) []byte

封包

func (*Protocol) ReSet

func (self *Protocol) ReSet(header string)

func (*Protocol) Unpack

func (self *Protocol) Unpack(buffer []byte) (readerSlice [][]byte, bufferOver []byte)

解包

type TP

type TP struct {

	// 粘包处理
	*Protocol
	// contains filtered or unexported fields
}

func (*TP) Client

func (self *TP) Client(serverAddr string, port string, isShort ...bool)

启动客户端模式

func (*TP) Close

func (self *TP) Close(nodeuid ...string)

断开连接,参数为空则断开所有连接,服务器模式下停止监听

func (*TP) CountNodes

func (self *TP) CountNodes() int

返回当前有效连接节点数

func (*TP) GetMode

func (self *TP) GetMode() int

返回运行模式

func (*TP) Request

func (self *TP) Request(body interface{}, operation string, flag string, nodeuid ...string)

*主动推送信息,直到有连接出现开始发送,不写nodeuid默认随机发送给一个节点

func (*TP) Server

func (self *TP) Server(port ...string)

启动服务器模式,端口默认为常量DEFAULT_PORT

func (*TP) SetAPI

func (self *TP) SetAPI(api API) Teleport

指定应用程序API

func (*TP) SetApiRChan

func (self *TP) SetApiRChan(length int) Teleport

设置全局接收缓存通道长度

func (*TP) SetConnBuffer

func (self *TP) SetConnBuffer(length int) Teleport

每个连接对象的接收缓冲区大小

func (*TP) SetConnWChan

func (self *TP) SetConnWChan(length int) Teleport

设置每个连接对象的发送缓存通道长度

func (*TP) SetPackHeader

func (self *TP) SetPackHeader(header string) Teleport

设置包头字符串,默认为henrylee2cn

func (*TP) SetTimeout

func (self *TP) SetTimeout(long time.Duration) Teleport

设置连接超长(心跳频率)

func (*TP) SetUID

func (self *TP) SetUID(mine string, server ...string) Teleport

设置唯一标识符,mine为本节点UID(默认ip:port) server为服务器UID(默认为常量DEFAULT_SERVER_UID,此参数仅客户端模式下有用) 可不调用该方法,此时UID均为默认

type Teleport

type Teleport interface {
	// *以服务器模式运行,端口默认为常量DEFAULT_PORT
	Server(port ...string)
	// *以客户端模式运行,port为空时默认等于常量DEFAULT_PORT
	Client(serverAddr string, port string, isShort ...bool)
	// *主动推送信息,不写nodeuid默认随机发送给一个节点
	Request(body interface{}, operation string, flag string, nodeuid ...string)
	// 指定自定义的应用程序API
	SetAPI(api API) Teleport
	// 断开连接,参数为空则断开所有连接,服务器模式下还将停止监听
	Close(nodeuid ...string)

	// 设置唯一标识符,mine为本节点UID(默认ip:port)
	// server为服务器UID(默认为常量DEFAULT_SERVER_UID,此参数仅客户端模式下有用)
	// 可不调用该方法,此时UID均为默认
	SetUID(mine string, server ...string) Teleport
	// 设置包头字符串,默认为henrylee2cn
	SetPackHeader(string) Teleport
	// 设置指定API处理的数据的接收缓存通道长度
	SetApiRChan(int) Teleport
	// 设置每个连接对象的发送缓存通道长度
	SetConnWChan(int) Teleport
	// 设置每个连接对象的接收缓冲区大小
	SetConnBuffer(int) Teleport
	// 设置连接超时(心跳频率)
	SetTimeout(time.Duration) Teleport

	// 返回运行模式
	GetMode() int
	// 返回当前有效连接节点数
	CountNodes() int
}

func New

func New() Teleport

创建接口实例

Directories

Path Synopsis
打印调试
打印调试

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL