6月11号日报内容
parent
5ce616b2b9
commit
c12d1c795b
101
2024-6-11.-.md
Normal file
101
2024-6-11.-.md
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
# 完成的任务
|
||||||
|
|
||||||
|
还是继续观看代码,熟悉项目结构,并对观看的代码进行注释。随着注释的进行慢慢的对项目有了清晰的认知,今天主要是各个项目模块进行梳理,知道了每个模块是干什么的,有什么作用,一下是各个模块的介绍。
|
||||||
|
|
||||||
|
sdserver
|
||||||
|
├── cmd
|
||||||
|
│ └── clouds
|
||||||
|
│ ├── main.go // 程序入口,负责初始化服务
|
||||||
|
│ └── root.go // 定义Cobra根命令,包括各种命令选项和处理逻辑等。
|
||||||
|
├── conf
|
||||||
|
│ ├── clouds-dev.ini // 开发环境配置文件
|
||||||
|
│ └── clouds-world.ini // 生产环境配置文件
|
||||||
|
├── grpcapi
|
||||||
|
│ └── device // 设备管理服务pb文件
|
||||||
|
├── grpcser
|
||||||
|
│ ├── cmd // 对应的是设备管理服务grpc接口的具体处理逻辑
|
||||||
|
│ ├── consts // 定义了一些常量,包括struct等
|
||||||
|
│ ├── reason // 定义了一些错误码
|
||||||
|
│ ├── service // 定义了设备管理服务grpc接口
|
||||||
|
│ └── grpc.go // grpc服务的初始化
|
||||||
|
├── models
|
||||||
|
│ ├── config //定义了一些代理配置
|
||||||
|
│ ├── consts //定义product和代理的常量
|
||||||
|
│ ├── errors //定义了一些错误码
|
||||||
|
│ ├── msg //云端消息的处理逻辑
|
||||||
|
│ ├── nathole //定义了一些nat的处理逻辑
|
||||||
|
│ ├── plugin //定义了一些代理的处理逻辑
|
||||||
|
│ └── proto //处理UDP数据包转发操作
|
||||||
|
├── server
|
||||||
|
│ ├── controller //定义了一些控制器.例如端口管理,代理管理等
|
||||||
|
│ ├── db //redis初始化
|
||||||
|
│ ├── group //定义Http和Tcp的Group
|
||||||
|
│ ├── platform //监控器,用于定期收集信息并同步到云端
|
||||||
|
│ ├── ports //端口的处理逻辑
|
||||||
|
│ ├── proxy //代理的处理逻辑,例如Http代理,Tcp代理等
|
||||||
|
│ ├── stats // 获取系统信息
|
||||||
|
│ ├── control.go
|
||||||
|
│ ├── dashboard.go // 监控指标
|
||||||
|
│ ├── dashboard_api.go // 监控指标API接口信息
|
||||||
|
│ ├── grpc.go // grpc监控指标
|
||||||
|
│ └── serverService.go
|
||||||
|
└── utils
|
||||||
|
├── cmap //并发安全的map
|
||||||
|
├── log //日志处理逻辑
|
||||||
|
├── metric //监控指标
|
||||||
|
├── net //网络处理逻辑
|
||||||
|
├── util //一些工具函数
|
||||||
|
├── version //版本信息
|
||||||
|
└── vhost //frp隧道处理
|
||||||
|
|
||||||
|
# 学到了什么?
|
||||||
|
先了解大体内容,知道了每个模块的作用后,然后从main.go利用深搜方法阅读每个细节。本项目主要是用 Cobra命令进行初始化启动的, 配置文件加载的流程为,用os读取流,然后转化为string,在通过string流转化为相应的内容加载进来,这样做是否过于繁琐?配置文件很多内容需要手动解析,虽然能让代码更加清晰,但具有很多冗余代码,考虑使用viper?
|
||||||
|
|
||||||
|
在配置文件初始化之后,就要加载项目的核心文件了,首先加载启动consul,然后在初始化项目的主服务,项目的主服务中包含一下模块:
|
||||||
|
|
||||||
|
1. muxer *mux.Mux 采用的是多路复用器,并没有采用Gin框架,考虑到是否因为项目需要更高的灵活性?
|
||||||
|
|
||||||
|
2. listener frpNet.Listener kcpListener frpNet.Listener websocketListener frpNet.Listener tlsListener frpNet.Listener 这些都是内网穿透工具,方便利用公网Ip访问局域网主机内容
|
||||||
|
|
||||||
|
3. ctlManager *ControlManager 管理多个Control实例,每个Control实例对应一个客户端
|
||||||
|
|
||||||
|
4. pxyManager *proxy.ProxyManager 这是代理管理者,管理所有的代理
|
||||||
|
|
||||||
|
5. httpVhostRouter *vhost.VhostRouters http虚拟隧道管理者
|
||||||
|
|
||||||
|
6. rc *controller.ResourceController 所有的资源管理者,例如可用端口,系统资源信息,以及网络管理等。
|
||||||
|
|
||||||
|
7. statsCollector stats.Collector 用于收集服务和代理的状态信息
|
||||||
|
|
||||||
|
8. tlsConfig *tls.Config Tls 配置
|
||||||
|
|
||||||
|
9. redisDB *db.RedisDB pubRedis *db.RedisDB Redis的一些配置,包括公共redis
|
||||||
|
|
||||||
|
# 未完成的任务
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user