有幸作为 owner 负责(2022.12-2023.08)了会控存储的优化改造,本文主要从业务、个人和企业数据分库、异地容灾和多活(下一步目标)层面总结了会控存储治理的成功实践,目的是形成一套方法论,...02目标 存储治理主要有五个目标: ▶︎ 异地容灾/多活:广州机房挂了,可切换至上海正常服务,提升 SLA 质量,达到可用性5个9; ▶︎ 数据隔离:多 SET 数据按个人、企业隔离存储,优先保障企业服务的稳定性和...核心存储改造势必会带来业务风险和架构调整,异地多活、个人企业隔离和 SET 隔离只是不同维度层面上的数据隔离,因此我们希望能统一处理,目标是个人和企业数据隔离工作能为下一步的异地容灾/多活做好铺垫。...请求经 TGW 调度哪个地域则读写在此地域闭环处理,地域间两两相互同步,每个区域都有好友状态的全量数据,状态变更直接批量 PUSH 给异地好友(在本区域的存储读取异地好友状态列表)的接入点,状态系统可以容忍数据跨城同步的延迟...另一个问题是异地写同一份数据导致的冲突合并数据不一致问题。 5.2 请求路由 存储拆分后,如何将请求路由至正确的处理单元?
它的优点在于无需公网IP就可以实现两台异地的设备之间组网,而且很方便。不足是由于缺少公网IP,其他用户是无法访问你的资源。除非加入你的局域网。
而数据同步是异地多活的基础,所有具备数据存储能力的组件如:数据库、缓存、MQ等,数据都可以进行同步,形成一个庞大而复杂的数据同步拓扑。 本文将先从概念上介绍单元化、异地多活、就近访问等基本概念。...之后,将以数据库为例,讲解在数据同步的情况下,如何解决数据回环、数据冲突、数据重复等典型问题。 一、什么是单元化 如果仅仅从"单元化”这个词汇的角度来说,我们可以理解为将数据划分到多个单元进行存储。"...考虑一开始只有一个IDC的情况,所有用户的数据都会写入同一份底层存储中,如下图所示: ?...3、小结 如果仅仅是考虑不同地区的用户数据就近写入距离最近的IDC,这是纯粹意义上的”单元化”。 不同单元的之间数据实时进行同步,相互备份对方的数据,才能做到真正意义上"异地多活”。...因此,通常我们把binlog syncer单独作为一个模块,其只负责解析从数据库中拉取并解析binlog,并在内存中缓存(或持久化存储)。
前言 ---- 前文提到异地多活的几种型态和基于OceanBase实现方案。这里再总结一下基于其他分布式数据库(MySQL)实现异地多活时要考虑的点。...这种只有应用多活,数据库是异地备份容灾(无并发)。 2. 应用双活,数据库A地读写,B地只读。这种也是应用双活,数据库读写分离(实例级并发)。 3. 应用双活,数据库双活,两地应用同时读写不同表。...异地多活的困难 ---- 异地多活的目标很吸引人,但是技术门槛也很高。说光靠一个数据库或者一个数据传输产品就可以做异地多活是很片面的。...垂直拆分要求数据是分开存储(分到不同的Database或者Instance等);应用做服务化,彼此解耦。...XDB解决了数据同步问题、故障切换和数据一致性问题。所以不需要借助数据传输产品。 基于OceanBase的异地多活方案 ? 这个方案在前文里已经详细介绍。
在当今互联网行业,大多数人互联网从业者对"单元化"、"异地多活"这些词汇已经耳熟能详。...而数据同步是异地多活的基础,所有具备数据存储能力的组件如:数据库、缓存、MQ等,数据都可以进行同步,形成一个庞大而复杂的数据同步拓扑。 本文将先从概念上介绍单元化、异地多活、就近访问等基本概念。...之后,将以数据库为例,讲解在数据同步的情况下,如何解决数据回环、数据冲突、数据重复等典型问题。 1 什么是单元化 如果仅仅从"单元化”这个词汇的角度来说,我们可以理解为将数据划分到多个单元进行存储。"...小结:如果仅仅是考虑不同地区的用户数据就近写入距离最近的IDC,这是纯粹意义上的”单元化”。不同单元的之间数据实时进行同步,相互备份对方的数据,才能做到真正意义上"异地多活”。...因此,通常我们把binlog syncer单独作为一个模块,其只负责解析从数据库中拉取并解析binlog,并在内存中缓存(或持久化存储)。
物理距离必然导致数据不一致,这就得从“数据”特性来解决,如果是强一致性要求的数据(如存款余额),就无法做异地多活。...这就出事儿了,所以这类数据不会做跨城异地多活,只能用同城异区架构,因为同城的网络环境要好很多,可以搭建多条互联通道,成本也不会太高。...跨城异地模式适用于对数据一致性要求不高的场景,例如: 用户登录,数据不一致时重新登录即可。 新闻网站,一天内新闻数据变化较少。 微博网站,即使丢失一点微博或评论数据也影响不大。 3....采用多种手段同步数据 思维误区:只使用存储系统的同步功能。...存储系统本身就有强大的同步功能,例如 mysql redis 都可以很好的实现同步,但某些场景下是无法满足需要的,所以要使用多种手段配合,例如: 消息队列 创建账号后,将账号数据通过消息队列同步到其他业务中心
本文和大家分享一款目前在G站有11K+Star的开源跨平台音乐服务器Navidrome,如何在Linux环境本地使用Docker部署,并结合cpolar内网穿透工具配置公网地址,实现随时随地远程访问本地存储音乐的详细流程...ND_SESSIONTIMEOUT: 24h ND_BASEURL: "" volumes: - "~/Music/data:/data" #这里的~/Music/data为data数据真实路径...登录后,点击界面右上角的头像图标进入个性化,可以设置语言为中文: Navidrome会自动扫描你存放在上边设置的真实存储路径中的音乐,并自动将歌曲分类为各个专辑的形式展现: 4....协议:http 本地地址:4533 域名类型:随机域名 地区:选择China VIP 创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了两个公网地址,接下来就可以在其他电脑或手机平板(异地...如下图所示,成功实现使用公网地址异地远程访问本地部署的 Navidrome音乐服务器 !
硬件包括CPU、内存、存储、网络设备等,软件方面包括操作系统版本、操作系统参数、数据库版本、数据库参数、数据库架构、运行的SQL代码等。...生产环境常做访问控制,管理生产环境DBA忙于日常事务无法顾及数据库性能。本文介绍一次性从生产库上获取分析性能SQL相关的数据,拿到本地环境分析诊断生产性能问题。...3、导出AWR裸数据 $ORACLE_HOME/rdbms/admin/awrextr.sql 4、本地导入创建的表 5、通过数据泵导入AWR裸数据 $ORACLE_HOME/rdbms/admin/...结合绑定变量和条件看,大范围上,只查询40天以内的数据。 条件列数据分布情况 ?...已知此表中SUBMITDATE保留3年数据,在数据分布平均的情况下,此SQL查询的数据量约为(296815739/3/365)*40/25/2=21.7W,约占整个表的0.07%。
一、异地容灾主要备份三种数据: 1、DB数据 2、操作系统 3、日志信息 二、恢复时间不能超过30分钟 三、图中为DB的备份方式,DB总的有四份备份:生产存储一份、移动硬盘一份、备份存储一份、灾备存储一份...备份方式为,平时通过生产系统的介质服务器传输到移动硬盘,通过CS传输数据到灾备中心的介质服务器,在通过介质服务器传输到备份存储、灾备存储。...生产中心发生异常时的DB切换方式为,将移动硬盘迅速转移挂载到灾备中心的介质服务器,然后再发起恢复 四、日常对OS进行每日备份,通过CS传输到灾备中心的介质服务器,再发送给备份存储和灾备存储,即OS的备份有三份...:生产存储、备份存储、灾备存储 五、日志的备份和OS一样 六、恢复切换步骤:日志恢复、OS恢复、修改IP和主机名、移动硬盘转移挂载 七、本地恢复 image.png 八、两地传输带宽的计算要考虑每日数据增量
2、如果3个机房分属异地,比如:上海、广州、北京,三个城市间数据传输必然增加延时,要降低延时一般是拉专线,这样一方面成本还会继续增加,而且这么长距离传输,网络抖动是难免的,抖动期间,会增加选举"误切换"...3、3个节点之间不断的数据同步,会使三地机房间的网络流量增加,特别是某个节点挂了,重新恢复后,会在短时间内从master上同步数据,有流量风暴的隐患。...解决了双机房ES"读"的问题,再来看“写”的问题,可能有同学说了,这还不简单,直接双写就行了吧,一份数据,向A、B机房的ES集群各写一份。...2、当B机房的ES挂了,双写不进去时,过一段时间又恢复后,故障期间的数据,B机房的ES集群怎么补进去?如果手动事后补数据,虽然可行,但是毕竟麻烦。...这样就免去了事后手动补数据的麻烦。 当然,这个方案的提前是MQ本身是高可用的,不过这个不难做到,已经有一些rocket mq双机房多活的案例,不在本文讨论范围,大家可以自行搜索。
环境: 192.168.91.103 数据源服务器 192.168.18.220 异地备份服务器 1.在192.168.91.103服务器生成秘钥文件 [root@Lenovobox3 file...The key fingerprint is: ...... 2.将公钥文件下发至异地备份服务器 [root@Lenovobox3 file]# ssh-copy-id -i ~/.ssh/id_rsa.pub...installed -- if you are prompted now it is to install the new keys root@192.168.18.220's password: #输入异地备份服务器密码...192.168.91.103 [root@Lenovobox3 file]# ls backup_test.txt [root@Lenovobox3 file]# pwd /root/file 4.连接至异地备份服务器...backup_test.txt sent 30 bytes received 90 bytes 240.00 bytes/sec total size is 5 speedup is 0.04 5.验证备份数据
序言 同城异地灾备,主要是用来进行备份容灾的,从而当一个数据中心挂了,另外一个数据中心经过切换之后,能让服务迅速的恢复。...热升级了解一下,不可预知的中断了解一下 同城异地最关键的点在于存储,存储如何跨机房使用,从而分为几个方面进行探讨: 1、 DNS解析 在业务大量使用DNS解耦的时候,而且使用双机房的时候...2、 数据库同步 在数据库方面,主要是使用mysql,而mysql则主要是使用主备模式,从而主的在一个机房,而备库则在另外一个机房,在同步的时候,不可避免的情况就是如果一旦主机宕机,从而有可能是丢失数据的...核心数据库,要想高可用,并且不存在数据丢失,从而可以使用分布式数据库,在数据写入的时候,采用强同步的方式写入数据,对于master节点,可以采用三机房三中心的模式,使用paxos算法进行选主,从而达到高可用的目标...,并且在数据写入的时候,写入三个分片,从而一个分片的数据损坏,在后台进程中,数据能慢慢的自动弥补回来,从而达到强一致性的数据保存的效果。
FileOutputStream os = openFileOutput("file.txt", Context.MODE_PRIVATE); String text = "写数据到文件...data/data//files目录下 openFileOutput和openFileInput方法可以获得操作文件的OutputStream以及InputStream对象,而且可以通过流对象处理任何文件的数据...totalBlocks = stat.getBlockCount(); return totalBlocks * blockSize; } /** * 获取手机内置存储剩余存储空间...stat.getAvailableBlocks(); return availableBlocks * blockSize; } /** * 获取手机内置存储总的存储空间...byte[] buffer = new byte[8192]; int count = 0; // 写入数据
.*, 内网跳板机在虚拟网络中的ip为172.27.x.x, 那么就可以配置这样一条路由规则: 这样,虚拟网络的网关就会将发往192.168.1.0/24这个网段的数据包导向这台跳板机。
数据缓存 通过《网络数据采集和解析》一文,我们已经知道了如何从指定的页面中抓取数据,以及如何保存抓取的结果,但是我们没有考虑过这么一种情况,就是我们可能需要从已经抓取过的页面中提取出更多的数据,重新去下载这些页面对于规模不大的网站倒是问题也不大...使用NoSQL Redis简介 Redis是REmote DIctionary Server的缩写,它是一个用ANSI C编写的高性能的key-value存储系统,与其他的key-value存储系统相比...Redis支持数据的持久化(RDB和AOF两种方式),可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。...Redis不仅仅支持简单的key-value类型的数据,同时还提供hash、list、set,zset、hyperloglog、geo等数据类型。...配置底层有多少个数据库。 配置Redis的持久化机制 - RDB。 配置Redis的持久化机制 - AOF。 配置访问Redis服务器的验证口令。
今天我们将尝试探讨数据库的异地多活高可用。注意,我们讨论的都是超大数据量(50TB 级别)的数据库。...POLARDB 和 Aurora 是相同的思路,计算节点是分布式的,存储使用共享存储,带来的问题还是单机房问题。...因此,分布式数据库解决的还是超大数据的存储和单机房的 HA,一旦跨越城市,目前还没有看到好的方案。 第二种 在分库分表就能无限扩容吗一文中,我们提到了单元化。...在单元化的基础上,我们可以实现异地多活。 ?...总结 本文简单的讨论了数据库的异地多活的方案,我们认为,在单元化的方案中,同步是核心,稳定的同步是保证数据一致的关键,而这,在单个机房中,只需要通过简单的 RPC 即可解决,但在跨机房,跨城市的网络中,
SharedPreferences作为android的存储方式有以下特点: 1.只能存放key-value模式的键值。 2.本质就是就是以xml文件在应用程序所在包中存放数据。...用户不需要去 xml文件的生成和解析 4.由于 SharedPreferences 只能存放key-value 简单的数据结构,通过用来做软件配置参数,用来配置用户对软件的自定义或设置参数。...如果要存在复杂的数据,可以使用文件,如果还需要方便的增删改查 的话,就只能用Sqlite数据库来完成 下面是该使用的代码: 所用的字符串 <?...this.getApplicationContext()); pref.save(name, ID, phone); Toast.makeText(this.getApplicationContext(), "写入数据成功...用户只需要创建一实体,然后想里面添加数据和取出数据,即可 结果如下:
◆ NoSQL数据存储 传统的架构方法是在服务之间共享一个数据库,而微服务却与之相反,每个微服务都拥有独立、自主、专门的数据存储。...选择理想的数据存储的第一步是确定微服务数据的性质,可以根据数据的特点将数据大致做如下划分。 全局共享数据:缓存服务器是存储短暂数据很好的例子。...K-V存储:解决关系数据库无法存储数据结构的问题,主要适合对全局数据进行快速查找的低延时、高性能场景,以Redis为代表。...◆ K-V存储 K-V存储指按照键值(Key-Value)进行的数据存储,其中Key是数据的标识,和关系数据库中的主键含义一样;Value是具体的数据。...◆ 列式数据库 顾名思义,列式数据库就是按照列来存储数据的数据库,与之对应的传统关系数据库被称为“行式数据库”,关系数据库就是按照行来存储数据的。
技巧3:采用多种手段同步数据 数据同步是异地多活架构设计的核心,幸运的是基本上存储系统本身都会有同步的功能。...既然说存储系统本身就有同步功能,而且同步功能还很强大,为何说只使用存储系统是一个思维误区呢?...尤其是异地多机房这种部署,各种各样的异常情况都可能出现,当我们只考虑存储系统本身的同步功能时,就会发现无法做到真正的异地多活。...解决的方案就是拓开思路,避免只使用存储系统的同步功能,可以将多种手段配合存储系统的同步来使用,甚至可以不采用存储系统的同步方案,改用自己的同步方案。...第3步:数据同步 确定数据的特点后,我们可以根据不同的数据设计不同的同步方案。常见的数据同步方案有: 存储系统同步 这是最常用也是最简单的同步方式。
而异地双(多)活,却是指有两个或者多个可以同时对外服务的节点,任意一个点挂了,也可以迅速切换到其他节点对外服务,节点之间的数据做到准实时同步。...异地多活决定了我们需要进行跨机房操作,比如杭州,美国,中国香港,青岛等多个机房之间进行数据交互。...我要所有数据都同步! 3、只使用存储系统的同步功能! 4、我要保证业务100%可用!...控制部署规模:在数据层自身支持跨机房服务之前,不建议部署超过两个的机房。因为异地两个机房,异地容灾的目的已经达成,且服务器规模足够大,各种配套的设施也会比较健全,运维成本也相对可控。...,延迟的问题会彻底放大; 3 、跨机房的专线很大概率会出问题,要做好运维或者程序层面的容错; 4 、不能依赖MySQL双写,必须有适应自身业务的跨机房消息同步方案; 5 、MySQL或者其他存储的数据同步问题
领取专属 10元无门槛券
手把手带您无忧上云