Skip to content

NextPharaoh-J/gochat_Lumin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

logic层

Rpc服务

etcd 是一个高可用的分布式键值存储系统,主要用于以下场景:

服务注册与发现:在分布式系统中,服务可以动态注册到 etcd,并由其他服务发现。
配置管理:可以用 etcd 存储和管理分布式系统中的配置信息。
分布式锁:etcd 提供了基于键值的分布式锁机制,支持高并发场景中的互斥访问控制。

r.Start() 的目的是启动这个 EtcdV3RegisterPlugin,使得服务能够被注册到 etcd 上。它通常包括以下功能:

注册服务:把当前服务的地址和元数据信息注册到 etcd,使其他服务可以通过 etcd 发现这个服务。
健康检查:定期向 etcd 发送心跳,以确保服务是可用的。如果服务宕机或不可用,etcd 可以自动移除该服务。
服务发现:当其他服务需要访问此服务时,它们可以从 etcd 获取该服务的地址和相关信息。

Metrics: 这是用于监控的指标收集器,metrics.NewRegistry() 用于跟踪和上报相关的指标信息。 UpdateInterval: 服务注册信息的更新时间间隔。在这里设置为 time.Minute,即每分钟更新一次服务信息。

connect层

Bucket,Channel,Room结构

Bucket 是一个用于高并发、多人通信场景的容器和调度器,主要功能包括:

用户连接管理:chs 存储了每个用户的连接信息(如 Channel),通过 map[int]*Channel 实现快速查找、添加和删除用户连接。
房间管理:通过 rooms 管理不同的房间,允许用户加入或离开房间,实现类似聊天室或游戏房间的功能。
并发任务处理:使用 routines 数组和协程处理并发任务,协程将任务分配到不同的通道中,从而提高处理效率。通过 RoutineAmount 和 RoutineSize 控制并发度和负载。
消息广播:broadcast 通道用于将消息发送给所有连接,适用于全局广播的场景,比如系统通知、全服公告等。

About

a im system by golang

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages