上海网站建设哪家强,wordpress修改固定连接403,建设项目信息查询,wordpress登录后台空白参考《分布式对象存储----原理、架构以及Go语言实现》#xff08;作者#xff1a;胡世杰#xff09;
对象存储简介
数据的管理方式
以对象的方式管理数据#xff0c;一个对象包括#xff1a;对象的数据、对象的元数据、对象的全局唯一标识符
访问数据的方式 可扩展的分…参考《分布式对象存储----原理、架构以及Go语言实现》作者胡世杰
对象存储简介
数据的管理方式
以对象的方式管理数据一个对象包括对象的数据、对象的元数据、对象的全局唯一标识符
访问数据的方式 可扩展的分布式系统
接口和数据存储分离的架构 接口实现对象的存取 接口通过 RabbitMQ 消息队列进行通讯 向某个 exchange 进行一对多的消息群发 apiServices exchange 每一台接口服务节点都会接收到任意一台数据服务节点的心跳 dataServices exchange 所有数据服务节点绑定该 exchange 并接收来着接口服务的定位消息拥有对象的数据服务节点会使用消息单发通知该接口服务节点 当发送一条信息给 dataServices exchange 时定位成功后将会创建一个反馈信息的临时队列临时队列将在一定时间后关闭 向某个消息队列进行一对一的消息单发
REST接口 GET 提供一个 locate接口 客户端通过GET方法发送对象定位请求接口服务节点收到请求后会向数据服务层群发一个定位信息然后等待反馈。如果存在则返回该数据服务节点的地址
RabbitMQ 消息设计
数据服务心跳信息 接口服务的定位信息及反馈 对象PUT流程 对象GET流程 元数据服务
散列值与散列函数 计算散列值的算法推荐
书上的例子为 SHA-256 更高级别的有SHA-512
加入元数据服务的框架
书中建议是使用ElasticSearch
我们项目选择的是MySQL对元数据进行存储
REST接口
GET新增一个参数version 表示对象数据的版本默认状态下是最新版本
PUT需提供一个名为 Digest 的 HTTP 请求头和一个名为 Content-Length 请求头 DELETE只需要删除元数据而数据节点继续保存数据知道所有元数据都被删除 查询指定对象的所有版本 ES接口MySQL
对象PUT流程 对象GET流程 数据校验与去重
需要数据校验的原因 给数据加入缓存功能
在数据服务层再加入一个缓存服务
数据服务的REST接口
以POST方法访问数据服务temp接口在URL中指定数据对象的散列值并提供一个名为size的HTTP请求头用于指定对象的大小。这会在数据服务中创建一个临时对象该接口返回一个随机生成的uuid用于标记临时对象 将对象内容发到数据服务temp接口并写入临时对象 根据对比散列值的结果进行操作 对象PUT流程 数据冗余与即使修复
对象存储的数据冗余策略 断点续传
数据压缩
数据维护