您的位置:首页 > 科技 > 能源 > 【源码阅读】osproxy对象存储分布式代理(1)

【源码阅读】osproxy对象存储分布式代理(1)

2024/10/14 2:12:22 来源:https://blog.csdn.net/lrzHHl/article/details/140456542  浏览:    关键词:【源码阅读】osproxy对象存储分布式代理(1)

osproxy

项目地址

  osproxy是一个使用Go语言开发的对象存储分布式代理(object-storage-distributed-proxy),可以作为文件存储微服务,文件会在服务中转处理后再对接到对象存储,包括但不限于以下功能:

  • 分布式uid及秒传,支持相同文件不同命名
  • 分片读写,大文件上传,merge接口不用等待数据合并,分片上传完直接下载
  • 异步任务,易扩展的event-handler,支持分片合并及其他文件处理任务
  • 统一封装,降低业务接入复杂度,业务侧只需要存储文件uid
  • 代理下载,不直接暴露底层存储厂商及格式
  • 支持集群部署,proxy模块处理不同机器的分片转发
  • 支持Local/MinIO/腾讯COS/阿里OSS等对象存储,易于扩展
  • 支持Docker一键部署

main函数

位于cmd/main.go

package main
import ("github.com/qinguoyi/osproxy/api""github.com/qinguoyi/osproxy/app""github.com/qinguoyi/osproxy/app/pkg/base""github.com/qinguoyi/osproxy/app/pkg/storage""github.com/qinguoyi/osproxy/bootstrap""github.com/qinguoyi/osproxy/bootstrap/plugins"
)
func main() {// 初始化底层依赖(mysql, redis...),并初始化日志logger对象lgConfig := bootstrap.NewConfig("conf/config.yaml")lgLogger := bootstrap.NewLogger()// 检测底层插件的情况,并输出相应信息后关闭。plugins.NewPlugins()defer plugins.ClosePlugins()// 初始化雪花算法生成分布式IDbase.InitSnowFlake()// 初始化存储storage.InitStorage(lgConfig)// 初始化路由和服务engine := api.NewRouter(lgConfig, lgLogger)server := app.NewHttpServer(lgConfig, engine)// 初始化应用application := app.NewApp(lgConfig, lgLogger.Logger, server)// 应用执行application.RunServer()
}

  main函数中主要是对于基础服务的初始化以及应用的执行,包含了以下几个部分:

  • 初始化底层服务和日志器
  • 对底层服务进行启动测试,判断是否能够正常启动
  • 基于雪花算法的分布式ID生成器启动
  • 存储服务启动
  • 初始化路由以及服务
  • 初始化整体应用
  • 应用执行

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com