thinking about application known or un-known distributed storage

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介:
最近有个资源整合的项目,存储的话选择了mongodb的sharding来做,因为数据量较大。
原本可能会选择Hadoop来做的,不过从Hadoop的文档上看到好像不太适用大并发的小IO的操作(小文件),更加适用大吞吐量小并发的操作(大文件)。
应用要求多IDC部署,因此资源文件也要求在多IDC存储(相当于每个IDC需要有同样的资源文件)。
考虑到扩展性,在一个IDC内部使用了mongoDB的sharding特性。
但是这样带来一个问题,不方便复制到其他的IDC,所以目前的做法是应用层在写入文件存储的时候同时调用远端IDC的应用写入文件到远端IDC的mongoDB sharding。
thinking about application known or un-known distributed storage - 德哥@Digoal - The Heart,The World.

。这样做的好处是单个IDC的文件存储扩展变得比较灵活,不过又带来一些问题,由于SHARDING是mongoDB来做的,可能不能做到就近存储(比如存进去的资源,需要读取这个资源的应用和存储的位置应该最近,这样的话才是最优的。针对write-once-read-some型应用。)
还一个问题是,可能出现一个IDC文件资源存储成功了,另一个IDC的文件资源没有存储成功的情况,同时也是应用需要考虑来解决的问题。

所以最近我也在考虑是否有其他的解决方案,即能够做到分布存储,又可以让文件存储来做多IDC复制,例如mongoDB的master-slave。
例如
IDC A : (读写)
增加一个PostgreSQL,用于存储文件存放的位置,
如:
idc_id,file_name,mongodb_hostname,mongodb_namespace
当文件被写入到mongodb时,同时写入记录到PostgreSQL,这样的话如果一个mongoDB不够了,可以加mongoDB服务器,
如果一台PostgreSQL数据库不够用,甚至还可以对FILE_NAME进行HASH分区,使用多台PostgreSQL来堆。
当文件被读取时,先到PostgreSQL读取到文件存放的位置,然后到mongoDB读取。

IDC B:  (只读)
利用PostgreSQL的复制功能和mongoDB的复制功能复制IDC A的数据到IDC B。IDC B只提供读取功能,所有的写在IDC A完成。

如图 :  
thinking about application known or un-known distributed storage - 德哥@Digoal - The Heart,The World.
 
这样做的好处是在应用部署时会比较灵活,解决了就近存储的问题。同时也简化了应用设计,不需要应用来处理写多个IDC的问题。
当然,两种方式都可能使得IDC A 和IDC B在短时间内有一定的数据延时。
目录
相关文章
|
编译器
立创EDA一些基础操作
立创EDA一些基础操作
744 0
|
XML 安全 程序员
英语不好可以学编程吗?
对于IT程序员来说,日常的开发工作所需要的单词也就那些,,相当于初中英语水平,只要拿出上学时一半的精力来学习,再加上实际运用,很快就能学会,哪怕死记硬背也实在不算什么难事。
727 0
英语不好可以学编程吗?
|
网络协议 安全 数据格式
网络协议是干什么的?底层原理是什么?
网络协议是干什么的?底层原理是什么?
595 0
|
安全 数据安全/隐私保护 异构计算
阿里云无影云桌面初体验
云桌面是什么这里不再多做赘述了,网络上已经有各种文章对这个名词做解释了,那它和我们平时使用的电脑有什么区别呢?我们这里直接上正菜,带你了解最真实的无影云桌面。
1392 2
阿里云无影云桌面初体验
|
开发工具
alipay.trade.refund(统一收单交易退款接口)如何判断退款是否成功
1、通过同步返回的信息来判断退款   调用退款接口成功同步返回信息示例: {"alipay_trade_refund_response":{"code":"10000","msg":"Success","buyer_logon_id":"150****8675","buyer_user_id":"...
2898 12
|
SQL 存储 JSON
阿里云交互式分析与Presto对比分析及使用注意事项
文章首先介绍了Presto以及它的应用场景、特点、架构和原理、数据模型、数据类型,并且以Presto数据查询作为实例。然后介绍了阿里云交互式分析,同时列举了它的优势和典型应用场景,对权限、数据类型、实例对象层级进行讲解,并且对交互式分析的两大场景进行实践分析,列举了几种表的特征设置,以阿里云交互式分析开发作为示例展示其过程。
2189 0
阿里云交互式分析与Presto对比分析及使用注意事项
|
Linux 文件存储 数据安全/隐私保护
阿里云SMB协议文件系统ACL权限控制使用指南
ACL权限控制表是一项重要的企业级特性。阿里云用户可以将自建的AD服务与NAS SMB卷连通,通过AD域身份或者匿名(EVERYONE)的方式挂载NAS SMB卷,之后用户可以对任何文件、文件夹设置权限管控表。
4391 0
阿里云SMB协议文件系统ACL权限控制使用指南
|
存储 监控 数据格式
SLS 命令行控制台工具(CLI)来啦
如果你遇到以下槽点, 那么CLI为你而生: 1. 线下创建项目后,线上又要重新配置 2. 一个区域创建好项目,复制到其他15个区域 3. 把日志查询结果批量导出 4. 批量配置与脚本化配置
5523 0
SLS 命令行控制台工具(CLI)来啦
|
Java Spring Maven
实操 | 基于 SOFABoot 进行模块化开发
SOFA 中间件是蚂蚁金服自主研发的金融级分布式中间件,包含了构建金融级云原生架构所需的各个组件,包括微服务研发框架,RPC 框架,服务注册中心,分布式定时任务,限流/熔断框架,动态配置推送,分布式链路追踪,Metrics监控度量,分布式高可用消息队列,分布式事务框架,分布式数据库代理层等组件。
2362 0
|
弹性计算 应用服务中间件 Linux
阿里云个人服务器如何选择配置
在云计算尚未普遍,企业网站托管在IDC的房间里,每个服务器需要一个柜,我仍然记得每次购买服务器或服务器升级,都需要操作乘出租车去了房间,然后在引擎室里,比如内存升级,和操作这台机器。当您需要增加服务器数量时,价格通常非常昂贵,因为需要额外的空间和机柜。
2201 0