CN111831617A - 一种基于分布式系统保证日志数据唯一性的方法 - Google Patents
一种基于分布式系统保证日志数据唯一性的方法 Download PDFInfo
- Publication number
- CN111831617A CN111831617A CN202010686477.5A CN202010686477A CN111831617A CN 111831617 A CN111831617 A CN 111831617A CN 202010686477 A CN202010686477 A CN 202010686477A CN 111831617 A CN111831617 A CN 111831617A
- Authority
- CN
- China
- Prior art keywords
- file
- subscript
- consumption
- log
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
- G06F16/1767—Concurrency control, e.g. optimistic or pessimistic approaches
- G06F16/1774—Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于分布式系统保证日志数据唯一性的方法,所述方法包括如下步骤:步骤S1、在分布式多服务器上均署部日志消费端;步骤S2、在多个服务器中配置共享存储的磁盘映射,来实现同一时刻只允许有一个服务器节点获取文件锁;步骤S3、获取步长与当前的日志数据的id下标;步骤S4、日志消费端开始消费id下标直到步长消费完毕;步骤S5、重新获取文件锁、步长与id下标,从而使得在分布式多服务器情况下保证日志数据唯一性。本发明能在分布式处理日志情况下保证数据的唯一性。
Description
技术领域
本发明涉及计算机通讯技术领域,特别是一种基于分布式系统保证日志数据唯一性的方法。
背景技术
随着互联网技术、游戏产业的快速发展,大数据的兴起使得日志分析成为可能,日志特点为数据量大,在日志处理过程中传统技术为按天、一个文件处理,通过整个文件处理达到事务完整性,这样的处理方式有延迟与重复风险,如:出现日志id重复的问题。日志的产生和消费是一种数据量大、高频次的场景,日志为文本数据,为了区分日志唯一性,需要为所有日志数据进行唯一编号,在编号的过程中,只有依赖本机自动递增才能保证最高的处理效率。但是在分布式多服务器情况下,本机自动递增会导致id重复问题。
发明内容
为克服上述问题,本发明的目的是提供一种基于分布式系统保证日志数据唯一性的方法,能在分布式处理日志情况下保证数据的唯一性。
本发明采用以下方案实现:一种基于分布式系统保证日志数据唯一性的方法,所述方法包括如下步骤:步骤S1、在分布式多服务器上均署部日志消费端;
步骤S2、在多个服务器中配置共享存储的磁盘映射,来实现同一时刻只允许有一个服务器节点获取文件锁;
步骤S3、获取步长与当前的日志数据的id下标;
步骤S4、日志消费端开始消费id下标直到步长消费完毕;
步骤S5、重新获取文件锁、步长与id下标,从而使得在分布式多服务器情况下保证日志数据唯一性。
进一步的,所述步骤S1进一步具体为:在分布式多服务器上部署日志消费端的消费程序,消费程序的作用为实现流式实时消费日志,消费程序能为日志编号即实现方式为当前全局id下标以1为最小单位递增,逐条编号,经过1条日志则消耗1个id值。
进一步的,所述步骤S2进一步具体为:分布式多服务器情况下,避免多服务器竞争获取id下标导致id下标重复,需要为每个日志消费端配置一个共享存储的磁盘映射,通过操作系统文件锁实现并发读锁,保证同一时刻只允许有一个服务器获取文件锁,通过共享存储的磁盘映射和文件锁来实现并发读锁,具体为利用操作系统对磁盘的文件原子操作,即:同一台服务器,同一个操作系统,同一个文件地址,只允许存在一个文件,为了确定唯一性,必须指定文件目录与文件名统一为小写,多服务器同时请求磁盘映射,共同约定的序列存储文件地址,只会有一台服务器能请求成功。
进一步的,所述步骤S4进一步具体为:消费程序内逻辑控制,流失实时消费日志,逐条日志进行编号,以1为单位逐条消费下标到步长内的id,单调递增,在消费过程中,遇到异常或者中断,为了保证唯一性程序需要使用新id或者重新获取下标到步长。
进一步的,所述方法进一步包括:设置id下标为Offset,步长为Step,id序列存储文件为sequence.conf,文件锁文件为sequence.conf.lock;则消费程序获取文件锁文件sequence.conf.lock后,能继续对sequence.conf文件进行操作,该操作具体为:解析id序列存储文件sequence.conf,获得下标Offset,获得步长Step,更新Offset下标,更新的Offset=当前Offset+当前Step;将更新的Offset和Step重新写入id序列存储文件保存,删除文件锁,等待其它服务器重新获取id序列存储文件。
进一步的,所述步骤S5进一步具体为:当消费端消费完已分配的步长id,需要重新获取下标与步长,通过不同服务器获取下标Offset与步长Step来保证不同服务器预分配的id区间唯一,从而实现全局唯一id。
本发明的有益效果在于:本发明区别现有依赖数据库id自增的方法,提出了一种可以在不依赖其它服务的情况下,实现不需要安装第三方服务的最小依赖,通过共享文件系统与文件锁方式实现并发读写互斥,保证并发情况下id不重复,并且通过内存自增达到快速处理的目的。
附图说明
图1是本发明的方法流程示意图。
图2是本发明一实施例的流程示意图。
具体实施方式
下面结合附图对本发明做进一步说明。
请参阅图1所示,本发明的一种基于分布式系统保证日志数据唯一性的方法,其特征在于:所述方法包括如下步骤:步骤S1、在分布式多服务器上均署部日志消费端;所述步骤S1进一步具体为:在分布式多服务器上部署日志消费端的消费程序,消费程序的作用为实现流式实时消费日志,消费程序能为日志编号即实现方式为当前全局id下标以1为最小单位递增,逐条编号,经过1条日志则消耗1个id值。
步骤S2、在多个服务器中配置共享存储的磁盘映射,来实现同一时刻只允许有一个服务器节点获取文件锁;
所述步骤S2进一步具体为:分布式多服务器情况下,避免多服务器竞争获取id下标导致id下标重复,需要为每个日志消费端配置一个共享存储的磁盘映射,通过操作系统文件锁实现并发读锁,保证同一时刻只允许有一个服务器获取文件锁,通过共享存储的磁盘映射和文件锁来实现并发读锁,具体为利用操作系统对磁盘的文件原子操作,即:同一台服务器,同一个操作系统,同一个文件地址,只允许存在一个文件,为了确定唯一性,必须指定文件目录与文件名统一为小写,多服务器同时请求磁盘映射,共同约定的序列存储文件地址,只会有一台服务器能请求成功。
步骤S3、获取步长与当前的日志数据的id下标;
步骤S4、日志消费端开始消费id下标直到步长消费完毕;
步骤S5、重新获取文件锁、步长与id下标,从而使得在分布式多服务器情况下保证日志数据唯一性。
其中,所述步骤S4进一步具体为:消费程序内逻辑控制,流失实时消费日志,逐条日志进行编号,以1为单位逐条消费下标到步长内的id,单调递增,在消费过程中,遇到异常或者中断,为了保证唯一性程序需要使用新id或者重新获取下标到步长。
所述方法进一步包括:设置id下标为Offset,步长为Step,id序列存储文件为sequence.conf,文件锁文件为sequence.conf.lock;则消费程序获取文件锁文件sequence.conf.lock后,能继续对sequence.conf文件进行操作,该操作具体为:解析id序列存储文件sequence.conf,获得下标Offset,获得步长Step,更新Offset下标,更新的Offset=当前Offset+当前Step;将更新的Offset和Step重新写入id序列存储文件保存,删除文件锁,等待其它服务器重新获取id序列存储文件。
所述步骤S5进一步具体为:当消费端消费完已分配的步长id,需要重新获取下标与步长,通过不同服务器获取下标Offset与步长Step来保证不同服务器预分配的id区间唯一,从而实现全局唯一id。
请参阅图2所示,下面结合一具体实施例对本发明作进一步说明:
1. 分布式多服务器署部日志消费端
所有服务器部署日志消费端的消费程序,消费程序的作用为实现流式实时消费日志,目标功能为日志编号,实现方式为当前全局id下标以1为最小单位递增,逐条编号,经过1条日志则消耗1个id值。
2. 配置共享存储的磁盘映射,获取文件锁
分布式多服务器情况下,避免同一竞争获取id下标导致下标重复,需要为每个日志消费端配置一个共享存储的磁盘映射。通过操作系统文件锁实现并发读锁,保证同一时刻只允许有一个服务器获取文件锁。这个环节中利用操作系统对磁盘的文件原子进行操作,即:同一台服务器,同一个操作系统,同一个文件地址,只允许存在一个文件,为了确定唯一性,必须指定文件目录与文件名统一为小写。id序列存储文件sequence.conf,文件锁文件sequence.conf.lock。多服务器同时请求磁盘映射,共同约定的序列存储文件地址,只会有一台服务器能请求成功。如:共同约定地址为//192.168.10.10/mnt/sdb/gid/sequence.conf
3. 获取步长与当前id下标
Offset:当前id下标
Step:步长
获取sequence.conf,文件内容以key=value形式保存,获取文件锁(sequence.conf.lock)的节点可以读取sequence.conf文件。
sequence.conf文件存储内容:
Offset=0
Step=100000
读取到序列文件(sequence.conf)的应用程序需要将文件下标更新,更新规则为下标(Offset=Offset+Step)
文件存储内容更新为:
Offset=100000
Step=100000
在大流量情况下,为了降低文件系统压力,需要将步长增大,延长步长(Step)消耗时间。
消费程序获取文件锁(sequence.conf.lock)后,可以继续对sequence.conf文件操作:
3.1.解析sequence.conf文件
3.2.解析Offset获得下标,内存保存
3.3.解析Step获得增量,内存保存
3.4.更新Offset下标,Offset=当前Offset+当前Step
3.5.重新写入文件保存
3.6.删除文件锁,等待其它服务器重新获取
4. 开始消费id序列直到步长消费完
消费程序内逻辑控制,内存中递增,流式实时消费日志,逐条日志进行编号,以1为单位逐条消费下标(Offset)到步长(Step)内的id,单调递增,在消费过程中,遇到异常或者中断,为了保证唯一性程序需要使用新id或者重新获取下标(Offset)到步长(Step);每次处理1条。
5. 重新获取文件锁与步长与id下标
当消费端消费完已分配的步长id,需要重新获取下标与步长,通过不同服务器获取下标Offset与步长Step来保证不同服务器预分配的id区间唯一,从而实现全局唯一id。例如5台服务器:
第一台服务器:下标Offset=0,步长Step=10000,表示可使用的id为0~10000
第二台服务器:下标Offset=10000,步长Step=10000,表示可使用的id为10000~20000
…
第五台服务器:下标Offset=40000,步长Step=10000,表示可使用的id为40000~50000。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
Claims (6)
1.一种基于分布式系统保证日志数据唯一性的方法,其特征在于:所述方法包括如下步骤:步骤S1、在分布式多服务器上均署部日志消费端;
步骤S2、在多个服务器中配置共享存储的磁盘映射,来实现同一时刻只允许有一个服务器节点获取文件锁;
步骤S3、获取步长与当前的日志数据的id下标;
步骤S4、日志消费端开始消费id下标直到步长消费完毕;
步骤S5、重新获取文件锁、步长与id下标,从而使得在分布式多服务器情况下保证日志数据唯一性。
2.根据权利要求1所述的一种基于分布式系统保证日志数据唯一性的方法,其特征在于:所述步骤S1进一步具体为:在分布式多服务器上部署日志消费端的消费程序,消费程序的作用为实现流式实时消费日志,消费程序能为日志编号即实现方式为当前全局id下标以1为最小单位递增,逐条编号,经过1条日志则消耗1个id值。
3.根据权利要求1所述的一种基于分布式系统保证日志数据唯一性的方法,其特征在于:所述步骤S2进一步具体为:分布式多服务器情况下,避免多服务器竞争获取id下标导致id下标重复,需要为每个日志消费端配置一个共享存储的磁盘映射,通过操作系统文件锁实现并发读锁,保证同一时刻只允许有一个服务器获取文件锁,通过共享存储的磁盘映射和文件锁来实现并发读锁,具体为利用操作系统对磁盘的文件原子操作,即:同一台服务器,同一个操作系统,同一个文件地址,只允许存在一个文件,为了确定唯一性,必须指定文件目录与文件名统一为小写,多服务器同时请求磁盘映射,共同约定的序列存储文件地址,只会有一台服务器能请求成功。
4.根据权利要求1所述的一种基于分布式系统保证日志数据唯一性的方法,其特征在于:所述步骤S4进一步具体为:消费程序内逻辑控制,流失实时消费日志,逐条日志进行编号,以1为单位逐条消费下标到步长内的id,单调递增,在消费过程中,遇到异常或者中断,为了保证唯一性程序需要使用新id或者重新获取下标到步长。
5.根据权利要求2所述的一种基于分布式系统保证日志数据唯一性的方法,其特征在于:所述方法进一步包括:设置id下标为Offset,步长为Step,id序列存储文件为sequence.conf,文件锁文件为sequence.conf.lock;则消费程序获取文件锁文件sequence.conf.lock后,能继续对sequence.conf文件进行操作,该操作具体为:解析id序列存储文件sequence.conf,获得下标Offset,获得步长Step,更新Offset下标,更新的Offset=当前Offset+当前Step;将更新的Offset和Step重新写入id序列存储文件保存,删除文件锁,等待其它服务器重新获取id序列存储文件。
6.根据权利要求5所述的一种基于分布式系统保证日志数据唯一性的方法,其特征在于:所述步骤S5进一步具体为:当消费端消费完已分配的步长id,需要重新获取下标与步长,通过不同服务器获取下标Offset与步长Step来保证不同服务器预分配的id区间唯一,从而实现全局唯一id。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010686477.5A CN111831617B (zh) | 2020-07-16 | 2020-07-16 | 一种基于分布式系统保证日志数据唯一性的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010686477.5A CN111831617B (zh) | 2020-07-16 | 2020-07-16 | 一种基于分布式系统保证日志数据唯一性的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111831617A true CN111831617A (zh) | 2020-10-27 |
CN111831617B CN111831617B (zh) | 2022-08-09 |
Family
ID=72922975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010686477.5A Active CN111831617B (zh) | 2020-07-16 | 2020-07-16 | 一种基于分布式系统保证日志数据唯一性的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111831617B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113849846A (zh) * | 2021-11-30 | 2021-12-28 | 山东捷瑞数字科技股份有限公司 | 一种多服务器网站的日志存储管理系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108710687A (zh) * | 2018-05-21 | 2018-10-26 | 阿里巴巴集团控股有限公司 | 一种业务标识序列的获取方法和装置 |
WO2018209138A1 (en) * | 2017-05-10 | 2018-11-15 | Mine Zero Gmbh | Secure telecommunications and transactional platform |
CN109918349A (zh) * | 2019-02-25 | 2019-06-21 | 网易(杭州)网络有限公司 | 日志处理方法、装置、存储介质和电子装置 |
CN111026725A (zh) * | 2019-10-21 | 2020-04-17 | 北京奇艺世纪科技有限公司 | 消费数据的数据处理方法、装置、计算机设备和存储介质 |
CN111126002A (zh) * | 2019-10-01 | 2020-05-08 | 武汉数元网络技术有限公司 | 一种数据全局唯一性标识id的生成方法及系统 |
-
2020
- 2020-07-16 CN CN202010686477.5A patent/CN111831617B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018209138A1 (en) * | 2017-05-10 | 2018-11-15 | Mine Zero Gmbh | Secure telecommunications and transactional platform |
CN108710687A (zh) * | 2018-05-21 | 2018-10-26 | 阿里巴巴集团控股有限公司 | 一种业务标识序列的获取方法和装置 |
CN109918349A (zh) * | 2019-02-25 | 2019-06-21 | 网易(杭州)网络有限公司 | 日志处理方法、装置、存储介质和电子装置 |
CN111126002A (zh) * | 2019-10-01 | 2020-05-08 | 武汉数元网络技术有限公司 | 一种数据全局唯一性标识id的生成方法及系统 |
CN111026725A (zh) * | 2019-10-21 | 2020-04-17 | 北京奇艺世纪科技有限公司 | 消费数据的数据处理方法、装置、计算机设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
陆杰,李丰,李炼,: "分布式系统中的日志分析及应用", 《高技术通讯》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113849846A (zh) * | 2021-11-30 | 2021-12-28 | 山东捷瑞数字科技股份有限公司 | 一种多服务器网站的日志存储管理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111831617B (zh) | 2022-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6513050B1 (en) | Method of producing a checkpoint which describes a box file and a method of generating a difference file defining differences between an updated file and a base file | |
CN108628942B (zh) | 区块链节点设备、分布式数据库的数据读取及写入方法 | |
US11157445B2 (en) | Indexing implementing method and system in file storage | |
CN109710190B (zh) | 一种数据存储方法、装置、设备及存储介质 | |
KR20190062530A (ko) | 도메인 네임 분석 방법, 서버 및 저장 매체 | |
CN108228799B (zh) | 对象索引信息的存储方法及装置 | |
CN109766318B (zh) | 文件读取方法及装置 | |
CN112817538B (zh) | 数据处理的方法、装置、设备和存储介质 | |
CN109377383A (zh) | 产品数据同步方法、装置、计算机设备及存储介质 | |
CN115964002B (zh) | 一种电能表终端档案管理方法、装置、设备及介质 | |
CN110874425A (zh) | 共享第一级处理器高速缓存的硬件排序加速器 | |
CN113961510A (zh) | 一种文件处理方法、装置、设备及存储介质 | |
CN111831617B (zh) | 一种基于分布式系统保证日志数据唯一性的方法 | |
CN113282540A (zh) | 一种云对象存储同步方法、装置、计算机设备及存储介质 | |
CN111803917A (zh) | 资源的处理方法和装置 | |
CN113590144B (zh) | 一种依赖处理方法及装置 | |
CN115705313A (zh) | 一种数据处理方法、装置、设备及计算机可读存储介质 | |
CN111488483B (zh) | 曲库更新方法、装置、终端和非临时性计算机可读存储介质 | |
CN106055640A (zh) | 缓存的管理方法及系统 | |
CN103177026A (zh) | 数据管理方法和数据管理系统 | |
CN113905252B (zh) | 直播间的数据存储方法、装置、电子设备及存储介质 | |
CN115221360A (zh) | 树形结构配置方法和系统 | |
CN112256669A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN118034612B (zh) | 一种数据处理方法、装置和存储介质 | |
CN111614743B (zh) | 文件检测方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |