实时同步服务知识梳理

enzoo enzoo     2023-01-31     180

关键词:

01.为什么要使用实时同步服务

a-因为定时任务有缺陷,-一分钟以内的数据无法进行同步,容易造成数据丢失;

b-用户上传数据信息需要实时备份保存.

实时同步实现及工作原理.

01. 实时监控同步数据目录信息变化;

02. 监控目录发生变化进行数据推送.

实时同步监控服务器部署过程,(inotify服务); 实时同步备份服务器部署过程(rsync服务)

a.创建要存储数据的目录;

b.利用实时同步的软件监控我们进行备份的数据目录

c利用rsync服务进行数据推送传输备份(一般是监控存储服务器上的目录,向rsync备份服务器进行同步)

02实时同步软件部署

a.inotify+rsync 实现实时同步

b sersync+rsync 实现实时同步备份.

第一步骤:

安装部署 inotify yum -y install inotify-tools

[[email protected] data]# rpm -ql inotify-tools
/usr/bin/inotifywait
/usr/bin/inotifywatch
/usr/lib64/libinotifytools.so.0
/usr/lib64/libinotifytools.so.0.4.1
/usr/share/doc/inotify-tools-3.14
/usr/share/doc/inotify-tools-3.14/AUTHORS
/usr/share/doc/inotify-tools-3.14/COPYING
/usr/share/doc/inotify-tools-3.14/ChangeLog
/usr/share/doc/inotify-tools-3.14/NEWS
/usr/share/doc/inotify-tools-3.14/README
/usr/share/man/man1/inotifywait.1.gz
/usr/share/man/man1/inotifywatch.1.gz

inotifywait  

第二步骤, 安装部署rsync服务, 

a先部署服务端rsync 服务,

@1.检查rsync是否已经安装; rpm -qa |grep rsync

@2.编写rsync软件主配置文件. 

@3.创建目录管理用户

@4.创建备份目录,并进行授权;

@5.创建认证文件,编写认证用户和密码信息;设置备份文件目录权限为600.

@6.启动守护进程模式, rsync --daemon

b.再部署客户端rsync服务, yum -y install rsync

@1.检查并安装rsync服务

@2.rsync 配置文件 需要设置配置的认证文件. /etc/rsync.password (认证文件只需要有认证的密码信息),设置文件权限为600 只运行root访问读写

@3.使用客户端进行数据同步测试.

rsync -avz /etc/sysconfig/network [email protected]::backup --password-file=/etc/rsync.password  (在客户端进行push 推送到备份服务器,然后再在服务端进行检查:ls -ll /backup/. 看是否推送成功.)

 

03.实时同步软件 inotify 软件 强大的,细颗粒度的,异步的文件系统事件监控机制.

inotify_init  inotify_add_watch inotify_rm_watch 

inotify 软件的命令参数:(inotifywait)

-m|--monitor  参数:  始终保持事件监听状态;

-d|--daemon   类似于-m ,只是将命令运行在后台, 定义程序日志使用 --syslog参数.

-r --recursive  递归监控目录数据信息变化;

-o|--outfile <file> 打印事件到文件中,相当于标准正确输出

-s|--syslog  标准日志输出

-q|--quiet   将无用的输出信息,不进行显示输出

--timefmt<fmt>   设定日期的格式;

--format     打印使用指定的输出类似格式字符串,即实际监控输出的内容.

-e <event>  指定监听指定的事件,如果省略,表示所有事件都进行监听.

man inotifywait 查看所有参数说明和所有可以监控的事件信息.

 

 

inotify events

IN_ACCESS

IN_ATTRIB

IN_CLOSE_WRITE

IN_CLOSE_NOWRITE

IN_CREATE

IN_DELETE

IN_MODIFY

IN_MOVE_SELF 

IN_MOVED_FROM  File moved out of watched directory (*)

IN_MOVED_TO   File moved into watched directory (*)

IN_MOVE

IN_OPEN  file was opend  (*)

 

①. max_user_watches    可以监控的最大文件数

②. max_user_instances   设置用户可以开启的服务进程数

③. max_queued_events   设置监控服务实例可以监控的事件个数

①. inotifywait  监控产生的变化文件信息

②. inotifywatch  统计变化的文件事件信息

inotify 实时同步服务脚本编写-Inotify

编写脚本如下实现NFS服务器和备份服务器之间实现实时同步:

 

#!/bin/bash
###########This scripts is wrote by tony-2018-12-07
Rsync_path_file=/etc/rsync.password
Ip="172.16.1.41"
Path=/data
Inotify_command=/usr/bin/inotifywait

 

$Inotify_command  -mrq --format %w%f -e create,delete,moved_to,close_write /data| whil
e read line
do
#rsync -avz $line [email protected]$Ip::backup  --password-file=$Rsync_path_file
rsync -avz --delete /data/ [email protected]$Ip::games --password-file=$Rsync_path_file

 

done

 

脚本原理: 先使用inotifywait监控需要同步的目录,这里是/data目录, 然后监控创建,删除,移动重命名,打开动作,然后检查到变化后使用rsync命令进行向备份服务器进行同步.rsync -avz --delete /data/ [email protected]$Ip::games --password-file=/etc/rsync.password 

以上,实现了监控存储服务器的/data 目录的变化,并进行实时同步并备份到备份服务器的/bakcup(backup是模块名字))

方法二:使用sersync+rsync 实现高效的数据实时同步架构(进行目录的实时同步操作.)

sersync软件下载地址:https://github.com/wsgzao/sersync.

技术分享图片

inotify和rsync的配置文件默认不用修改,需要修改sersync的配置文件.

23 <sersync>
24 <localpath watch="/data">
25 <remote ip="172.16.1.41" name="backup"/>
26 <!--<remote ip="192.168.8.39" name="tongbu"/>-->
27 <!--<remote ip="192.168.8.40" name="tongbu"/>-->
28 </localpath>
29 <rsync>
30 <commonParams params="-artuz"/>
31 <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>
32 <userDefinedPort start="false" port="874"/><!-- port=874 -->
33 <timeout start="false" time="100"/><!-- timeout=100 -->
34 <ssh start="false"/>
35 </rsync>

修改好配置文件定义好要监控的同步目录和监控的参数后就可以进行使用sersync进行同步了.

sersync -h 查看命令使用的常见参数.

参数-d:启用守护进程模式
参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍
c参数-n: 指定开启守护线程的数量,默认为10个
参数-o:指定配置文件,默认使用confxml.xml文件
参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块
参数-m:单独启用其他模块,使用 -m socket 开启socket模块
参数-m:单独启用其他模块,使用 -m http 开启http模块
不加-m参数,则默认执行同步程序

./bin/sersync -dro  confxml.xml  

然后检测 /data目录下的文件变化后,就将文件推送到备份服务器相应目录中了.

高并发数据实时同步方案.(windows+Linux)  业务系统之间实时同步.

 









































并发与多线程相关知识点梳理

