主頁 > 後端開發 > java在斷網時操作時使用的是本地的資料庫,連網時更新到云端資料庫

java在斷網時操作時使用的是本地的資料庫,連網時更新到云端資料庫

2020-09-15 15:32:05 後端開發

最近遇到了一個奇葩的需求,用springboot做的一個javaweb專案后面老板說要在斷網時也能使用,并且還要將資料傳到云端的資料庫里做,不知道各位大佬有什么辦法可以解決一下,最好使用java實作能夠帶原始碼,解決后私聊我可微信支付寶謝謝!

uj5u.com熱心網友回復:

這個需求做不了

uj5u.com熱心網友回復:

先說你們這個專案是不是要部署,部署的服務器如果出現斷網,那你這個請求根本就到達不了你的服務你又怎么在本地更新呢,你本地啟動專案,自己訪問自己可以存到本地資料庫,那就是將你的資料庫和云端資料庫做主從,算是滿足了你的這個需求,但是脫離你的電腦都不能實作。說白了就是只能給自己用。

uj5u.com熱心網友回復:

參考 2 樓 qq_41622282 的回復:
先說你們這個專案是不是要部署,部署的服務器如果出現斷網,那你這個請求根本就到達不了你的服務你又怎么在本地更新呢,你本地啟動專案,自己訪問自己可以存到本地資料庫,那就是將你的資料庫和云端資料庫做主從,算是滿足了你的這個需求,但是脫離你的電腦都不能實作。說白了就是只能給自己用。

專案是要部署的,我嘗試過做主從關鍵是主在本地從在云端導致無法實作,就是說所有的操作都在本地的資料庫中但是我云端上也必須要有同樣的資料

uj5u.com熱心網友回復:

參考 1 樓 qq_41622282 的回復:
這個需求做不了

我也覺得,可是沒辦法,人家是老板

uj5u.com熱心網友回復:

老板也可以給他說的,你讓比你高的人去和他說,找主管,你問主管說你給我提供方案或者有先例 我就可以搞,

uj5u.com熱心網友回復:

參考 5 樓 qq_41622282 的回復:
老板也可以給他說的,你讓比你高的人去和他說,找主管,你問主管說你給我提供方案或者有先例 我就可以搞,

這才是最難的,老板不懂技術,又是小公司就那么幾個人,每次提需求的時候想一出是一出,給個別人的的系統效果圖就讓你開始做

uj5u.com熱心網友回復:

參考 3 樓 java程式員0.0 的回復:
Quote: 參考 2 樓 qq_41622282 的回復:

先說你們這個專案是不是要部署,部署的服務器如果出現斷網,那你這個請求根本就到達不了你的服務你又怎么在本地更新呢,你本地啟動專案,自己訪問自己可以存到本地資料庫,那就是將你的資料庫和云端資料庫做主從,算是滿足了你的這個需求,但是脫離你的電腦都不能實作。說白了就是只能給自己用。

專案是要部署的,我嘗試過做主從關鍵是主在本地從在云端導致無法實作,就是說所有的操作都在本地的資料庫中但是我云端上也必須要有同樣的資料
你說的這個主在本地,從在云端沒有實作不太對啊,主從是沒有限制必須要在一個服務器上,你可以看一下是不是沒有配置好

uj5u.com熱心網友回復:

參考 6 樓 java程式員0.0 的回復:
Quote: 參考 5 樓 qq_41622282 的回復:

老板也可以給他說的,你讓比你高的人去和他說,找主管,你問主管說你給我提供方案或者有先例 我就可以搞,

這才是最難的,老板不懂技術,又是小公司就那么幾個人,每次提需求的時候想一出是一出,給個別人的的系統效果圖就讓你開始做

不合理的需求你不懟回去然后搞的時候也搞不出來,到時候他會問你怎么沒有搞出來,你說不可能實作他會問你早干嘛去了。還是考慮一下懟回去吧,你問問同事,都覺得這個需求做不了你就有底氣了

uj5u.com熱心網友回復:

參考 8 樓 qq_41622282 的回復:
Quote: 參考 6 樓 java程式員0.0 的回復:

Quote: 參考 5 樓 qq_41622282 的回復:

老板也可以給他說的,你讓比你高的人去和他說,找主管,你問主管說你給我提供方案或者有先例 我就可以搞,

這才是最難的,老板不懂技術,又是小公司就那么幾個人,每次提需求的時候想一出是一出,給個別人的的系統效果圖就讓你開始做

不合理的需求你不懟回去然后搞的時候也搞不出來,到時候他會問你怎么沒有搞出來,你說不可能實作他會問你早干嘛去了。還是考慮一下懟回去吧,你問問同事,都覺得這個需求做不了你就有底氣了

當時提出來的時候我就說過這個需要完成不了,硬是要我做什么斷網本地等聯網了在傳到服務器,還讓我去問問別人

uj5u.com熱心網友回復:

問過了,別人也說做不了,

uj5u.com熱心網友回復:

沒有做不了的東西... 你們是前端是什么  App 還是手機端h5?

uj5u.com熱心網友回復:

如果你是手機端應用   說白了  就是離線操作而已.

uj5u.com熱心網友回復:

如果應用也要部署到外網,那為啥不把庫和應用放同個內網?
如果應用不部署到外網,那么為啥還要用云庫?
如果說云庫只是為了備份資料,那你本地(主)跟云庫(從)做個主從,滿足不了么?

uj5u.com熱心網友回復:

參考 10 樓 qq_41622282 的回復:
問過了,別人也說做不了,

uj5u.com熱心網友回復:

參考 12 樓 weixin_43869905 的回復:
如果你是手機端應用   說白了  就是離線操作而已.

是一個javaweb

uj5u.com熱心網友回復:

前后端分離沒有 /

uj5u.com熱心網友回復:

參考 13 樓 ITjavaman 的回復:
如果應用也要部署到外網,那為啥不把庫和應用放同個內網?
如果應用不部署到外網,那么為啥還要用云庫?
如果說云庫只是為了備份資料,那你本地(主)跟云庫(從)做個主從,滿足不了么?

應用在每個店里都要使用,而且每個店不可能在同一內網,關鍵是總部也要查詢的到每個店的操作資料所以才需要將庫放在云端上,主從試過了本地為主的話不行因為云端上無法連接到本地資料庫這樣的話本地為主就無法實作,如果云端為主的話那就無法實作斷網連接了

uj5u.com熱心網友回復:

參考 17 樓 weixin_43869905 的回復:
前后端分離沒有 /

沒有,前端用的h5

uj5u.com熱心網友回復:

參考 7 樓 qq_41622282 的回復:
Quote: 參考 3 樓 java程式員0.0 的回復:

Quote: 參考 2 樓 qq_41622282 的回復:

先說你們這個專案是不是要部署,部署的服務器如果出現斷網,那你這個請求根本就到達不了你的服務你又怎么在本地更新呢,你本地啟動專案,自己訪問自己可以存到本地資料庫,那就是將你的資料庫和云端資料庫做主從,算是滿足了你的這個需求,但是脫離你的電腦都不能實作。說白了就是只能給自己用。

專案是要部署的,我嘗試過做主從關鍵是主在本地從在云端導致無法實作,就是說所有的操作都在本地的資料庫中但是我云端上也必須要有同樣的資料
你說的這個主在本地,從在云端沒有實作不太對啊,主從是沒有限制必須要在一個服務器上,你可以看一下是不是沒有配置好

是可以不在同一服務器的,但是有個必要條件就是本地跟云端都能夠相互連接到另一端的資料庫,因為我這邊是要以本地為主的話,云端就必須要能連接我本地資料庫否則是無法實作的,關鍵是本地的資料庫是只有在內網才能連接,不行云端會給你個外網進行連接

uj5u.com熱心網友回復:

參考 18 樓 java程式員0.0 的回復:
Quote: 參考 13 樓 ITjavaman 的回復:

如果應用也要部署到外網,那為啥不把庫和應用放同個內網?
如果應用不部署到外網,那么為啥還要用云庫?
如果說云庫只是為了備份資料,那你本地(主)跟云庫(從)做個主從,滿足不了么?

應用在每個店里都要使用,而且每個店不可能在同一內網,關鍵是總部也要查詢的到每個店的操作資料所以才需要將庫放在云端上,主從試過了本地為主的話不行因為云端上無法連接到本地資料庫這樣的話本地為主就無法實作,如果云端為主的話那就無法實作斷網連接了

(1)本地做個內網穿透映射出去,
(2)要不然寫個執行緒(點),用來同步資料到云端用(也可以云端部署個同步資料的服務,各個店把資料發過去同步)

uj5u.com熱心網友回復:

參考 21 樓 ITjavaman 的回復:
Quote: 參考 18 樓 java程式員0.0 的回復:

Quote: 參考 13 樓 ITjavaman 的回復:

如果應用也要部署到外網,那為啥不把庫和應用放同個內網?
如果應用不部署到外網,那么為啥還要用云庫?
如果說云庫只是為了備份資料,那你本地(主)跟云庫(從)做個主從,滿足不了么?

應用在每個店里都要使用,而且每個店不可能在同一內網,關鍵是總部也要查詢的到每個店的操作資料所以才需要將庫放在云端上,主從試過了本地為主的話不行因為云端上無法連接到本地資料庫這樣的話本地為主就無法實作,如果云端為主的話那就無法實作斷網連接了

(1)本地做個內網穿透映射出去,
(2)要不然寫個執行緒(點),用來同步資料到云端用(也可以云端部署個同步資料的服務,各個店把資料發過去同步)

用內網穿透的話會不會有有安全問題呢,之前也有人建議我使用內網穿透說是會將資訊全都呈現出去,
寫執行緒點是一個什么樣的概念,或者說是怎么樣的一個流程能說明一下嗎

uj5u.com熱心網友回復:

JavaWeb 專案,那就是BS架構!
客戶端是用PC機的瀏覽器訪問的嗎,如果是的話,可以說是無解的,瀏覽器沒有權限直接訪問本地資源,想把資料存在本地,基本上只能用 cookie 了。但要把 cookie 打造成具備資料庫那樣的功能,還要進行本地和服務器上的資料同步,以便斷網時能繼續使用…… 想想都非常恐怖。不是做不到,而是開發成本太高,即使開發出來可能出現的問題也非常多,并且這個需求卻又不是很有必要!


另外,話說回來,老板天馬行空的想法,對企業來說是應該要有一點的,否則沒有創新精神,企業總是走別人原來的路子,成不了大事!
老板提出想法,樓主直接否掉也不太好!特別是如果當著很多人的面直接說 no 時,老板會折了面子,在員工面前威信有損;另一方面,老板可能也看樓主年輕,認為樓主經驗不夠,讓你再好好找找資料問問別人,這也屬于一種老成的做法,如果樓主是個有上十年作業經驗,做過很多成功專案的人,估計他直接就聽進去了。
所以,建議樓主把需求的可行性分析做好,準備好你的分析依據,丁是丁卯是卯的分析清楚,相信你老板會采納的。

uj5u.com熱心網友回復:

這需求怕是做不了的,我估計老板都沒想明白.

這種就相當于單機游戲云存檔,客戶端必須擁有完整的資料,但web并不太適合這么玩吧.

uj5u.com熱心網友回復:

學習學到 學習學到 學習學到

uj5u.com熱心網友回復:

參考 22 樓 java程式員0.0 的回復:
用內網穿透的話會不會有有安全問題呢,之前也有人建議我使用內網穿透說是會將資訊全都呈現出去,
寫執行緒點是一個什么樣的概念,或者說是怎么樣的一個流程能說明一下嗎

安全問題取決于你使用的第三方內網穿透平臺了
寫個執行緒大概意思就是,開啟一個獨立的執行緒定時掃描你保存修改到本地的資料,然后更新云資料庫,簡單說就是先寫本地庫,然后定時執行緒掃描并寫到云庫
我括號里面說的方式也差不多這意思,一個是直接直連云資料庫過去改,另一個是先請求云服務再由改服務區寫入云資料庫

uj5u.com熱心網友回復:

參考 26 樓 小灰狼 的回復:
JavaWeb 專案,那就是BS架構!
客戶端是用PC機的瀏覽器訪問的嗎,如果是的話,可以說是無解的,瀏覽器沒有權限直接訪問本地資源,想把資料存在本地,基本上只能用 cookie 了。但要把 cookie 打造成具備資料庫那樣的功能,還要進行本地和服務器上的資料同步,以便斷網時能繼續使用…… 想想都非常恐怖。不是做不到,而是開發成本太高,即使開發出來可能出現的問題也非常多,并且這個需求卻又不是很有必要!


另外,話說回來,老板天馬行空的想法,對企業來說是應該要有一點的,否則沒有創新精神,企業總是走別人原來的路子,成不了大事!
老板提出想法,樓主直接否掉也不太好!特別是如果當著很多人的面直接說 no 時,老板會折了面子,在員工面前威信有損;另一方面,老板可能也看樓主年輕,認為樓主經驗不夠,讓你再好好找找資料問問別人,這也屬于一種老成的做法,如果樓主是個有上十年作業經驗,做過很多成功專案的人,估計他直接就聽進去了。
所以,建議樓主把需求的可行性分析做好,準備好你的分析依據,丁是丁卯是卯的分析清楚,相信你老板會采納的。
就是這么個情況,太難了,瀏覽器訪問做這個東西天啊

uj5u.com熱心網友回復:

路過。。。。。

uj5u.com熱心網友回復:

參考 29 樓 ITjavaman 的回復:
Quote: 參考 22 樓 java程式員0.0 的回復:

用內網穿透的話會不會有有安全問題呢,之前也有人建議我使用內網穿透說是會將資訊全都呈現出去,
寫執行緒點是一個什么樣的概念,或者說是怎么樣的一個流程能說明一下嗎

安全問題取決于你使用的第三方內網穿透平臺了
寫個執行緒大概意思就是,開啟一個獨立的執行緒定時掃描你保存修改到本地的資料,然后更新云資料庫,簡單說就是先寫本地庫,然后定時執行緒掃描并寫到云庫
我括號里面說的方式也差不多這意思,一個是直接直連云資料庫過去改,另一個是先請求云服務再由改服務區寫入云資料庫


這位兄臺
樓主說他的是 JavaWeb 專案,如果客戶端是在瀏覽器上跑的話,瀏覽器提供那么多功能給你開發了嗎!
寫執行緒,保存到本地資料,什么的都是不被瀏覽器允許的吧!
還有更新云資料,還要考慮跨域問題!哦不對,樓主的老板要求的是斷網情況下的事,如果可以訪問云資料庫,那不就要求沒斷網嗎!既然沒斷網,還考慮這些干嘛,原來咋樣還咋樣不就完事了!

uj5u.com熱心網友回復:

資料需要一致,設計好同步機制就好了,總部查詢下面的店鋪,每個店鋪只需要管理好自己的資料就行,可以分為兩步,一是每筆交易按店鋪按規則生成唯一id,考慮離線,建議使用雪花演算法,按一定規則劃分,方便后期做統計。二是實作資料同步邏輯,需要考慮兩個問題,一是網路例外處理,重試,可以參考rocketmq的重試機制,二是資料一致性保證,可以設計簡單的對賬邏輯,批次對賬。僅供參考,不確定是都對業務理解有偏差

uj5u.com熱心網友回復:

我在想能不能不管是聯網或斷網的情況下都連接本地的資料庫,等網通了在上傳,這樣就先解決的斷網跑程式,這樣的話就剩下了聯網是怎么將資料同步到云端上,各位有什么解決的方案嗎

uj5u.com熱心網友回復:

參考 33 樓 Farmermark993 的回復:
資料需要一致,設計好同步機制就好了,總部查詢下面的店鋪,每個店鋪只需要管理好自己的資料就行,可以分為兩步,一是每筆交易按店鋪按規則生成唯一id,考慮離線,建議使用雪花演算法,按一定規則劃分,方便后期做統計。二是實作資料同步邏輯,需要考慮兩個問題,一是網路例外處理,重試,可以參考rocketmq的重試機制,二是資料一致性保證,可以設計簡單的對賬邏輯,批次對賬。僅供參考,不確定是都對業務理解有偏差

現在的問題就是斷網后本地的資料跟云端的無法達成相同

uj5u.com熱心網友回復:

參考 35 樓 java程式員0.0 的回復:
Quote: 參考 33 樓 Farmermark993 的回復:

資料需要一致,設計好同步機制就好了,總部查詢下面的店鋪,每個店鋪只需要管理好自己的資料就行,可以分為兩步,一是每筆交易按店鋪按規則生成唯一id,考慮離線,建議使用雪花演算法,按一定規則劃分,方便后期做統計。二是實作資料同步邏輯,需要考慮兩個問題,一是網路例外處理,重試,可以參考rocketmq的重試機制,二是資料一致性保證,可以設計簡單的對賬邏輯,批次對賬。僅供參考,不確定是都對業務理解有偏差

現在的問題就是斷網后本地的資料跟云端的無法達成相同
本地肯定要獨立部署或內嵌資料庫,斷網才能使用,聯網再同步資料

uj5u.com熱心網友回復:

推薦大家一個靠譜的論文檢測平臺。重復的部分有詳細出處以及具體修改意見,能直接在文章上做修改,全部改完一鍵下載就搞定了。他們現在正在做畢業季活動, 贈送很多免費字數,可以說是十分劃算了!地址是:https://www.paperpass.com/

uj5u.com熱心網友回復:

其實這個是資料庫同步功能。。
所有操作都在本地進行,然后資料庫資料在有網的情況下,同步到云。。
這個需求,你需要問的是資料庫解決方案。

uj5u.com熱心網友回復:

同時開發本地端跟服務端,各自連接自己的庫
本地記錄要同步的資料,等有網時打包推送到服務端服務端接收后保存到云資料庫

uj5u.com熱心網友回復:

你問問老板,他家不聯網能打開網頁嗎。

uj5u.com熱心網友回復:

學到了,謝謝大佬

uj5u.com熱心網友回復:

就是資料庫的同步功能

uj5u.com熱心網友回復:

參考 32 樓 小灰狼 的回復:
Quote: 參考 29 樓 ITjavaman 的回復:

Quote: 參考 22 樓 java程式員0.0 的回復:

用內網穿透的話會不會有有安全問題呢,之前也有人建議我使用內網穿透說是會將資訊全都呈現出去,
寫執行緒點是一個什么樣的概念,或者說是怎么樣的一個流程能說明一下嗎

安全問題取決于你使用的第三方內網穿透平臺了
寫個執行緒大概意思就是,開啟一個獨立的執行緒定時掃描你保存修改到本地的資料,然后更新云資料庫,簡單說就是先寫本地庫,然后定時執行緒掃描并寫到云庫
我括號里面說的方式也差不多這意思,一個是直接直連云資料庫過去改,另一個是先請求云服務再由改服務區寫入云資料庫


這位兄臺
樓主說他的是 JavaWeb 專案,如果客戶端是在瀏覽器上跑的話,瀏覽器提供那么多功能給你開發了嗎!
寫執行緒,保存到本地資料,什么的都是不被瀏覽器允許的吧!
還有更新云資料,還要考慮跨域問題!哦不對,樓主的老板要求的是斷網情況下的事,如果可以訪問云資料庫,那不就要求沒斷網嗎!既然沒斷網,還考慮這些干嘛,原來咋樣還咋樣不就完事了!

這位兄臺,難道我就不能在客戶端服務端部署一個服務么??
而且人家場景大概說明了是店鋪
????
有問題???

uj5u.com熱心網友回復:

重構吧,C/S架構滿足

uj5u.com熱心網友回復:

請先厘清需求

根據我的經驗, 老板想做的應該是, 斷腕以后依然能使用系統

這種需求不是沒有, 常見的超市的收銀系統都會有這種離線銷售的概念, 這個是有歷史背景的: 0幾年的時候那時候網路設施還沒現在那么好, 斷網概率比較高

另外, 提一下, 離線并沒有那么好做, 開發成本非常高

uj5u.com熱心網友回復:

參考 43 樓 ITjavaman 的回復:
這位兄臺,難道我就不能在客戶端服務端部署一個服務么??
而且人家場景大概說明了是店鋪
????
有問題???


OK!
It's a good idea!

但是如此一來,作業量會蠻大的,復雜度也高了很多,客戶端的部署、版本發布、版本更新也很麻煩!
剛開始聽樓主說的,以為這是老板腦袋一拍提出來的需求。不過,既然是門店的專案,這個功能還真不能少!

按兄臺的思路,本人感覺客戶端的Web服務應盡量簡單,以減少客戶端服務的版本更新次數。客戶端瀏覽器全部直接訪問本地服務,然后由本地服務進行轉發,即所謂的透明傳輸。如果轉發并且重試失敗,認為斷網,轉為進行本地邏輯處理。必須確定有些服務斷網后不能處理,比如門店無貨,需要從其他門店調貨,斷網后不可能知道其它哪些門店的庫存情況。

uj5u.com熱心網友回復:

哎。。
客戶端做一個web服務,不管有網沒網,先寫到本地資料庫里。然后再做一個計劃任務,負責更新和同步就行了

uj5u.com熱心網友回復:

參考現在的手游模式吧,還有要考慮的資料校驗真實完整性

uj5u.com熱心網友回復:

感謝分享!!

uj5u.com熱心網友回復:

參考 49 樓 78 的回復:
哎。。
客戶端做一個web服務,不管有網沒網,先寫到本地資料庫里。然后再做一個計劃任務,負責更新和同步就行了

就是這么個理念,現在就是不知道該怎么實作這個本地資料庫更新到云端

uj5u.com熱心網友回復:

參考 38 樓 liaosnet 的回復:
其實這個是資料庫同步功能。。
所有操作都在本地進行,然后資料庫資料在有網的情況下,同步到云。。
這個需求,你需要問的是資料庫解決方案。

是的不知道大哥有什么解決的方案沒有

uj5u.com熱心網友回復:

參考 45 樓 不知有熊 的回復:
請先厘清需求

根據我的經驗, 老板想做的應該是, 斷腕以后依然能使用系統

這種需求不是沒有, 常見的超市的收銀系統都會有這種離線銷售的概念, 這個是有歷史背景的: 0幾年的時候那時候網路設施還沒現在那么好, 斷網概率比較高

另外, 提一下, 離線并沒有那么好做, 開發成本非常高

是的,關鍵是一般能實作本地大部分都是不需要傳輸資料到云端的

uj5u.com熱心網友回復:

參考 39 樓 dmankill 的回復:
同時開發本地端跟服務端,各自連接自己的庫
本地記錄要同步的資料,等有網時打包推送到服務端服務端接收后保存到云資料庫
如果門店的操作全都是自己的本地資料,這種沒有問題,如果用到了云資料庫的資訊,那就麻煩了。比如簡單的抽獎,如果是限制所有門店抽獎人數100人,這時候如果一個門店斷網了,他如何拿到剩余獲獎人數呢?如果沒有這樣的場景,寫執行緒同步任務也夠麻煩的,斷網的那一刻就得記錄系統作了哪些操作了,推薦你記錄斷網時間和恢復網的時間點,記錄這段時間的 bindlog,然后發送到云資料庫執行。但是呢,如果同時有1個以上的門店斷網,你就不能保證這多段 bindlog 執行后會不會產生臟資料咯。總之,奇怪的需求。

uj5u.com熱心網友回復:

參考 56 樓 RockeyCui 的回復:
Quote: 參考 39 樓 dmankill 的回復:

同時開發本地端跟服務端,各自連接自己的庫
本地記錄要同步的資料,等有網時打包推送到服務端服務端接收后保存到云資料庫
如果門店的操作全都是自己的本地資料,這種沒有問題,如果用到了云資料庫的資訊,那就麻煩了。比如簡單的抽獎,如果是限制所有門店抽獎人數100人,這時候如果一個門店斷網了,他如何拿到剩余獲獎人數呢?如果沒有這樣的場景,寫執行緒同步任務也夠麻煩的,斷網的那一刻就得記錄系統作了哪些操作了,推薦你記錄斷網時間和恢復網的時間點,記錄這段時間的 bindlog,然后發送到云資料庫執行。但是呢,如果同時有1個以上的門店斷網,你就不能保證這多段 bindlog 執行后會不會產生臟資料咯。總之,奇怪的需求。

怎么說的話還是沒辦法解決這個問題,哪怕是萬分之一的可能性真的出現了一個以上的門店斷網那樣的話光是資料就夠頭疼的了

uj5u.com熱心網友回復:

參考 40 樓 唐明黎 的回復:
你問問老板,他家不聯網能打開網頁嗎。

這個例子個老板舉過了沒用,人家就是要這效果

uj5u.com熱心網友回復:

參考 36 樓 Farmermark993 的回復:
Quote: 參考 35 樓 java程式員0.0 的回復:

Quote: 參考 33 樓 Farmermark993 的回復:

資料需要一致,設計好同步機制就好了,總部查詢下面的店鋪,每個店鋪只需要管理好自己的資料就行,可以分為兩步,一是每筆交易按店鋪按規則生成唯一id,考慮離線,建議使用雪花演算法,按一定規則劃分,方便后期做統計。二是實作資料同步邏輯,需要考慮兩個問題,一是網路例外處理,重試,可以參考rocketmq的重試機制,二是資料一致性保證,可以設計簡單的對賬邏輯,批次對賬。僅供參考,不確定是都對業務理解有偏差

現在的問題就是斷網后本地的資料跟云端的無法達成相同
本地肯定要獨立部署或內嵌資料庫,斷網才能使用,聯網再同步資料

關鍵就是聯網后該怎么做才能保持資料的同步,而且門店不止有一個,四五個門店在上傳一個的時候還不能出現臟資料

uj5u.com熱心網友回復:

參考 59 樓 java程式員0.0 的回復:
Quote: 參考 36 樓 Farmermark993 的回復:

Quote: 參考 35 樓 java程式員0.0 的回復:

Quote: 參考 33 樓 Farmermark993 的回復:

