【源码阅读】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生成器启动
  • 存储服务启动
  • 初始化路由以及服务
  • 初始化整体应用
  • 应用执行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/47004.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数仓工具—Hive语法之事务表更新Transactional Table Update

Hive事务表更新 众所周知,Apache Hive 是建立在 Hadoop HDFS 之上的数据仓库框架。由于它包含表,您可能希望根据数据的变化更新表记录。直到最近,Apache Hive 还不支持事务。从 Hive 0.14 及以上版本开始支持事务性表。您需要启用 ACID 属性才能在 Hive 查询中使用更新、删…

SQLMC:一款高性能大规模SQL注入安全扫描工具

关于SQLMC SQLMC是一款功能强大的高性能SQL注入安全扫描工具,该工具作为Kali Linux官方内置工具的其中一个部分,可以帮助广大研究人员检测目标域名的所有URL节点是否存在SQL注入问题。 该工具基于纯Python开发,适用于红队和蓝队成员&#xf…

【入门级】docker

开头处生动的描述一下”码头工人”吧:小鲸鱼(登记处Registry:比如docker hub官方)背着好多集装箱(仓库repository:存放各种各样的镜像,一般存放的是一类镜像,这一类镜像中通过tag 版…

HTTP基本原理

URI URI Universal Resource Identifier 统一资源标志符 URI采用一种特定语法标识一个资源的字符串。所标识的资源可能是服务器上的一个文件。不过,也可能是一个邮件地址、新闻消息、图书、人名、Internet主机或者任何其它内容。 通过URI找到资源是通过对名称进行标…

京东Android一面凉经(2024)

京东Android一面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《京东Android一面凉经(2024)》。 面试职位: Android开发工程师 技术一面 面试时长: 50…

如何解决隐藏游戏服务器的源IP问题

在网络游戏领域,保护服务器的源IP地址不被轻易发现是一项重要的安全措施。游戏服务器的源IP一旦暴露,可能会遭受DDoS攻击、扫描和各种形式的安全威胁。然而,对于合法的游戏运营商而言,有时需要对服务器进行维护或调试,…

2个方法快速解决word文档编辑限制

Word文档不能编辑的情况想必有很多的朋友都有碰到过吧,通常Word文档不能编辑主要是由于Word文档被加密或者Word文档被锁住导致,下面小编给大家整理了一些相关的解决方法,希望对大家有所帮助。 一、取消word文档限制保护 我们可以在文档里点击…

外卖系统定制开发:技术选型与架构设计要点

随着外卖行业的迅速发展,餐饮企业需要一个高效、稳定、可扩展的外卖系统来满足日益增长的用户需求。本文将探讨外卖系统定制开发的技术选型与架构设计要点,并提供一些示例代码来说明关键技术的实现。 一、技术选型 1. 前端技术选型 外卖系统的前端需要…

oracle adg切换

作者:广大 1 主库转备库 注意:原则上至多只能有一个主库,但是备库可以多个,所以需要先进行主库转备库操作。 1.1 查看主库角色切换状态 SYSproe>select name,database_role,switchover_status from v$database;NAME …

【node-RED 4.0.2】连接操作 Oracle 数据库实现 增 删 改 查【新版,使用新插件:@hylink/node-red-oracle】

总览 上节课,我们说到,在 node-red 上链接 oracle 数据库 我们使用的插件是 node-red-contrib-agur-connector。 其实后来我发现,有一个插件更简便,并且也更好用:hylink/node-red-oracle !!&am…

vue3 学习笔记11 -- 模板语法和指令

vue3 学习笔记11 – 模板语法和指令 模板语法 文本插值&#xff1a;使用双大括号 {{ }} 插入文本。 <script setup>const message ref("Hello Vue3!!") </script> <template><p>{{message}}</p> </template>指令 以 v- 开头…

Golang | Leetcode Golang题解之第240题搜索二维矩阵II

题目&#xff1a; 题解&#xff1a; func searchMatrix(matrix [][]int, target int) bool {m, n : len(matrix), len(matrix[0])x, y : 0, n-1for x < m && y > 0 {if matrix[x][y] target {return true}if matrix[x][y] > target {y--} else {x}}return f…

智能听诊器:宠物健康监测的革新者

宠物健康护理领域迎来了一项激动人心的技术革新——智能听诊器。这款创新设备以其卓越的精确度和用户友好的操作&#xff0c;为宠物主人提供了一种全新的健康监测方法。 使用智能听诊器时&#xff0c;只需将其放置在宠物身上&#xff0c;它便能立即捕捉到宠物胸腔的微小振动。…

linux安装keepalived教程

1.安装依赖包 yum install -y curl gcc openssl-devel libnl3-devel net-snmp-devel2.安装keepalived yum install -y keepalived3.更新配置 # 配置文件地址&#xff1a;/etc/keepalived/keepalived.conf # 1.主节点 vrrp_instance VI_1 {state MASTER # 状态只有MASTER和BA…

小狐狸GPT付费体验系统更新版本(历史版本)

3.0.2版本&#xff1a;小狐狸GPT付费体验系统下载&#xff08;需要密码&#xff09; 3.0.1版本&#xff1a;小狐狸GPT付费体验系统下载 2.7.2版本&#xff1a;小狐狸GPT付费体验系统下载 2.6.7版本&#xff1a;小狐狸GPT付费体验系统下载

关于解决“文件已被另一程序打开无法删除文件”的方法

解决方法 找了几个解决方法&#xff1a; 用管理员模式打开cmd&#xff0c;输入rd /s /f 文件路径删除文件&#xff0c;无效。结果出现拒绝访问。打开电脑安全模式&#xff0c;无效。用管理者模式启动cmd&#xff0c;使用CHKDSK 修复命令&#xff1a;chkdsk D: /f /r /x。然后…

opencv—常用函数学习_“干货“_总

同样内容将拆解为一份份,发在我个人博客中 如http://t.csdnimg.cn/icOfX(非VIP文章),整理不易、感谢你的点赞收藏 目录 一、图像文件 1. imread:读取图像文件 2. imwrite:写入图像文件 3. imshow:显示图像 4. VideoCapture:捕获视频 二、创建Mat 1、创建Mat对…

Word参考文献交叉引用

前言 Word自带交叉引用功能&#xff0c;可在正文位置引用文档内自动编号的段落&#xff0c;同时创建超链接&#xff0c;适用于参考文献的引用。使用此方法对参考文献进行引用后&#xff0c;当参考文献的编号发生变化时&#xff0c;只需要更新域即可与正文中的引用相对应。下文…

【mysql】02在ubuntu24安装并配置mysql

安装 sudo apt-get update sudo apt-get install mysql-server设置root密码 ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY new_password;FLUSH PRIVILEGES;添加用户并设置远程可访问 添加用户并赋予权限 CREATE USER remote_user% IDENTIFIED BY Pa…

2024Datawhale AI夏令营---Inclusion・The Global Multimedia Deepfake Detection--学习笔记

赛题背景&#xff1a; 其实总结起来就是一句话&#xff0c;这个项目是基于目前的深度伪装技术&#xff0c;就是通过大量人脸的原数据集进行模型训练之后&#xff0c;能够生成伪造的人脸视频。这项目就是教我们如何去实现这个DeepFake技术。 Task1:了解Deepfake和跑通baseline …