...证线程安全1.数据单线程内可见2.只读对象3.线程安全类4.同步与锁机制什么是锁线程同步引用类型ThreadLocalLeetCode相关线程的练习本文总结了并发与多线程相关知识点,做一个小结。并发和并行的概念首先从并发(Concurrency... 查看详情

并发与多线程相关知识点梳理(代码片段)

...证线程安全1.数据单线程内可见2.只读对象3.线程安全类4.同步与锁机制什么是锁线程同步引用类型ThreadLocalLeetCode相关线程的练习本文总结了并发与多线程相关知识点,做一个小结。并发和并行的概念首先从并发(Concurrency... 查看详情

并发与多线程相关知识点梳理(代码片段)

...证线程安全1.数据单线程内可见2.只读对象3.线程安全类4.同步与锁机制什么是锁线程同步引用类型ThreadLocalLeetCode相关线程的练习本文总结了并发与多线程相关知识点,做一个小结。并发和并行的概念首先从并发(Concurrency... 查看详情

java知识树梳理

Java知识树梳理  1、前端    HTML    CSS    JavaScript  2、后台    Java基础     算法    web方面    分布式、中间件、服务器等方面    大数据方面  3、数据库 查看详情

inotify+rsync实现实时同步

第1章数据实时同步介绍1.1什么是实时同步:如何实现实时同步A. 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化B. 发现目录中数据产生变化,就利用rsync服务推送到备份服务器上1.2实现实时同步的方法&... 查看详情

inotify+rsync实现实时同步

第1章数据实时同步介绍1.1什么是实时同步:如何实现实时同步A. 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化B. 发现目录中数据产生变化,就利用rsync服务推送到备份服务器上1.2实现实时同步的方法&... 查看详情

keepalived知识梳理

...palived详解 前言Keepalived是一个基于VRRP协议来实现的LVS服务高可用方案,可以利用其来避免单点故障。我们都知道,在一个LVS集群中,虽然LVS能够对客户端的请求基于IP进行调度,但是LVS自身并不能提供高可靠性,即不能进行... 查看详情

四.实时同步

01.课程概念介绍01.为什么要用实时同步服务 因为定时任务有缺陷,一分钟以内的数据无法进行同步,容易造成数据丢失 02.实时同步工作原理 a创建要存储数据的目录 b利用实时同步的软件监控我们进行备份的数据目录 c利用rsyn... 查看详情

rsync+inotify实现数据实时同步

知识储备:    1、Rsync是Unix/Linux下的一款应用软件,利用它可以使多台服务器数据保持同步一致性,第一次同步时rsync会复制全部内容,但在下一次只传输修改过的文件。Rsync在传输数据的过程中可以实行压缩及解... 查看详情

inotify实时同步数据

实时同步服务如何实现数据实时同步?2.1.1实现数据同步通过(利用rsync服务)rsync服务端部署rsync客户端部署2.1.2实现数据实时监控(利用inotify)inotifywait-mrq--format‘%w%f‘-ecreate,delete,moved_to,close_write/data2.2实现数据同步与实时监... 查看详情

rsync+inotify实现实时同步

...上写shell脚本,用crontab做定时任务下载过来(数据同步不实时)实时同步方法是:rsync远程目录实时同步drbd远程存储实时同步(很老的方案)共享存储,就是同一个磁盘设备同时被很多人用分布式存储(云存储)2、同步、异步... 查看详情

rsync服务实时同步目录

--sync同步async异步rsync远程同步   rsync    remotesync   远程同步 拷贝和同步的区别?rsync -faster,flexiblereplacementforrcprsync —afast,versatile,remote(and 查看详情

es基础知识与高频考点梳理(代码片段)

...义继承写法作用域和闭包执行上下文this闭包是什么异步同步VS异步异步和单线程前端异步的场景ES6/7新标准的考查箭头函数moduleclassset和mappromise变量类型JavaScript是一种弱类型脚本语言,所谓弱类型指的是定义变量时,不需要什么... 查看详情

如何同步播放服务实时多人游戏

】如何同步播放服务实时多人游戏【英文标题】:HowtosynchronizePlayServicesRealTimeMultiplayer【发布时间】:2017-09-1914:15:36【问题描述】:我正在使用Libgdx开发流行游戏Pong的在线版本。我已经开始使用Google的RealtimeMultiplayer服务在玩家... 查看详情

rsync远程同步+inotify实时同步

rsync远程同步备份服务器客户端发生改变,数据同步到服务器 查看详情

rsync与inotify实现数据实时同步

...notify单一的rsync只可以进行数据同步,单一的inotify只可以实时监控文件,两者结合使用刚好满足数据实时同步的需求,下面就用一个数据发布服务器和两个web服务器实例解析rsync+inotify实现实时同步。数据发布服务器192.168.1.5(rsy... 查看详情

实时同步sersync(代码片段)

实时同步sersync实战什么是实时同步实时同步是一种只要当前目录发生变化则会触发一个事件,事件触发后会将变化的目录同步至远程服务器。sersync和rsync+inotify对比提到数据同步就必然会谈到rsync,一般简单的服务器数据传输会... 查看详情

http知识模块详尽梳理

/***目录结构**/——Ajax规避浏览器同源策略methods    |——图片ping    |——comet    |——服务器发送事件    |——window.name+iframe    |——window.postMessage()     查看详情