返回
Mongo 代理程序实现-代码实战篇
前端
2023-10-01 05:44:42
前言
在上一篇文章中,我们已经搭建好了复制集并完成了抓包。现在,我们正式开始代码实战。
项目目录结构
我们的项目目录结构如下:
.
├── bin/ # 用于存放编译后生成的二进制文件
├── config/ # 用于存放配置文件
├── connect_impl/ # 用于存放连接器实现
│ ├── connect_impl.go # 连接器实现
│ └── connect_impl.h # 连接器实现的头文件
├── core/ # 核心模块
│ ├── config.go # 配置模块
│ ├── dependency_injection.go # 依赖注入模块
│ ├── log.go # 日志模块
│ ├── proxy.go # 代理模块
│ ├── reflection.go # 反射模块
│ └── utils.go # 工具模块
├── db/ # 数据库模块
│ ├── db.go # 数据库模块
│ └── db_impl/ # 数据库实现
│ ├── db_impl.go # 数据库实现
│ └── db_impl.h # 数据库实现的头文件
├── handler/ # 处理器模块
│ ├── handler.go # 处理器模块
│ └── handler_impl/ # 处理器实现
│ ├── handler_impl.go # 处理器实现
│ └── handler_impl.h # 处理器实现的头文件
├── lib/ # 库模块
│ ├── lib.go # 库模块
│ └── lib_impl/ # 库实现
│ ├── lib_impl.go # 库实现
│ └── lib_impl.h # 库实现的头文件
├── main.go # 主函数文件
├── protocol/ # 协议模块
│ ├── mongo/ # mongo 协议模块
│ │ ├── encode.go # mongo 协议编码模块
│ │ ├── mongo.go # mongo 协议模块
│ │ └── mongo_impl.h # mongo 协议实现的头文件
│ └── protocol.go # 协议模块
├── server/ # 服务端模块
│ ├── server.go # 服务端模块
│ └── server_impl/ # 服务端实现
│ ├── server_impl.go # 服务端实现
│ └── server_impl.h # 服务端实现的头文件
├── third_party/ # 第三方库模块
│ └── grpc/ # grpc 第三方库模块
│ ├── grpc.go # grpc 第三方库模块
│ └── grpc_impl.h # grpc 第三方库实现的头文件
├── util/ # 工具模块
│ ├── util.go # 工具模块
│ └── util_impl/ # 工具实现
│ ├── util_impl.go # 工具实现
│ └── util_impl.h # 工具实现的头文件
└── vendor/ # 依赖库模块
├── github.com/golang/protobuf/ptypes/ # github.com/golang/protobuf/ptypes/ 依赖库模块
│ └── any.pb.go # github.com/golang/protobuf/ptypes/ 依赖库模块
├── github.com/golang/protobuf/ptypes/timestamp/ # github.com/golang/protobuf/ptypes/timestamp/ 依赖库模块
│ └── timestamp.pb.go # github.com/golang/protobuf/ptypes/timestamp/ 依赖库模块
├── github.com/golang/protobuf/ptypes/wrappers/ # github.com/golang/protobuf/ptypes/wrappers/ 依赖库模块
│ └── wrappers.pb.go # github.com/golang/protobuf/ptypes/wrappers/ 依赖库模块
├── github.com/grpc-ecosystem/go-grpc-middleware/interceptor/ # github.com/grpc-ecosystem/go-grpc-middleware/interceptor/ 依赖库模块
│ └── interceptor.pb.go # github.com/grpc-ecosystem/go-grpc-middleware/interceptor/ 依赖库模块
├── github.com/grpc-ecosystem/go-grpc-middleware/logging/ # github.com/grpc-ecosystem/go-grpc-middleware/logging/ 依赖库模块
│ └── logging.pb.go # github.com/grpc-ecosystem/go-grpc-middleware/logging/ 依赖库模块
├── github.com/grpc-ecosystem/go-grpc-middleware/recovery/ # github.com/grpc-ecosystem/go-grpc-middleware/recovery/ 依赖库模块
│ └── recovery.pb.go # github.com/grpc-ecosystem/go-grpc-middleware/recovery/ 依赖库模块
├── github.com/grpc-ecosystem/go-grpc-middleware/tags/ # github.com/grpc-ecosystem/go-grpc-middleware/tags/ 依赖库模块
│ └── tags.pb.go # github.com/grpc-ecosystem/go-grpc-middleware/tags/ 依赖库模块
├── github.com/grpc-ecosystem/grpc-gateway/runtime/ # github.com/grpc-ecosystem/grpc-gateway/runtime/ 依赖库模块
│ └── runtime.pb.go # github.com/grpc-ecosystem/grpc-gateway/runtime/ 依赖库模块
├── github.com/grpc-ecosystem/grpc-gateway/utilities/ # github.com/grpc-ecosystem/grpc-gateway/utilities/ 依赖库模块
│ └── utilities.pb.go # github.com/grpc-ecosystem/grpc-gateway/utilities/ 依赖库模块
├── github.com/mailru/easyjson/jlexer/ # github.com/mailru/easyjson/jlexer/ 依赖库模块
│ └── jlexer.pb.go # github.com/mailru/easyjson/jlexer/ 依赖库模块
├── github.com/mailru/easyjson/jwriter/ # github.com/mailru/easyjson/jwriter/ 依赖库模块
│ └── jwriter.pb.go # github.com/mailru/easyjson/jwriter/ 依赖库模块
├── github.com/pkg/errors/ # github.com/pkg/errors/ 依赖库模块
│ └── errors.pb.go # github.com/pkg/errors/ 依赖库模块
├── go.mongodb.org/mongo-driver/bson/ # go.mongodb.org/mongo-driver/bson/ 依赖库模块
│ ├── bson.pb.go # go.mongodb.org/mongo-driver/bson/ 依赖库模块
│ ├── bson_codec.pb.go # go.mongodb.org/mongo-driver/bson/ 依赖库模块
│ ├── bson_options.pb.go # go.mongodb.org/mongo-driver/bson/ 依赖库模块
│ └── bson_pe.pb.go # go.mongodb.org/mongo-driver/bson/ 依赖库模块
├── go.mongodb.org/mongo-driver/core/ # go.mongodb.org/mongo-driver/core/ 依赖库模块
│ ├── commands.pb.go # go.mongodb.org/mongo-driver/core/ 依赖库模块
│ ├── connection.pb.go # go.mongodb.org/mongo-driver/core/ 依赖库模块
│ ├── core.pb.go # go.mongodb.org/mongo-driver/core/ 依赖库模块
│ ├── description.pb.go # go.mongodb.org/mongo-driver/core/ 依赖库模块
│ ├── message.pb.go # go.mongodb.org/mongo-driver/core/ 依赖库模块
│ └── server_api.pb.go # go.mongodb.org/mongo-driver/core/ 依赖库模块
├── go.mongodb.org/mongo-driver/mongo/ # go.mongodb.org/mongo-driver/mongo/ 依赖库模块
│ ├── aggregates.pb.go # go.mongodb.org/mongo-driver/mongo/ 依赖库模块
│ ├── change_stream.pb.go # go.mongodb.org/mongo-driver/mongo/ 依赖库模块
│ ├── client_options.pb.go # go.mongodb.org/mongo-driver/mongo/ 依赖库模块
│ ├── command_monitor.pb.go # go.mongodb.org/mongo-