引擎没有对集群拓扑结构进行限制,可自行组织,下面的结构可以适用大多数情况, 如无特殊需求可以使用下面的集群拓扑结构,无论是世界服还是单服
+------------+ +----------+ +----------+ +-----------+
| guide | | guide | | match | | team |
| | | | | | | |
+-----^------+ +----^-----+ +-----^----+ +-----^-----+
| | | |
| | | |
+-----+--------------v---------------+-------------+-----------+
| |
| message queue |
| |
| |
+------^----------------------^-----------------------^--------+
| | |
| | |
+------v-------+ +-------v-------+ +---------v--------+
| | | | | |
| baseapp | | baseapp | | battleapp |
| | | | | |
+------^-------+ +-------^-------+ +---------^--------+
| | |
| | |
+------v----------------------v-----------------------v--------+
| |
| gateway (nginx) |
| |
| |
+--------------------------------------------------------------+
要点:
type INodeMgr interface {
// 节点是否活跃
IsNodeActive(nodeUuid string) bool
// 获取节点信息
GetNodeInfo(nodeUuid string) *NodeInfo
// 获取所有节点信息
GetAllNodesInfo() []*NodeInfo
// 获取本节点信息
GetMyNodeInfo() *NodeInfo
}
NodeMgr用于查询集群中的节点信息
type NodeInfo struct {
NodeUuid string
Meta map[string]string
Tick int64
}
节点信息里包含一个uuid,集群内唯一
Tick是上一次活跃时间
Meta是节点的元数据,我们可以存储自己的元数据到Meta中,其它节点可以获取到这个元数据
常用的Meta数据有:节点功能,集群间通信的底层网络接口等
通过这个元数据我们可以识别出出所有的网关节点、工会节点、中心节点等等
type INodeMQ interface {
// uuid是节点的uuid, msg是一个消息
Push(nodeUuid string, msg interface{}) error
}
NodeMQ用于向指定节点发送数据
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )