本發(fā)明涉及金融科技領(lǐng)域,尤其涉及微服務(wù)領(lǐng)域,具體是指一種針對(duì)微服務(wù)間實(shí)現(xiàn)行情實(shí)時(shí)數(shù)據(jù)調(diào)用優(yōu)化處理的方法、系統(tǒng)、裝置、處理器及其計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
背景技術(shù):
1、微服務(wù)是指將系統(tǒng)拆分成一組小而自治的服務(wù)的架構(gòu)風(fēng)格。每個(gè)微服務(wù)都獨(dú)立運(yùn)行,并且通過(guò)輕量級(jí)的通信機(jī)制來(lái)相互協(xié)作。市面上越來(lái)越多單體龐大的行情系統(tǒng)朝著微服務(wù)化發(fā)展,如何高效的進(jìn)行微服務(wù)間的行情數(shù)據(jù)調(diào)用成了需要解決的問(wèn)題。
2、證券市場(chǎng)的行情是波動(dòng)的,投資者們關(guān)注股票各不相同,且存在市場(chǎng)不平衡的特點(diǎn),存在市場(chǎng)突發(fā)事件下,投資者對(duì)某些股票數(shù)據(jù)突增關(guān)注的現(xiàn)象,基于微服務(wù)的證券行情系統(tǒng)中的行情數(shù)據(jù)調(diào)用往往存在熱點(diǎn)數(shù)據(jù)的問(wèn)題和高并發(fā)的問(wèn)題。
3、目前的解決方法通常是通過(guò)將熱點(diǎn)股票存在服務(wù)端本地或者redis等緩存組件中設(shè)置永不過(guò)期,但存在的問(wèn)題是證券市場(chǎng)開(kāi)盤(pán)高峰期時(shí),投資者涌入,從而客戶端并發(fā)調(diào)用大量增高,且覆蓋的股票數(shù)據(jù)較多,市場(chǎng)變化莫測(cè),熱點(diǎn)股票不斷變化,導(dǎo)致緩存使用越來(lái)越大。或者是后臺(tái)通過(guò)監(jiān)控緩存使用,在緩存數(shù)據(jù)即將過(guò)期時(shí),異步更新緩存延長(zhǎng)過(guò)期時(shí)間,該方法的缺陷是另外需要一個(gè)后臺(tái)線程更新緩存中的數(shù)據(jù)。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的是克服了上述現(xiàn)有技術(shù)的缺點(diǎn),提供了一種滿足高效、操作簡(jiǎn)便、適用范圍較為廣泛的針對(duì)微服務(wù)間實(shí)現(xiàn)行情實(shí)時(shí)數(shù)據(jù)調(diào)用優(yōu)化處理的方法、系統(tǒng)、裝置、處理器及其計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
2、為了實(shí)現(xiàn)上述目的,本發(fā)明的針對(duì)微服務(wù)間實(shí)現(xiàn)行情實(shí)時(shí)數(shù)據(jù)調(diào)用優(yōu)化處理的方法、系統(tǒng)、裝置、處理器及其計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)如下:
3、該針對(duì)微服務(wù)間實(shí)現(xiàn)行情實(shí)時(shí)數(shù)據(jù)調(diào)用優(yōu)化處理的方法,其主要特點(diǎn)是,所述的方法包括客戶端進(jìn)行行情實(shí)時(shí)數(shù)據(jù)調(diào)用優(yōu)化的步驟和服務(wù)端進(jìn)行行情實(shí)時(shí)數(shù)據(jù)調(diào)用優(yōu)化的步驟,
4、所述的客戶端進(jìn)行行情實(shí)時(shí)數(shù)據(jù)調(diào)用優(yōu)化的步驟,具體包括以下步驟:
5、(1-1)客戶端向服務(wù)端發(fā)起行情數(shù)據(jù)調(diào)用的請(qǐng)求;
6、(1-2)查看該請(qǐng)求在客戶端本地是否存在歷史行情結(jié)果的緩存數(shù)據(jù),獲取緩存結(jié)果數(shù)據(jù)的時(shí)間戳,若無(wú)則獲取時(shí)間戳為0,將其攜帶于請(qǐng)求頭中,將請(qǐng)求發(fā)給服務(wù)端,等待服務(wù)端返回?cái)?shù)據(jù);
7、(1-3)如果服務(wù)端返回?cái)?shù)據(jù)結(jié)果集為非空,則服務(wù)端返回帶有最新數(shù)據(jù),更新本地緩存數(shù)據(jù)以及時(shí)間戳;如果服務(wù)端返回?cái)?shù)據(jù)結(jié)果為空,則服務(wù)端返回未帶有最新數(shù)據(jù),確認(rèn)客戶端緩存中的數(shù)據(jù)為最新,讀取本地緩存數(shù)據(jù);
8、所述的服務(wù)端進(jìn)行行情實(shí)時(shí)數(shù)據(jù)調(diào)用優(yōu)化的步驟,具體包括以下步驟:
9、(2-1)服務(wù)端接收實(shí)時(shí)的數(shù)據(jù)調(diào)用請(qǐng)求;
10、(2-2)進(jìn)行攔截預(yù)處理,對(duì)比請(qǐng)求頭所帶的時(shí)間戳與本地緩存數(shù)據(jù)的時(shí)間戳;
11、(2-3)如果請(qǐng)求頭所帶時(shí)間戳不小于本地緩存數(shù)據(jù)的時(shí)間戳,則確認(rèn)客戶端有最新數(shù)據(jù),服務(wù)端則不繼續(xù)訪問(wèn)數(shù)據(jù),直接返回空數(shù)據(jù)集;如果請(qǐng)求頭所帶時(shí)間戳小于本地緩存數(shù)據(jù)的時(shí)間戳,則執(zhí)行步驟(2-4);
12、(2-4)如果請(qǐng)求頭所帶的時(shí)間戳小于服務(wù)端時(shí)間戳的請(qǐng)求,則服務(wù)端數(shù)據(jù)為最新,需要進(jìn)一步調(diào)用并訪問(wèn)存儲(chǔ)組件的數(shù)據(jù);
13、(2-5)對(duì)相同鍵查詢的請(qǐng)求進(jìn)行合并調(diào)用,對(duì)其中第一個(gè)達(dá)到的請(qǐng)求進(jìn)行數(shù)據(jù)調(diào)用,其他查詢相同鍵的并發(fā)請(qǐng)求阻塞等待第一個(gè)調(diào)用的結(jié)果;
14、(2-6)基于查詢相同鍵的并發(fā)請(qǐng)求,對(duì)第一個(gè)到達(dá)的請(qǐng)求發(fā)起數(shù)據(jù)調(diào)用,訪問(wèn)存儲(chǔ)組件中的新數(shù)據(jù),判斷該過(guò)程是否在規(guī)定時(shí)間內(nèi)獲取到數(shù)據(jù),如果未超時(shí)獲取到數(shù)據(jù),則執(zhí)行步驟(2-7);如果超時(shí),則執(zhí)行步驟(2-8);
15、(2-7)將獲取的最新數(shù)據(jù)更新到本地緩存,并將數(shù)據(jù)結(jié)果返回客戶端;
16、(2-8)再次請(qǐng)求訪問(wèn)存儲(chǔ)組件,并將數(shù)據(jù)結(jié)果返回客戶端。
17、較佳地,所述的方法還包括以下步驟:
18、根據(jù)預(yù)設(shè)的過(guò)期時(shí)間及其緩存容量監(jiān)控刪除客戶端微服務(wù)和服務(wù)端微服務(wù)的本地緩存行情數(shù)據(jù)。
19、較佳地,所述的方法還包括以下步驟:
20、根據(jù)時(shí)間窗口滑動(dòng)的機(jī)制,淘汰服務(wù)端微服務(wù)中的存儲(chǔ)組件中的行情數(shù)據(jù)。
21、較佳地,所述的步驟(1-2)、(2-2)、(2-3)或(2-4)中采用interceptor攔截器,所述的interceptor攔截器包括客戶端攔截器和服務(wù)器攔截器,所述的客戶端攔截器為grpc客戶端在調(diào)用實(shí)際rpc之前調(diào)用的函數(shù);所述的服務(wù)器攔截器為grpc服務(wù)器在到達(dá)實(shí)際rpc方法之前調(diào)用的函數(shù);客戶端的請(qǐng)求被發(fā)送出去之前獲取本地緩存時(shí)間戳,服務(wù)端接收到請(qǐng)求時(shí)優(yōu)先對(duì)請(qǐng)求中的時(shí)間戳與服務(wù)端本地時(shí)間戳進(jìn)行比較。
22、較佳地,所述的步驟具體為:
23、通過(guò)對(duì)客戶端發(fā)送請(qǐng)求的預(yù)處理與服務(wù)端的攔截處理,獲取其時(shí)間戳進(jìn)行比較,對(duì)于客戶端時(shí)間戳不小于服務(wù)端時(shí)間戳的請(qǐng)求,則直接返回,采用客戶端本地緩存數(shù)據(jù)作為結(jié)果;對(duì)于客戶端時(shí)間戳小于服務(wù)端時(shí)間戳的請(qǐng)求,服務(wù)端進(jìn)行數(shù)據(jù)調(diào)用的處理,并對(duì)相同鍵訪問(wèn)的請(qǐng)求進(jìn)行合并調(diào)用。
24、該針對(duì)微服務(wù)間進(jìn)行行情實(shí)時(shí)數(shù)據(jù)調(diào)用優(yōu)化處理的系統(tǒng),其主要特點(diǎn)是,所述的系統(tǒng)包括客戶端,所述的客戶端包括:
25、發(fā)送請(qǐng)求預(yù)處理模塊,用于預(yù)處理請(qǐng)求,將查詢請(qǐng)求在本地緩存是否存在結(jié)果集,如果有結(jié)果集,則獲取其時(shí)間戳;如果沒(méi)有結(jié)果集,則時(shí)間戳賦值為0,并攜帶時(shí)間戳向服務(wù)端發(fā)送數(shù)據(jù)調(diào)用請(qǐng)求;
26、請(qǐng)求返回處理模塊,與所述的發(fā)送請(qǐng)求預(yù)處理模塊相連接,用于接收服務(wù)端返回的數(shù)據(jù)結(jié)果集,根據(jù)是否未空數(shù)據(jù)集,進(jìn)行不同的返回處理;如果返回空數(shù)據(jù),則確認(rèn)客戶端本地緩存中的結(jié)果集為最新數(shù)據(jù);如果返回?cái)?shù)據(jù),則更新客戶端的本地緩存。
27、較佳地,所述的系統(tǒng)還包括服務(wù)端,所述的服務(wù)端包括:
28、請(qǐng)求攔截預(yù)處理模塊,用于接收數(shù)據(jù),且在數(shù)據(jù)真正調(diào)用前進(jìn)行攔截預(yù)處理,比較請(qǐng)求頭所帶時(shí)間戳與服務(wù)端本地緩存時(shí)間戳大小,如果請(qǐng)求頭所帶時(shí)間戳不小于服務(wù)端本地緩存時(shí)間戳,則確認(rèn)客戶端的緩存數(shù)據(jù)為最新,服務(wù)端不需要繼續(xù)調(diào)用,直接返回空數(shù)據(jù);如果請(qǐng)求頭所帶時(shí)間戳小于服務(wù)端本地緩存時(shí)間戳,則請(qǐng)求繼續(xù)調(diào)用;
29、合并調(diào)用處理模塊,與所述的請(qǐng)求攔截預(yù)處理模塊相連接,用于在繼續(xù)調(diào)用的請(qǐng)求中,對(duì)相同鍵查詢的請(qǐng)求進(jìn)行合并調(diào)用,其中第一個(gè)達(dá)到的請(qǐng)求進(jìn)行數(shù)據(jù)調(diào)用,而其他查詢相同鍵的并發(fā)請(qǐng)求阻塞等待第一個(gè)調(diào)用的結(jié)果;
30、調(diào)用優(yōu)先級(jí)處理模塊,與所述的合并調(diào)用處理模塊相連接,用于基于查詢相同鍵的并發(fā)請(qǐng)求,對(duì)第一個(gè)到達(dá)的請(qǐng)求發(fā)起數(shù)據(jù)調(diào)用,并進(jìn)行處理;
31、數(shù)據(jù)訪問(wèn)模塊,與所述的調(diào)用優(yōu)先級(jí)處理模塊相連接,用于訪問(wèn)存儲(chǔ)組件中的數(shù)據(jù);
32、數(shù)據(jù)返回模塊,與所述的數(shù)據(jù)訪問(wèn)模塊相連接,用于返回?cái)?shù)據(jù)結(jié)果,如果在攔截預(yù)處理中返回則返回空數(shù)據(jù);如果在攔截預(yù)處理后返回則返回真實(shí)數(shù)據(jù)結(jié)果。
33、較佳地,所述的客戶端還包括客戶端的緩存淘汰模塊,與所述的請(qǐng)求返回處理模塊相連接,用于淘汰緩存數(shù)據(jù)。
34、較佳地,所述的服務(wù)端還包括服務(wù)端的緩存淘汰模塊,與所述的數(shù)據(jù)返回模塊相連接,用于淘汰緩存數(shù)據(jù)。
35、該用于實(shí)現(xiàn)針對(duì)微服務(wù)間進(jìn)行行情實(shí)時(shí)數(shù)據(jù)調(diào)用優(yōu)化處理的裝置,其主要特點(diǎn)是,所述的裝置包括:
36、處理器,被配置成執(zhí)行計(jì)算機(jī)可執(zhí)行指令;
37、存儲(chǔ)器,存儲(chǔ)一個(gè)或多個(gè)計(jì)算機(jī)可執(zhí)行指令,所述的計(jì)算機(jī)可執(zhí)行指令被所述的處理器執(zhí)行時(shí),實(shí)現(xiàn)上述的針對(duì)微服務(wù)間實(shí)現(xiàn)行情實(shí)時(shí)數(shù)據(jù)調(diào)用優(yōu)化處理的方法的各個(gè)步驟。
38、該用于實(shí)現(xiàn)針對(duì)微服務(wù)間進(jìn)行行情實(shí)時(shí)數(shù)據(jù)調(diào)用優(yōu)化處理的處理器,其主要特點(diǎn)是,所述的處理器被配置成執(zhí)行計(jì)算機(jī)可執(zhí)行指令,所述的計(jì)算機(jī)可執(zhí)行指令被所述的處理器執(zhí)行時(shí),實(shí)現(xiàn)上述的針對(duì)微服務(wù)間實(shí)現(xiàn)行情實(shí)時(shí)數(shù)據(jù)調(diào)用優(yōu)化處理的方法的各個(gè)步驟。
39、該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其主要特點(diǎn)是,其上存儲(chǔ)有計(jì)算機(jī)程序,所述的計(jì)算機(jī)程序可被處理器執(zhí)行以實(shí)現(xiàn)上述的針對(duì)微服務(wù)間實(shí)現(xiàn)行情實(shí)時(shí)數(shù)據(jù)調(diào)用優(yōu)化處理的方法的各個(gè)步驟。
40、采用了本發(fā)明的針對(duì)微服務(wù)間實(shí)現(xiàn)行情實(shí)時(shí)數(shù)據(jù)調(diào)用優(yōu)化處理的方法、系統(tǒng)、裝置、處理器及其計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),解決行情微服務(wù)調(diào)用中,行情數(shù)據(jù)調(diào)用往往存在熱點(diǎn)數(shù)據(jù)的問(wèn)題和高并發(fā)的問(wèn)題,優(yōu)化目前通過(guò)將熱點(diǎn)股票存在服務(wù)端本地或者redis等緩存組件的方法,或者采用緩存監(jiān)控,延長(zhǎng)熱點(diǎn)數(shù)據(jù)的緩存時(shí)間,并通過(guò)另一個(gè)線程更新緩存數(shù)據(jù)的方法,本發(fā)明利用客戶端與服務(wù)端的時(shí)間戳比較,以及合并請(qǐng)求的方法避免熱點(diǎn)股票的高并發(fā)訪問(wèn),和利用行情數(shù)據(jù)調(diào)用的特性,將用戶行為與行情股票數(shù)據(jù)的處理與操作進(jìn)行分離。