CN105786628A - 一种分布式系统线程同步的处理方法 - Google Patents

一种分布式系统线程同步的处理方法 Download PDF

Info

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
Application number
CN201610101313.5A
Other languages
English (en)
Other versions
CN105786628B (zh
Inventor
王召冠
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur General Software Co Ltd
Original Assignee
Inspur General Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur General Software Co Ltd filed Critical Inspur General Software Co Ltd
Priority to CN201610101313.5A priority Critical patent/CN105786628B/zh
Publication of CN105786628A publication Critical patent/CN105786628A/zh
Application granted granted Critical
Publication of CN105786628B publication Critical patent/CN105786628B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/465Distributed object oriented systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message 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获取分布式资源是否已被加锁及加锁者的唯一身份标识:对分布式资源加锁时,会要求指定资源的持有时限,超出该时限值后系统自动释放该资源,以保证系统的健壮性;
无论当前线程是否能够获取分布式资源,都及时释放本地进程资源,以避免影响系统的并发性能。
CN201610101313.5A 2016-02-24 2016-02-24 一种分布式系统线程同步的处理方法 Active CN105786628B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 阿里巴巴集团控股有限公司 一种分布式系统下共享资源的访问方法及分布式系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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