資料需要一致,設計好同步機制就好了,總部查詢下面的店鋪,每個店鋪只需要管理好自己的資料就行,可以分為兩步,一是每筆交易按店鋪按規則生成唯一id,考慮離線,建議使用雪花演算法,按一定規則劃分,方便后期做統計。二是實作資料同步邏輯,需要考慮兩個問題,一是網路例外處理,重試,可以參考rocketmq的重試機制,二是資料一致性保證,可以設計簡單的對賬邏輯,批次對賬。僅供參考,不確定是都對業務理解有偏差

現在的問題就是斷網后本地的資料跟云端的無法達成相同
本地肯定要獨立部署或內嵌資料庫,斷網才能使用,聯網再同步資料

關鍵就是聯網后該怎么做才能保持資料的同步,而且門店不止有一個,四五個門店在上傳一個的時候還不能出現臟資料
每筆資料的唯一性,用分布式id生成唯一推薦雪花演算法,或者自定義規則,通過唯一id來設計總部接收介面的冪等,這樣就可以保證不會有臟資料了,還可以通過資料對賬機制,保證資料最終一致

uj5u.com熱心網友回復:

怎么做不了?很簡單的一個事,你虛擬一個資料庫連接層,每過一秒向運端庫發送一個心跳,判斷是否連通,直正連接時根據剛才那個判斷就行了。如果還解決不了加q394767204

uj5u.com熱心網友回復:

參考 59 樓 java程式員0.0 的回復:
Quote: 參考 36 樓 Farmermark993 的回復:

Quote: 參考 35 樓 java程式員0.0 的回復:

Quote: 參考 33 樓 Farmermark993 的回復:

資料需要一致,設計好同步機制就好了,總部查詢下面的店鋪,每個店鋪只需要管理好自己的資料就行,可以分為兩步,一是每筆交易按店鋪按規則生成唯一id,考慮離線,建議使用雪花演算法,按一定規則劃分,方便后期做統計。二是實作資料同步邏輯,需要考慮兩個問題,一是網路例外處理,重試,可以參考rocketmq的重試機制,二是資料一致性保證,可以設計簡單的對賬邏輯,批次對賬。僅供參考,不確定是都對業務理解有偏差

現在的問題就是斷網后本地的資料跟云端的無法達成相同
本地肯定要獨立部署或內嵌資料庫,斷網才能使用,聯網再同步資料

關鍵就是聯網后該怎么做才能保持資料的同步,而且門店不止有一個,四五個門店在上傳一個的時候還不能出現臟資料



參考 53 樓 java程式員0.0 的回復:
Quote: 參考 49 樓 78 的回復:

哎。。
客戶端做一個web服務,不管有網沒網,先寫到本地資料庫里。然后再做一個計劃任務,負責更新和同步就行了

就是這么個理念,現在就是不知道該怎么實作這個本地資料庫更新到云端

我原來做設備的,當設備在沒有網路的情況下本地記錄采集到的資訊等有網后再批量提交到服務器,服務器進行決議與保存

uj5u.com熱心網友回復:

參考 62 樓 dmankill 的回復:
Quote: 參考 59 樓 java程式員0.0 的回復:

Quote: 參考 36 樓 Farmermark993 的回復:

Quote: 參考 35 樓 java程式員0.0 的回復:

Quote: 參考 33 樓 Farmermark993 的回復:

資料需要一致,設計好同步機制就好了,總部查詢下面的店鋪,每個店鋪只需要管理好自己的資料就行,可以分為兩步,一是每筆交易按店鋪按規則生成唯一id,考慮離線,建議使用雪花演算法,按一定規則劃分,方便后期做統計。二是實作資料同步邏輯,需要考慮兩個問題,一是網路例外處理,重試,可以參考rocketmq的重試機制,二是資料一致性保證,可以設計簡單的對賬邏輯,批次對賬。僅供參考,不確定是都對業務理解有偏差

現在的問題就是斷網后本地的資料跟云端的無法達成相同
本地肯定要獨立部署或內嵌資料庫,斷網才能使用,聯網再同步資料

關鍵就是聯網后該怎么做才能保持資料的同步,而且門店不止有一個,四五個門店在上傳一個的時候還不能出現臟資料



參考 53 樓 java程式員0.0 的回復:
Quote: 參考 49 樓 78 的回復:

哎。。
客戶端做一個web服務,不管有網沒網,先寫到本地資料庫里。然后再做一個計劃任務,負責更新和同步就行了

就是這么個理念,現在就是不知道該怎么實作這個本地資料庫更新到云端

我原來做設備的,當設備在沒有網路的情況下本地記錄采集到的資訊等有網后再批量提交到服務器,服務器進行決議與保存

不知道當時是用的是嗎技術做的?

uj5u.com熱心網友回復:

參考 61 樓 ocean_aa 的回復:
怎么做不了?很簡單的一個事,你虛擬一個資料庫連接層,每過一秒向運端庫發送一個心跳,判斷是否連通,直正連接時根據剛才那個判斷就行了。如果還解決不了加q394767204

在斷網的程序中所操作的資料保存在那,該怎么上傳到云端

uj5u.com熱心網友回復:

參考 63 樓 java程式員0.0 的回復:
Quote: 參考 62 樓 dmankill 的回復:

Quote: 參考 59 樓 java程式員0.0 的回復:

Quote: 參考 36 樓 Farmermark993 的回復:

Quote: 參考 35 樓 java程式員0.0 的回復:

Quote: 參考 33 樓 Farmermark993 的回復:

資料需要一致,設計好同步機制就好了,總部查詢下面的店鋪,每個店鋪只需要管理好自己的資料就行,可以分為兩步,一是每筆交易按店鋪按規則生成唯一id,考慮離線,建議使用雪花演算法,按一定規則劃分,方便后期做統計。二是實作資料同步邏輯,需要考慮兩個問題,一是網路例外處理,重試,可以參考rocketmq的重試機制,二是資料一致性保證,可以設計簡單的對賬邏輯,批次對賬。僅供參考,不確定是都對業務理解有偏差

現在的問題就是斷網后本地的資料跟云端的無法達成相同
本地肯定要獨立部署或內嵌資料庫,斷網才能使用,聯網再同步資料

關鍵就是聯網后該怎么做才能保持資料的同步,而且門店不止有一個,四五個門店在上傳一個的時候還不能出現臟資料



參考 53 樓 java程式員0.0 的回復:
Quote: 參考 49 樓 78 的回復:

哎。。
客戶端做一個web服務,不管有網沒網,先寫到本地資料庫里。然后再做一個計劃任務,負責更新和同步就行了

就是這么個理念,現在就是不知道該怎么實作這個本地資料庫更新到云端

我原來做設備的,當設備在沒有網路的情況下本地記錄采集到的資訊等有網后再批量提交到服務器,服務器進行決議與保存

不知道當時是用的是嗎技術做的?

你要記錄你發送失敗的資料很簡單吧,如果發送服務器失敗就把發送失敗的資料記錄到本地資料庫,后臺開個job檢查網路狀態,當與云端是聯通的狀態就把存盤在本地的發送失敗過的資料批量發送過去
如果碰到是抽獎這種按照實際情況來做比如強制要求門店聯網

uj5u.com熱心網友回復:

參考 55 樓 java程式員0.0 的回復:
Quote: 參考 45 樓 不知有熊 的回復:

請先厘清需求

根據我的經驗, 老板想做的應該是, 斷腕以后依然能使用系統

這種需求不是沒有, 常見的超市的收銀系統都會有這種離線銷售的概念, 這個是有歷史背景的: 0幾年的時候那時候網路設施還沒現在那么好, 斷網概率比較高

另外, 提一下, 離線并沒有那么好做, 開發成本非常高

是的,關鍵是一般能實作本地大部分都是不需要傳輸資料到云端的


不一定, 要做權衡, 比如上面的離線銷售就不得不做(銷售完資料是要上傳到服務器的), 因為當時的情況就是斷網概率高, 你不支持離線銷售, 難道讓結賬的客戶等你么

uj5u.com熱心網友回復:

功能上要實作是沒問題的,只是需要考慮實作的成本:
方案1: 業務雙寫,復雜度在于怎么保障到云資料庫的資料不丟失? 同步還是異步? 同步需要實作tx事務,業務是否可以接受?異步方式資料肯定是有gap的
方案2: 單寫本地,定期離線同步,條件觸發切換并追到最新的本地資料,成本在于什么時機觸發同步?離線全量還是增量同步,切換到云資料庫時追加部分資料如何獲得(HA存盤設備/S3...),以及記錄offset斷點

uj5u.com熱心網友回復:

你跟老板說,都特么斷網了,應用都掛了,資料庫在哪還重要么

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/47817.html

標籤:Java EE

上一篇:idea問題,maven idea成功下載了包,可以編譯,執行,就是在方法上按Ctrl鏈接不進相關的源代碼,好像沒有源代碼,救命啊

下一篇:本人初學 java, 但是不知道怎么回事,中文注釋就會報錯,去掉就正常。請問大佬如何解決。

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more