CN105786628A - 一种分布式系统线程同步的处理方法 - Google Patents
一种分布式系统线程同步的处理方法 Download PDFInfo
- Publication number
- CN105786628A CN105786628A CN201610101313.5A CN201610101313A CN105786628A CN 105786628 A CN105786628 A CN 105786628A CN 201610101313 A CN201610101313 A CN 201610101313A CN 105786628 A CN105786628 A CN 105786628A
- Authority
- CN
- China
- Prior art keywords
- resource
- thread
- distributed
- local
- distributed system
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 16
- 238000000034 method Methods 0.000 claims abstract description 40
- 238000005516 engineering process Methods 0.000 description 3
- 238000007599 discharging Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种分布式系统线程同步的处理方法,其具体实现过程为:生成唯一身份标识,获取本地进程资源;申请并持有分布式资源后,释放本地资源,执行业务处理;释放分布式系统资源。本发明的一种分布式系统线程同步的处理方法与现有技术相比,解决线程同步场景下从单一应用部署到分布式部署的横向扩展问题,保证分布式系统的线程同步问题,同时尽可能的缩短本地资源的持有时间,大大提高了系统的并发度和吞吐量,实用性强,易于推广。
Description
技术领域
本发明涉及线程同步处理技术领域,具体地说是一种分布式系统线程同步的处理方法。
背景技术
应用系统中提到线程,必然引出线程同步的问题,如果其中同步问题没有考虑或处理好,可能会出现线程死锁和数据不一致。单一部署的应用系统,线程同步的实现直接依赖语言层面的lock、信号量即可。
对于大型应用系统,往往业务处理和物理部署比较复杂,例如应用层面的负载均衡等,而语言层面的线程同步技术无法跨越进程的限制。原本在单应用服务器运行正常的系统,部署到分布式环境后出现了数据不一致等问题。
基于此,现提供一种分布式系统线程同步的处理方法。
发明内容
本发明的技术任务是针对以上不足之处,提供一种分布式系统线程同步的处理方法。
一种分布式系统线程同步的处理方法,包括以下步骤:
一、生成唯一身份标识,获取本地进程资源;
二、申请并持有分布式资源后,释放本地资源,执行业务处理;
三、释放分布式系统资源。
步骤一中,获取唯一身份标识方法,是指根据服务器名称、进程ID、用户的SessionId、线程信息即工作线程ID,计算生成MD5码作为分布式系统中当前请求的唯一身份标识。
获取本地进程资源的过程为:根据ID从本地进程获取资源对象;使用本地线程同步方式对资源对象加锁。
所述本地线程同步方式是指引入第三方系统提供加锁标识,使用唯一身份标识对资源对象进行标识加锁,对本地或跨系统的线程提供无差异的线程同步方案。
步骤二中,释放本地资源,执行业务处理包含以下步骤:申请分布式系统资源;释放本地进程资源;执行业务处理。
步骤三的具体实现过程为:
根据ID获取分布式资源是否已被加锁及加锁者的唯一身份标识:对分布式资源加锁时,会要求指定资源的持有时限,超出该时限值后系统自动释放该资源,以保证系统的健壮性;
无论当前线程是否能够获取分布式资源,都及时释放本地进程资源,以避免影响系统的并发性能。
本发明的一种分布式系统线程同步的处理方法和现有技术相比,具有以下有益效果:
本发明通过引入第三方系统,对本地或跨系统的线程提供无差异的线程同步方案;解决线程同步场景下从单一应用部署到分布式部署的横向扩展问题,保证分布式系统的线程同步问题,同时尽可能的缩短本地资源的持有时间,大大提高了系统的并发度和吞吐量,实用性强,易于推广。
附图说明
附图1为本发明的实现流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
如附图1所示,本发明的一种分布式系统线程同步的处理方法,包括如下步骤:
S10:生成唯一身份标识,获取本地进程资源;
S11:申请并持有分布式资源后释放本地资源,执行业务处理;
S12:释分布式系统资源。
基于步骤S10,生成唯一身份标识,获取本地进程资源包含以下步骤:
根据服务器名称、进程ID、用户的SessionId、线程信息即工作线程ID,计算生成MD5码作为分布式系统中当前请求的唯一身份标识。
根据ID从本地进程获取资源对象。
使用本地线程同步方式对资源对象加锁。
基于S10,同步处理是进程内线程同步技术实现,为了区分于分布式事务的同步处理,将加锁的同步对象称之为本地进程资源。
在处理分布式线程同步时,系统会生成并登记一个唯一身份标识,用来区分同一“用户”在不同或同一服务器上多次并发请求。
基于S11,申请并持有分布式资源后释放本地资源,执行业务处理包含以下步骤:
申请分布式系统资源;
释放本地进程资源;
执行业务处理。
基于S10,协调分布式环境的同步处理,借助于引入独立第三方系统,使用唯一身份标识对资源对象进行标识“加锁”。
基于步骤S12,其具体实现过程为:
根据ID获取分布式资源是否已被加锁及加锁者的唯一身份标识:对分布式资源加锁时,会要求指定资源的持有时限,超出该时限值后系统自动释放该资源,以保证系统的健壮性;
无论当前线程是否能够获取分布式资源,都及时释放本地进程资源,以避免影响系统的并发性能。
以下将通过一个实际实施场景举例,使本发明的上述目标、特征和优点更加清晰、易懂。
以工作流系统用于提交和执行审批的业务场景为例,开发人员首先定义获取唯一身份的方法,如下所示。
开发人员完成上述代码后,仅完成了本地资源的获取。
然后开发人员在持有本地资源的基础上申请分布式资源,申请成功后立即释放本地资源。其中我们也会增加资源的持有时限,当超过指定的最大时限后,后期线程可以强制清除已超时的资源持有者,以此来增加系统的健壮性。
做完上述三步后,就表明当前线程持有了分布式资源,接下来就可以进行其他的业务处理了。
分布式资源可以通过分布式缓存、数据库等第三方系统实现,接下来是以数据库持久化方式为例,展示分布式系统的资源持有和释放,示例代码如下所示。
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。
Claims (6)
1.一种分布式系统线程同步的处理方法,其特征在于,其实现过程为:
一、生成唯一身份标识,获取本地进程资源;
二、申请并持有分布式资源后,释放本地资源,执行业务处理;
三、释放分布式系统资源。
2.根据权利要求1所述的一种分布式系统线程同步的处理方法,其特征在于,步骤一中,获取唯一身份标识方法,是指根据服务器名称、进程ID、用户的SessionId、线程信息即工作线程ID,计算生成MD5码作为分布式系统中当前请求的唯一身份标识。
3.根据权利要求2所述的一种分布式系统线程同步的处理方法,其特征在于,获取本地进程资源的过程为:根据ID从本地进程获取资源对象;使用本地线程同步方式对资源对象加锁。
4.根据权利要求3所述的一种分布式系统线程同步的处理方法,其特征在于,所述本地线程同步方式是指引入第三方系统提供加锁标识,使用唯一身份标识对资源对象进行标识加锁,对本地或跨系统的线程提供无差异的线程同步方案。
5.根据权利要求4所述的一种分布式系统线程同步的处理方法,其特征在于,步骤二中,释放本地资源,执行业务处理包含以下步骤:申请分布式系统资源;释放本地进程资源;执行业务处理。
6.根据权利要求4所述的一种分布式系统线程同步的处理方法,其特征在于,步骤三的具体实现过程为:
根据ID获取分布式资源是否已被加锁及加锁者的唯一身份标识:对分布式资源加锁时,会要求指定资源的持有时限,超出该时限值后系统自动释放该资源,以保证系统的健壮性;
无论当前线程是否能够获取分布式资源,都及时释放本地进程资源,以避免影响系统的并发性能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610101313.5A CN105786628B (zh) | 2016-02-24 | 2016-02-24 | 一种分布式系统线程同步的处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610101313.5A CN105786628B (zh) | 2016-02-24 | 2016-02-24 | 一种分布式系统线程同步的处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105786628A true CN105786628A (zh) | 2016-07-20 |
CN105786628B CN105786628B (zh) | 2019-07-02 |
Family
ID=56402394
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610101313.5A Active CN105786628B (zh) | 2016-02-24 | 2016-02-24 | 一种分布式系统线程同步的处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105786628B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106571953A (zh) * | 2016-10-21 | 2017-04-19 | 东莞市大易产业链服务有限公司 | 一种分布式唯一id生成方法 |
CN106775960A (zh) * | 2016-12-30 | 2017-05-31 | 武汉斗鱼网络科技有限公司 | 一种对Windows进程的唯一标示方法及系统 |
CN107454203A (zh) * | 2017-07-19 | 2017-12-08 | 成都数联铭品科技有限公司 | 在分布式系统中生成唯一id的方法 |
CN108304251A (zh) * | 2018-02-06 | 2018-07-20 | 网宿科技股份有限公司 | 线程同步方法及服务器 |
CN108363613A (zh) * | 2017-12-28 | 2018-08-03 | 杭州马猴烧韭科技有限公司 | 一种独占锁的加锁方法、电子设备及存储介质 |
CN110865977A (zh) * | 2019-11-05 | 2020-03-06 | 中盈优创资讯科技有限公司 | 多程序操作hdfs目录的方法及装置 |
CN111026724A (zh) * | 2019-11-24 | 2020-04-17 | 山东中创软件商用中间件股份有限公司 | 一种基于分布式系统的文件同步方法、装置、设备及介质 |
CN114579320A (zh) * | 2020-11-18 | 2022-06-03 | 花瓣云科技有限公司 | 同步处理方法、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101072222A (zh) * | 2006-05-12 | 2007-11-14 | 腾讯科技(深圳)有限公司 | 基于点对点技术的图片跟随浏览系统和方法 |
EP2270687A2 (en) * | 1995-04-11 | 2011-01-05 | Kinetech, Inc. | Identifying data in a data processing system |
CN101981878A (zh) * | 2008-03-31 | 2011-02-23 | 日本电气株式会社 | 分布式资源管理系统、分布式资源管理方法、及分布式资源管理程序 |
CN103297456A (zh) * | 2012-02-24 | 2013-09-11 | 阿里巴巴集团控股有限公司 | 一种分布式系统下共享资源的访问方法及分布式系统 |
-
2016
- 2016-02-24 CN CN201610101313.5A patent/CN105786628B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2270687A2 (en) * | 1995-04-11 | 2011-01-05 | Kinetech, Inc. | Identifying data in a data processing system |
CN101072222A (zh) * | 2006-05-12 | 2007-11-14 | 腾讯科技(深圳)有限公司 | 基于点对点技术的图片跟随浏览系统和方法 |
CN101981878A (zh) * | 2008-03-31 | 2011-02-23 | 日本电气株式会社 | 分布式资源管理系统、分布式资源管理方法、及分布式资源管理程序 |
CN103297456A (zh) * | 2012-02-24 | 2013-09-11 | 阿里巴巴集团控股有限公司 | 一种分布式系统下共享资源的访问方法及分布式系统 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106571953A (zh) * | 2016-10-21 | 2017-04-19 | 东莞市大易产业链服务有限公司 | 一种分布式唯一id生成方法 |
CN106775960A (zh) * | 2016-12-30 | 2017-05-31 | 武汉斗鱼网络科技有限公司 | 一种对Windows进程的唯一标示方法及系统 |
CN106775960B (zh) * | 2016-12-30 | 2020-04-10 | 武汉斗鱼网络科技有限公司 | 一种对Windows进程的唯一标示方法及系统 |
CN107454203A (zh) * | 2017-07-19 | 2017-12-08 | 成都数联铭品科技有限公司 | 在分布式系统中生成唯一id的方法 |
CN108363613A (zh) * | 2017-12-28 | 2018-08-03 | 杭州马猴烧韭科技有限公司 | 一种独占锁的加锁方法、电子设备及存储介质 |
CN108304251A (zh) * | 2018-02-06 | 2018-07-20 | 网宿科技股份有限公司 | 线程同步方法及服务器 |
CN108304251B (zh) * | 2018-02-06 | 2021-11-19 | 网宿科技股份有限公司 | 线程同步方法及服务器 |
CN110865977A (zh) * | 2019-11-05 | 2020-03-06 | 中盈优创资讯科技有限公司 | 多程序操作hdfs目录的方法及装置 |
CN111026724A (zh) * | 2019-11-24 | 2020-04-17 | 山东中创软件商用中间件股份有限公司 | 一种基于分布式系统的文件同步方法、装置、设备及介质 |
CN111026724B (zh) * | 2019-11-24 | 2023-09-01 | 山东中创软件商用中间件股份有限公司 | 一种基于分布式系统的文件同步方法、装置、设备及介质 |
CN114579320A (zh) * | 2020-11-18 | 2022-06-03 | 花瓣云科技有限公司 | 同步处理方法、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105786628B (zh) | 2019-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105786628A (zh) | 一种分布式系统线程同步的处理方法 | |
CN107341051A (zh) | 集群任务协调方法、系统和装置 | |
TWI778296B (zh) | 資訊處理方法、裝置、電子設備及電腦可讀儲存媒體 | |
CA2484007A1 (en) | Providing a useable version of a data item | |
CN108491252A (zh) | 分布式事务处理方法及分布式系统 | |
CN105915343A (zh) | 一种注册用户离线激活方法和系统 | |
CN106126326A (zh) | 定时任务管理方法和装置 | |
CN107656796B (zh) | 一种虚拟机冷迁移方法、系统及设备 | |
CN103186418B (zh) | 一种任务分发方法及系统 | |
US20180267828A1 (en) | Specifying an order of a plurality of resources in a transaction | |
CN104780211B (zh) | 数据同步方法和装置 | |
CN106878365A (zh) | 一种数据同步方法和设备 | |
CN108304251A (zh) | 线程同步方法及服务器 | |
CN107038174B (zh) | 用于数据系统的数据同步方法和装置 | |
CN106874341A (zh) | 一种数据库同步方法 | |
CN116662426A (zh) | 数据库连接的建立方法、装置、设备及介质 | |
JP6912724B2 (ja) | 情報処理プログラム、情報処理装置及び情報処理方法 | |
CN107766131A (zh) | 任务调度方法和装置 | |
CN113225368B (zh) | 一种区块链交易方法、装置、电子设备及存储介质 | |
CN111258808B (zh) | 数据自动化管理的方法、装置、设备和介质 | |
CN108984660A (zh) | 一种MySQL数据库主从同步数据去重方法 | |
CN112598520A (zh) | 交易管理的方法、装置、电子设备以及存储介质 | |
CN106790536A (zh) | 基于事务和QoS的组合Web服务选择方法 | |
CN107040564A (zh) | 云存储的数据同步方法、数据同步服务器及云存储系统 | |
US11249824B2 (en) | Balancing a recurring task between multiple worker processes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |