一種數據同步的方法、伺服器以及數據同步系統與流程
2023-05-01 16:12:56 3

本發明涉及通信領域,尤其涉及一種數據同步的方法、伺服器以及數據同步系統。
背景技術:
考勤管理系統是一套管理公司員工的上下班考勤記錄等相關情況的管理系統。是考勤軟體與考勤硬體結合的產品,一般為人力資源部門(human resource software,HR)部門使用,掌握並管理企業的員工出勤動態,是企業管理中最基本的管理。
現今,一般公司每個月到發工資前都會進行考勤統計。傳統的考勤機數據導出/導入的方法有:1.通過U盤導出或導入;2.考勤機通過網絡或串口等連上電腦,通過電腦上的軟體導出或導入;3.公司架設一個伺服器,當設備上有數據更新時,主動上傳到伺服器;當有需要時再人為地導入另外的機子。
傳統的考勤機數據的導出或導入的方法存在以下問題:1.需要人為幹預,效率低;2.設備間的數據共享,實時性差;3.擴展難,適合小規模設備間的數據共享。4.如果伺服器與考勤機處於不同區域網。則需要為伺服器申請公網訪問的地址,或者使用第三方伺服器平臺,會增加開銷。
技術實現要素:
本發明實施例提供了一種數據同步的方法、伺服器以及數據同步系統,用於當第一考勤機的數據發生更新時,更新的數據可同步到第二考勤機。
本發明實施例第一方面提供一種同步的方法,其特徵在於,該方法應用於數據同步系統,該數據同步系統包括伺服器、第一考勤機和第二考勤機,該方法可以包括:當該第一考勤機的數據發生更新時,該伺服器接收該第一考勤機發送的更新數據;該伺服器將該更新數據更新到雲端資料庫中;該伺服器根據該更新數據確定待同步的數據,以使得在線的第二考勤機從該伺服器獲取該待同步的數據,實現該第二考勤機與該第一考勤機的數據同步。
在本發明實施例中,用於當第一考勤機的數據發生更新時,更新的數據可同步到第二考勤機,實現考勤數據的更新與同步。
可選的,在本發明的一些實施例中,
該更新數據可以包括操作標識,該伺服器將該更新數據更新到雲端資料庫中,包括:該伺服器根據該操作標識對該雲端資料庫的數據進行增加、修改或刪除操作。
可選的,在本發明的一些實施例中,該方法還可以包括:
該伺服器接收該第二考勤機發送的第一確認信息,該第一確認信息用於確認該第二考勤機與該第一考勤機數據同步成功;
該伺服器刪除該待同步的數據。
可選的,在本發明的一些實施例中,該方法還可以包括:
若該伺服器在預置閾值時長內,未接收第三考勤機發送的確認信息,則該伺服器記錄該第三考勤機未同步的信息,並刪除該待同步的數據,該第三考勤機為當前未在線的第二考勤機;
當該第三考勤機顯示在線時,該伺服器根據該第三考勤機未同步的信息,向該第三考勤機發送初始化信息,該初始化信息用於指示該第三考勤機清空本地數據,重新同步該雲端資料庫的數據;
該伺服器接收該第三考勤機發送的第二確認信息,該第二確認信息用於確認該第三考勤機與該雲端資料庫數據同步成功。
本發明實施例第二方面提供一種伺服器,該伺服器應用於數據同步系統,該數據同步系統包括伺服器、第一考勤機和第二考勤機,該伺服器可以包括:
接收模塊,用於當該第一考勤機的數據發生更新時,接收該第一考勤機發送的更新數據;
更新模塊,用於將該接收模塊接收的更新數據更新到雲端資料庫中;
第一確定模塊,用於根據該更新數據確定待同步的數據,以使得在線的第二考勤機從該伺服器獲取該待同步的數據,實現該第二考勤機與該第一考勤機的數據同步。
可選的,在本發明的一些實施例中,該更新數據可以包括操作標識,
該更新模塊,具體用於根據該操作標識對該雲端資料庫的數據進行增加、修改或刪除操作。
可選的,在本發明的一些實施例中,該伺服器還可以包括:
該接收模塊,還用於接收該第二考勤機發送的第一確認信息,該第一確認信息用於確認該第二考勤機與該第一考勤機數據同步成功;
刪除模塊,用於刪除該待同步的數據。
可選的,在本發明的一些實施例中,該伺服器還可以包括:
記錄模塊,用於若該伺服器在預置閾值時長內,未接收第三考勤機發送的確認信息,則該記錄模塊記錄該第三考勤機未同步的信息,並刪除該待同步的數據,該第三考勤機為當前未在線的第二考勤機;
發送模塊,用於當該第三考勤機顯示在線時,該發送模塊根據該第三考勤機未同步的信息,向該第三考勤機發送初始化信息,該初始化信息用於指示該第三考勤機清空本地數據,重新同步該雲端資料庫的數據;
該接收模塊,還用於接收該第三考勤機發送的第二確認信息,該第二確認信息用於確認該第三考勤機與該雲端資料庫數據同步成功。
本發明實施例第三方面提供一種數據同步系統,該數據同步系統可以包括:伺服器、第一考勤機和第二考勤機;
該第一考勤機用於當數據發生更新時,向該伺服器發送更新數據;
該伺服器用於接收該第一考勤機發送的更新數據;將該更新數據更新到雲端資料庫中;根據該更新數據確定待同步的數據,以使得在線的第二考勤機從該伺服器獲取該待同步的數據,實現該第二考勤機與該第一考勤機的數據同步。
可選的,在本發明的一些實施例中,該更新數據可以包括操作標識,
該伺服器具體用於根據該操作標識對該雲端資料庫的數據進行增加、修改或刪除操作。
可選的,在本發明的一些實施例中,
該第二考勤機用於在線時,從該伺服器中獲取該待同步的數據;向該伺服器發送第一確認信息,該第一確認信息用於確認該第二考勤機與該第一考勤機數據同步成功;
該伺服器用於接收該第二考勤機發送的第一確認信息,該第一確認信息用於確認該第二考勤機與該第一考勤機數據同步成功;刪除該待同步的數據。
可選的,在本發明的一些實施例中,
該伺服器還用於若該伺服器在預置閾值時長內,未接收第三考勤機發送的確認信息,則該伺服器記錄該第三考勤機未同步的信息,並刪除該待同步的數據,該第三考勤機為當前未在線的第二考勤機;當該第三考勤機顯示在線時,該伺服器根據該第三考勤機未同步的信息,向該第三考勤機發送初始化信息,該初始化信息用於指示該第三考勤機清空本地數據,重新同步該雲端資料庫的數據;該伺服器接收該第三考勤機發送的第二確認信息,該第二確認信息用於確認該第三考勤機與該雲端資料庫數據同步成功。
從以上技術方案可以看出,本發明實施例具有以下優點:
在本發明實施例中,當第一考勤機有數據更新時,會先上傳到伺服器,伺服器先對應的更新雲端資料庫的數據,再確定待同步的數據,以使得在線的第二考勤機從伺服器獲取所述待同步的數據,實現第二考勤機與第一考勤機的數據同步。
附圖說明
為了更清楚地說明本發明實施例技術方案,下面將對實施例和現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其它的附圖。
圖1為本發明實施例中提供的數據同步系統的結構示意圖;
圖2為本發明實施例中提供的RabbitMQ通信結構示意圖;
圖3為本發明實施例中提供的Storm工作的流程示意圖;
圖4為本發明實施例中提供的Supervisor工作的流程示意圖;
圖5為本發明實施例中提供的方法實施例的一個示意圖;
圖6為本發明實施例中提供的伺服器實施例的一個示意圖;
圖7為本發明實施例中提供的伺服器實施例的另一個示意圖;
圖8為本發明實施例中提供的伺服器實施例的另一個示意圖;
圖9為本發明實施例中提供的伺服器數據同步系統的一個示意圖。
具體實施方式
本發明實施例提供了一種數據同步方法、伺服器以及數據同步系統,用於當第一考勤機的數據發生更新時,更新的的數據可同步到第二考勤機。
為了使本技術領域的人員更好地理解本發明方案,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分的實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都應當屬於本發明保護的範圍。
在現有技術中,每個公司基本上都使用考勤機進行考勤記錄,一般考勤機的考勤數據的導出/導入是需要人為的通過U盤或者連接到電腦上進行,或者,公司架設一個伺服器,當設備上有數據更新時,主動上傳到伺服器,當有需要時再人為地導入另外的考勤機信息。這樣就造成了在數據同步中需要人為幹涉,效率低;而且設備間的數據共享時,實時性也比較差。
在本發明技術方案中,應用於數據同步系統,所述數據同步系統包括伺服器、第一考勤機和第二考勤機,每個考勤機與伺服器已建立連接關係。請參閱圖1所示,是本發明實施例的系統架構圖。當第一考勤機的考勤數據發生更新時,第一考勤機將更新數據向伺服器發送,伺服器在雲端資料庫也做對應的數據更新之後,再確定待同步的數據,即雲端資料庫更新的數據,第二考勤機在線時,從所述伺服器中獲取同步數據實現所述第二考勤機與所述第一考勤機的數據同步。需要說明的是,這裡的第一考勤機不是特指某一個考勤機,可以是一個,也可以是多個,第二考勤機也是同樣的,可以是一個,也可以是多個。其中,在圖1所示虛線的第二考勤機可視為未在線的考勤機,在本發明下述的內容中將未在線的第二考勤機以第三考勤機命名來進行說明。
下面對本發明技術方案中所用到的相關技術先做一下簡要的說明。需要說明的是,在本發明技術方案中不僅僅局限於以下所提供的相關技術,其他適合本發明技術方案的技術也同樣適用。
1、消息隊列(RabbitMQ)
RabbitMQ是一個基於消息隊列的通信中間件。使用消息隊列進行通信的機制是異步的通信方式,通信單位為一個消息。消息的發送方和接收方之間不必保持直接的連接(比如TCP/IP連接)。發送方將消息發送出去後,消息會先到達一個緩存隊列。此時如果發送方掉線了,接收方依然可以收到消息。這個隊列是先進先出的,當接收方在線時,會按消息的先後到達順序從隊列讀取消息並處理。
RabbitMQ基本的通信結構如圖2所示。每個接收方在伺服器上都有一個消息緩存隊列,每個隊列綁定一個密鑰Key(隊列間的Key可以相同)。交換機(Exchange)負責從發送方接收消息並轉發給相應的隊列。
2、Storm分布式流式計算
Storm有兩種工作模式:本地模式和分布模式。本地模式中,Storm完全運行在一臺計算機的進程中,用線程模擬各個工作節點。在分布模式中,Storm運作在一個計算機集群中。
Storm是一種實時的分布式流式計算框架。Storm框架有兩種節點:Nimbus和Worker。請參閱圖3所示,為Storm的流程示意圖。Nimbus是控制節點,在一個Storm集群中有且僅有一個,負責分配任務及監控任務是否失敗。Worker是工作節點,執行具體的業務邏輯。每個Worker都配有一個Supervisor及若干個任務進程。Supervisor負責接受Nimbus分配的任務,啟動和停止屬於自己管理的任務進程。Nimbus和Supervisor之間的協作通過Apache的開源分布式服務Zookeeper進行協調。
Supervisor管理的任務進程運行在兩種組件上:Spout和Bolt。請參閱圖4所示,為Supervisor管理的流程示意圖。Spout是數據流的源頭,從數據源(可以是某個隊列或者其它)讀取數據,打包成一個個Tuple(任務節點間通信的單位)發給Bolt。Bolt從Tuple中提取出本節點邏輯需要的數據,處理完後,繼續把數據打包到Tuple傳給下一節點。
下面對本發明實施例中的方法實施例進行說明,如圖5所示,本發明實施例中數據同步的方法的一個實施例,包括:
501、當第一考勤機的數據發生更新時,伺服器接收第一考勤機發送的更新數據;
在本發明實施例中,當第一考勤機的數據發生更新時,該伺服器會接收第一考勤機發送的更新數據。在數據同步系統中,當考勤機上新登記一個員工的信息或者員工打卡時,或者,在網頁上或者手機上修改員工資料或者考勤信息時,考勤機將這些更新數據發送到伺服器中,實際上是發送到雲伺服器中的RabbitMQ。
需要說明的是,由於考勤機的性能有限,為了避免更新數據過於頻繁的網絡發送,在考勤機上的更新數據會先按既定的語法保存在一個操作operation_log的表裡,考勤機的管理員有一個登錄雲伺服器的帳號,在考勤機上用對應帳號登錄後,考勤機將與相應的公司及所屬區域(如果有劃分區別的話)通過設備序列號(SN,Serial number)建立聯繫。當考勤機在線時,會按既定的間隔(比如10秒)掃描一次operation_log表,如果有更新數據,就讀取出來打包發送到名為device_to_cloud,類型為Direct的Exchange裡。名為device_to_cloud的Exchange綁定了一個隊列,更新數據都轉發到該隊列中。Storm中名為RabbitMQ的Spout會從該隊列中讀取消息,發送給業務處理拓撲中的Bolt。需要說明的是,交換機的類型和命名不作限定。
502、伺服器將更新數據更新到雲端資料庫中;
在本發明實施例中,伺服器根據接收到的更新數據更新到雲端資料庫中。具體的,更新數據可包括操作標識,即伺服器根據操作標識對雲端資料庫的數據進行增加、修改或刪除操作。操作標識指示雲端資料庫的更新操作具體是增加、修改或刪除等其他操作,具體不作限定。
應理解,這裡的操作標識可以是一個操作指令,指示伺服器對雲端資料庫的數據進行相應的操作,也可以是其他形式的說明。這個操作標識還可以包括具體的考勤機的網際網路協議地址(Internet Protocol,IP),指示具體是哪個第一考勤機的數據發生更新。
503、伺服器根據更新數據確定待同步的數據,以使得在線的第二考勤機從伺服器獲取待同步的數據,實現第二考勤機與第一考勤機的數據同步;
在本發明實施例中,伺服器根據更新數據確定待同步的數據,以使得在線的第二考勤機從伺服器獲取待同步的數據,實現第二考勤機與第一考勤機的數據同步。
需要說明的是,雲端資料庫更新數據時,會觸發資料庫操作監聽器,查詢出所有相關考勤機的SN信息,把雲端資料庫的更新數據及考勤機SN封裝為待同步的數據,發送到雲端資料庫的RabbitMQ中,即與第二考勤機綁定的名為SN_sync的接收隊列中,這樣當第二考勤機在線時可以及時同步到數據。
504、伺服器接收第二考勤機發送的第一確認信息,第一確認信息用於確認第二考勤機與第一考勤機數據同步成功;
在本發明實施例中,當第二考勤機的數據同步成功之後,向伺服器發送第一確認信息,伺服器接收第二考勤機發送的第一確認信息,第一確認信息用於確認第二考勤機與第一考勤機數據同步成功。
505、伺服器刪除待同步的數據。
在本發明實施例中,伺服器接收第二考勤機發送的第一確認信息之後,確定第二考勤機的數據與第一考勤機數據同步成功,伺服器刪除待同步的數據。
需要說明的是,步驟504、步驟505為可選的步驟。在本發明實施例中所用到的工作表的命名,交換機的命名,隊列的命名都是舉的實例而已。在實際應用中,也可以作其他命名。
在本發明實施例中,當第一考勤機有數據更新時,將更新數據向伺服器發送,伺服器接收更新數據,同時更新雲端資料庫的數據,再確定待同步的數據,以使得在線的第二考勤機從伺服器獲取待同步的數據,實現第二考勤機與第一考勤機的數據同步。充分利用RabbitMQ和Storm的優勢,為生物識別智能辦公雲平臺提供實時的考勤數據收集與同步;部署在雲伺服器上,方便數據的擴展;可以支持大規模的考勤設備管理,並且企業接入雲平臺即能使用,方便管理。
可選的,在本發明的一些實施例中,
若伺服器在預置閾值時長內,未接收第三考勤機發送的確認信息,則伺服器記錄第三考勤機未同步的信息,並刪除待同步的數據,第三考勤機為當前未在線的第二考勤機;
當第三考勤機顯示在線時,伺服器根據第三考勤機未同步的信息,向第三考勤機發送初始化信息,初始化信息用於指示第三考勤機清空本地數據,重新同步雲端資料庫的數據;
伺服器接收第三考勤機發送的第二確認信息,第二確認信息用於確認第三考勤機與雲端資料庫數據同步成功。
需要說明的是,如果在第二考勤機中有考勤機掉線了,考勤機的接收隊列設有超時時間,當超過一定時間後,接收隊列中待同步的數據將被清空。這時如果考勤機又連上雲伺服器,伺服器會發送一個狀態告知考勤機,未與伺服器保持同步,需要重新初始化,這時考勤機將把operation_log表裡的數據發送到伺服器,然後清空本機的數據重新同步雲端的數據。在初始化過程中,沒有涉及數據的增刪改操作,因此不會觸發數據操作監聽器,Storm的業務拓撲的最後一個Bolt業務負責將伺服器下發的數據打包成RabbitMQ發送給設備綁定的名為SN_config隊列。如果掉線時間沒有超過隊列的超時時間,則會按上文提到的方法進行同步。
下面對本發明實施例中的伺服器進行說明,如圖6所示,本發明實施例中的伺服器,包括:
接收模塊601,用於當第一考勤機的數據發生更新時,接收第一考勤機發送的更新數據;
更新模塊602,用於將接收模塊接收的更新數據更新到雲端資料庫中;
第一確定模塊603,用於根據更新數據確定待同步的數據,以使得在線的第二考勤機從伺服器獲取待同步的數據,實現第二考勤機與第一考勤機的數據同步。
可選的,在本發明的一些實施例中,更新數據包括操作標識,
更新模塊602,具體用於根據操作標識對雲端資料庫的數據進行增加、修改或刪除操作。
可選的,在本發明的一些實施例中,如圖7所示,伺服器還包括:
接收模塊601,還用於接收第二考勤機發送的第一確認信息,第一確認信息用於確認第二考勤機與第一考勤機數據同步成功;
刪除模塊604,用於刪除待同步的數據。
可選的,在本發明的一些實施例中,如圖8所示,伺服器還包括:
記錄模塊605,用於若伺服器在預置閾值時長內,未接收第三考勤機發送的確認信息,則記錄模塊記錄第三考勤機未同步的信息,並刪除待同步的數據,第三考勤機為當前未在線的第二考勤機;
發送模塊606,用於當第三考勤機顯示在線時,發送模塊根據第三考勤機未同步的信息,向第三考勤機發送初始化信息,初始化信息用於指示第三考勤機清空本地數據,重新同步雲端資料庫的數據;
接收模塊601,還用於接收第三考勤機發送的第二確認信息,第二確認信息用於確認第三考勤機與雲端資料庫數據同步成功。
如圖9所示,為本發明提供的一種數據同步系統,包括:伺服器901、第一考勤機902和第二考勤機903,其中,在圖9所示的架構圖中,虛線指示的第二考勤機就是本發明所提及的第三考勤機;
第一考勤機902用於當數據發生更新時,向伺服器發送更新數據;
伺服器901用於接收第一考勤機發送的更新數據;將更新數據更新到雲端資料庫中;根據更新數據確定待同步的數據,以使得在線的第二考勤機903從伺服器獲取待同步的數據,實現第二考勤機與第一考勤機的數據同步。
可選的,在本發明的一些實施例中,更新數據包括操作標識,
伺服器901具體用於根據操作標識對雲端資料庫的數據進行增加、修改或刪除操作。
可選的,在本發明的一些實施例中,
第二考勤機903用於在線時,從伺服器中獲取待同步的數據;向伺服器發送第一確認信息,第一確認信息用於確認第二考勤機與第一考勤機數據同步成功;
伺服器901用於接收第二考勤機發送的第一確認信息,第一確認信息用於確認第二考勤機與第一考勤機數據同步成功;刪除待同步的數據。
可選的,在本發明的一些實施例中,
伺服器901還用於若伺服器在預置閾值時長內,未接收第三考勤機發送的確認信息,則伺服器記錄第三考勤機未同步的信息,並刪除待同步的數據,第三考勤機為當前未在線的第二考勤機;當第三考勤機顯示在線時,伺服器根據第三考勤機未同步的信息,向第三考勤機發送初始化信息,初始化信息用於指示第三考勤機清空本地數據,重新同步雲端資料庫的數據;伺服器接收第三考勤機發送的第二確認信息,第二確認信息用於確認第三考勤機與雲端資料庫數據同步成功。
本發明實施例還提供了一種計算機存儲介質,用於儲存為上述圖5、圖6、圖7或圖8所述的伺服器所用的計算機軟體指令,其包含用於執行上述方法實施例所設計的程序。通過執行存儲的程序,可以實現第一考勤機與第二考勤機的數據同步。
所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統,裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
在本申請所提供的幾個實施例中,應該理解到,所揭露的系統,裝置和方法,可以通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以採用硬體的形式實現,也可以採用軟體功能單元的形式實現。
所述集成的單元如果以軟體功能單元的形式實現並作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中。基於這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟體產品的形式體現出來,該計算機軟體產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,伺服器,或者網絡設備等)執行本發明各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:U盤、移動硬碟、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光碟等各種可以存儲程序代碼的介質。
以上所述,以上實施例僅用以說明本發明的技術方案,而非對其限制;儘管參照前述實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特徵進行等同替換;而這些修改或者替換,並不使相應技術方案的本質脫離本發明各實施例技術方案的精神和範圍。