数据同步

Redis主从复制

会有一股神秘感。 提交于 2019-12-01 04:50:37
文章原创于公众号:程序猿周先森。本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号。 上一篇讲到了Redis的持久化机制,有RDB快照持久化以及AOF日志持久化。Redis的持久化机制保证了Redis即使服务重启,也可以将硬盘中已经持久化的数据进行恢复,持久化机制保证了Redis持久化过程即使出现宕机,最多也只会丢失1秒之内的数据。在80%左右企业使用的都是Redis单机服务,在生产环境下使用单机环境的Redis容易面临风险,如果Redis持久化的硬盘出现故障,则有可能导致持久化的备份数据出现丢失,所以我们需要一个方案解决这个问题,所以我们需要将原来集中式的数据库中的数据分别复制到不同Redis节点上进行存储,这也就是Redis中的主从复制。 概念 什么叫做主从复制?Redis主从复制实际上就是将主Redis服务器的数据,复制到其他从Redis服务器去进行存储,默认情况下每台Redis服务器都是主节点,一个主节点可以拥有多个从节点,但是每个从节点只能设置一个主节点。数据复制是单向复制,只能从主节点复制到从节点中存储。在主节点中不需要进行特殊的配置,而只需要在从节点添加slaveof指令: slaveof 在从节点的配置文件中通过slaveof指令可以设置该从节点拥有的主节点。 开启主从复制方式 在从节点中配置slaveof指令一共有三种方式: 在redis

redis

那年仲夏 提交于 2019-11-30 18:41:47
Cache Aside Pattern 最经典的缓存+数据库读写的模式,就是 Cache Aside Pattern。 读的时候,先读缓存,缓存没有的话,就读数据库,然后取出数据后放入缓存,同时返回响应。 更新的时候,先更新数据库,然后再删除缓存。 为什么是删除缓存,而不是更新缓存? 原因很简单,很多时候,在复杂点的缓存场景,缓存不单单是数据库中直接取出来的值。 个人观点: Cache Aside Pattern 在更新了数据库 再删除缓存的过程中还是有一段时间的不一致, 如果严格要求一致,可以先将数据设置为不可用,请求过来block住,然后再操作完后设置为可用。 并且缓存没有再读数据库可以设置只能一个读数据库,其他的block,防止请求压垮数据库。所以可以再有一个中间层来控制一下。 目前还没有找到合适的现有控件,后续发现补充 redis特点: 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) 支持丰富数据类型,支持string,list,set,sorted set,hash 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除 Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写

SQL Server数据同步交换

南楼画角 提交于 2019-11-30 06:28:50
一、为了解决数据同步汇聚,数据分发,数据转换,数据维护等需求,TreeSoft将复杂的网状的同步链路变成了星型数据链路。 TreeSoft作为中间传输载体负责连接各种数据源,为各种异构数据库之间架起同步的桥梁, 实现一对多,多对多,多对一等复杂场景的数据同步。 TreeSoft已被广泛应用,每日处理大量大数据的数据维护、数据同步、数据汇聚、数据转换业务。 支持MySQL, MariaDB, Oracle, PostgreSQL, SQL Server, DB2, MongoDB, Hive, SAP HANA, Sybase, Caché, Informix, 达梦DM, 金仓Kinbase, 神通, 南大GBase等数据库。 ​ 二、兼具数据同步与数据维护管理功能,具备适应性广,灵活性强等特点。 1、支持主流RDBMS、NOSQL数据库间同步交换数据。 2、支持单节点或集群布署,可应对庞杂的业务环境。 3、支持百万级以上数据量同步。 4、企业级定时任务框架,稳定高效。 5、支持多数据源向多目标数据汇聚或数据分发。 6、支持定时数据清洗转换等后处理。 7、支持window, Linux,mac等操作系统。 8、基于JAVA开发,WEB网页管理,快速布署,到处使用。 9、基于网页灵活配置及管理,详细记录同步日志。 10、兼具数据维护,数据库管理功能,大大提高工作效率。 ​ 三

Rsync数据同步

*爱你&永不变心* 提交于 2019-11-30 02:02:53
数据同步方法:scp、nfs、sftp、http、samba、rsync、drbd(基于文件系统同步的) rsync介绍:      rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步的优秀工具。rsync软件适用于unix/linux/windows等多种操作系统平台     一个rsync相当于scp、cp、rm,但是还优于他们每一个命令。 rsync的特性:支持拷贝特殊文件如链接文件,设备等。   可以有排除指定文件或目录同步的功能,相当于打包命令tar的排队功能   可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变-p。。   可实现增 量同步, 既只同步发生变化的数据,因此数据传输效率很高, tar。。   可以 使用rcp,rsh,ssh 等方式来配合传输文件 (rsync本身不对数据加密)。   可以通过socket(进程方式)传输文件和数据。。   支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像。|   定时同步的话是:cround+rsync   用rsync数据实时同步的两种方法:rsync+inotify和rsync+sersync rsync的工作方式:   单个主机本地之间的数据传输(此时类似于cp命令的功能)   借助rcp、ssh等通道来传输数据

离线应用——业务数据同步方案探讨

…衆ロ難τιáo~ 提交于 2019-11-29 11:54:00
目标: 大家可以设想这样一个情景,公司已经部署信息化,且很多办公流程已经挪到线上正在运营的系统来解决,这带给企业的员工非常大的便利,节省办公时间,提高办公效率,可是我们把所有的流程和数据都放到了公司服务器,一旦离开了公司,我们就相当于和我们所有的办公环境脱离了,不再可以查看公司系统上的运营数据,不再可以进行添加删除等等一系列操作。如果你最近的工作非常的多,你在有限的正常办公时间内不能完成,那怎么办,只有在办公室奋战,叫苦不迭的夜晚办公室生活就开始了. 离线应用生来就是为了解决这样的问题,针对上面所列举的情况,你不需要在办公室进行奋战,你要做的只有 1.将线上系统某个列表(或存储结构)的数据按需选择同步到本地 2.回到家,利用闲暇时间,打开离线应用,对数据进行操作 3.第二天回到公司,同步数据到公司服务器 说了这么多,我们的目的只有一个:实现离线办公 实现方案: 我们将整个离线应用分为两块 1.业务数据同步到本地 2.本地提交到业务系统 对于中间支持用户怎么去操作数据,不是我们这里讨论的重点,这也是随业务逻辑而变的,一般都会在功能上做成和线上的系统一样 1.业务数据同步到本地 将云上的业务上的数据按需同步到本地并不是什么难的操作,但是这里也不容小觑 技术实现要点: 能够按需选择数据同步到本地,为了让用户不用花大量的时间在等待同步数据到本地,我们可以采用由用户选择数据的同步 机制

分布式系统存储层的读写流程

不打扰是莪最后的温柔 提交于 2019-11-29 08:39:52
0 分布式集群的数据一致性 分布式集群的存储层一般由缓存层与数据固化层构成。 对存储层进行读写的时候,需要考虑到数据的一致性。数据一致性分为强一致(实时一致性)和弱一致(最终一致性),根据数据一致性要求的不同,读写流程也要做相应的改变。下面结合个人经验给出两种情况下的读写流程步骤。 一般的简单的分布式系统,缓存层可以使用redis集群,固化层则可以使用mysql或者mongodb集群。 限于个人经验,本文所指的缓存层专指redis集群,固化层专指mysql或者mongodb集群。 下面所有函数都遵循的几个条件: 1 数据的key(如key="foo.bar")有垃圾值rubbish(如rubbish = "rubish-123987401234-zbert-rubish"); 2 key相关的锁为lock(如lock = "lock.foo.bar") 3 lock为乐观锁,其超时时间为ttl(如ttl = 10s) 1 强一致性系统的读写流程 强一致性系统要求缓存和数据库的数据实时一致。这就要求写操作期间既要防止多个写请求之间发生冲突,又要防止读请求与其发生冲突。 写流程 func write(key, value) err { err = "okay" // 1 生成本次lock的随机值rand,然后申请lock; rand = time().now() * getpid()

数据库架构 - 如何设计结构化数据存储(转)

穿精又带淫゛_ 提交于 2019-11-29 05:44:33
前言 传统的数据系统就是所谓的『大数据』技术,这是一个被创造出来的名词,代表着新的技术门槛。近几年得益于产业的发展、业务的创新、数据的爆发式增长以及开源技术的广泛应用,经历多年的磨炼以及在广大开发者的共建下,大数据的核心组件和技术架构日趋成熟。特别是随着云的发展,让『大数据』技术的使用门槛进一步降低,越来越多的业务创新会由数据来驱动完成。 『大数据』技术会逐步向轻量化和智能化方向发展,最终也会成为一个研发工程师的必备技能之一,而这个过程必须是由云计算技术来驱动以及在云平台之上才能完成。应用系统和数据系统也会逐渐融合,数据系统不再隐藏在应用系统之后,而是也会贯穿在整个业务交互逻辑。传统的应用系统,重点在于交互。而现代的应用系统,在与你交互的同时,会慢慢地熟悉你。数据系统的发展驱动了业务系统的发展,从业务化到规模化,再到智能化。 业务化:完成最基本的业务交互逻辑。 规模化:分布式和大数据技术的应用,满足业务规模增长的需求以及数据的积累。 智能化:人工智能技术的应用,挖掘数据的价值,驱动业务的创新。 向规模化和智能化的发展,仍然存在一定的技术门槛。成熟的开源技术的应用能让一个大数据系统的搭建变得简单,同时大数据架构也变得很普遍,例如广为人知的Lambda架构,一定程度上降低了技术的入门门槛。但是对数据系统的后续维护,例如对大数据组件的规模化应用、运维管控和成本优化,需要掌握大数据

Redis主从复制

早过忘川 提交于 2019-11-29 00:48:18
Redis主从复制 为什么使用主从复制 数据冗余 上一篇中,Redis数据的持久化保证了Redis数据不至于因为意外关闭而导致数据丢失,但是假如Redis服务器因为硬盘损坏而导致的数据丢失。使用上面的备份可能依然会出现数据因为损坏而无法恢复的情况,所以这个时候我们需要为Redis在其他服务器上提供备份。 服务冗余 当主服务出现问题无法启动的时候可以启动从服务,实现快速故障恢复 读写分离 随着数据访问的增加,单一节点负责数据的读写会给单一服务带来较大的压力。所以这个时候我们可以主节点负责写服务,从服务负责读服务,分担服务器负载。 高可用 主从复制,是实现哨兵和集群的基础。 Redis集群原理 一般来说我们针对一个主服务(master)配置两个从服务(slave),当然这个数量不是固定了,你可以做一主一从、一主多从。这样在主服务宕机的时候其他两个从服务依旧可以维护数据的完整性,并且尝试继续提供服务。 主从配置 主从复制提供三种配置的方式 配置文件 在从服务器的配置文件 redis.conf 中加入:slaveof # 指定主服务为本机的 6379端口 slaveof 127.0.0.1 6379 启动命令 从服务器redis-server启动命令后加入 --slaveof redis-server --port 6380 --slaveof 127.0.0.1 6379 客户端命令