国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種緩存方法及裝置的制造方法_3

      文檔序號:9687553閱讀:來源:國知局
      務(wù)在所述服務(wù)器中的最新版本更新至所述緩存池。
      [0077]上述方法,前置線程在將服務(wù)器的服務(wù)更新至緩存池之后,給該服務(wù)設(shè)置一個服務(wù)失效時間,例如5S,10S等等,然后給服務(wù)失效時間進行倒計時。當(dāng)檢測到緩存池中有對應(yīng)的服務(wù)失效時間小于或等于預(yù)先設(shè)定的值的服務(wù)時,例如預(yù)先設(shè)定的值可以是1S或者0.5S等,當(dāng)服務(wù)失效時間已經(jīng)到達預(yù)先設(shè)定的值,表明該服務(wù)快要失效了,因而此時需要對該服務(wù)進行更新。首先判斷計數(shù)器KEY對應(yīng)的狀態(tài)是空閑還是占用,若是占用,表明當(dāng)前有前置線程在做其它服務(wù)的更新,則可以使用該前置線程對即將失效的服務(wù)進行更新,若是空閑,則表明當(dāng)前沒有前置線程,則將線程隊列第一個線程設(shè)置為前置線程,并通過執(zhí)行該前置線程將確定的服務(wù)在服務(wù)器中的最新版本更新至緩存池。因此該方法通過對緩存池的服務(wù)設(shè)置服務(wù)失效時間,因而可以保證在緩存池的服務(wù)即將失效時,可以進行自動更新,將服務(wù)器中的該服務(wù)的最新版本更新至緩存池,保證客戶端請求到的服務(wù)是最新版本。
      [0078]另外,由于線程隊列中的線程所需要的請求的服務(wù)可以是相同的,也可以是不同的,針對線程隊列中請求不同服務(wù)的情形,可以通過設(shè)置多個服務(wù)緩存線程池來實現(xiàn)并發(fā)請求服務(wù),從而提高系統(tǒng)效率。
      [0079]可選地,選取線程隊列中的一個未執(zhí)行的線程,從緩存池中獲取所述線程需要的服務(wù)之前,還包括:
      [0080]將所述線程隊列中的線程分配到與線程需要的服務(wù)的類型對應(yīng)的服務(wù)緩存線程池中;
      [0081]針對每一個服務(wù)緩存線程池,選取所述服務(wù)緩存線程池中的一個線程,從所述緩存池中獲取所述線程需要的服務(wù);
      [0082]如果無法從所述緩存池中獲取所述線程需要的服務(wù),則將所述線程設(shè)置為前置線程,通過執(zhí)行所述前置線程從所述服務(wù)器中請求需要的服務(wù),并將所述服務(wù)更新至所述緩存池,并返回選選取所述服務(wù)緩存線程池中的一個線程的步驟。
      [0083]上述方法,根據(jù)線程隊列中線程請求的服務(wù)類型,設(shè)置有多個服務(wù)緩存線程池,每個服務(wù)緩存線程池對應(yīng)一種服務(wù)的請求線程,例如有4個服務(wù)緩存線程池分別為話費查詢服務(wù)緩存線程池A,積分查詢服務(wù)緩存線程池B,電子券查詢服務(wù)緩存線程池C,賬單查詢服務(wù)緩存線程池D,如圖2所示,為本申請實施例提供的線程并發(fā)請求服務(wù)示意圖。對于線程隊列中的每個線程,則可以分別轉(zhuǎn)發(fā)至對應(yīng)的服務(wù)緩存線程池,例如線程隊列中的需要請求話費查詢服務(wù)的線程,則轉(zhuǎn)發(fā)至話費查詢服務(wù)緩存線程池A,線程隊列中的需要請求積分查詢服務(wù)的線程,則轉(zhuǎn)發(fā)至積分查詢服務(wù)緩存線程池B,線程隊列中的需要請求電子券查詢服務(wù)的線程,則轉(zhuǎn)發(fā)至電子券查詢服務(wù)緩存線程池C,線程隊列中的需要請求賬單查詢服務(wù)的線程,則轉(zhuǎn)發(fā)至賬單查詢服務(wù)緩存線程池D。其中,對于轉(zhuǎn)發(fā)的方式在實際應(yīng)用中可以根據(jù)需要而定,例如本申請實施例以API(Applicat1n Programming Interface,應(yīng)用程序編程接口)Facet微服務(wù)接口進行轉(zhuǎn)發(fā)為例進行說明,所有來自分布式客戶端的請求線程都要先經(jīng)過API Facet微服務(wù)接口,然后路由這些請求線程到對應(yīng)的服務(wù)緩存線程池中,然后對于每一個服務(wù)緩存線程池,都設(shè)置成每次只有一個前置線程可以去服務(wù)器請求服務(wù),并更新至服務(wù)緩存線程池,以便該服務(wù)緩存線程池中的其它線程可以從緩存池中獲取到相應(yīng)的服務(wù)。該方法通過設(shè)置多個服務(wù)緩存線程池提供不同的服務(wù),并且多個服務(wù)緩存線程池之間可以并發(fā)執(zhí)行,從而實現(xiàn)并發(fā)執(zhí)行多個服務(wù)請求,提高了處理的效率。
      [0084]另外,本申請實施例還可以提供另外一種并發(fā)方式,如圖3所示,為本申請實施例提供的線程并發(fā)請求服務(wù)示意圖。針對每一個服務(wù)緩存線程池,都對應(yīng)一個服務(wù)緩存池,因此話費查詢服務(wù)緩存池線程A中的線程可以到話費查詢緩存池A中去請求相應(yīng)的服務(wù),如果沒有,則通過前置線程到服務(wù)器中請求服務(wù)并更新至話費查詢緩存池A;積分查詢服務(wù)緩存池線程B中的線程可以到積分查詢緩存池B中去請求相應(yīng)的服務(wù),如果沒有,則通過前置線程到服務(wù)器中請求服務(wù)并更新至積分查詢緩存池B;電子券查詢服務(wù)緩存池線程C中的線程可以到電子券查詢緩存池A中去請求相應(yīng)的服務(wù),如果沒有,則通過前置線程到服務(wù)器中請求服務(wù)并更新至電子券查詢緩存池C;賬單查詢服務(wù)緩存池線程D中的線程可以到賬單查詢緩存池D中去請求相應(yīng)的服務(wù),如果沒有,則通過前置線程到服務(wù)器中請求服務(wù)并更新至賬單查詢緩存池D。因而通過為每個服務(wù)緩存線程池設(shè)置一個緩存池,可以更有針對性緩存相應(yīng)的服務(wù),提高了系統(tǒng)的處理速度。
      [0085]下面對本申請實施例提供的緩存方法做詳細描述。如圖4所示,為本申請實施例提供的緩存方法詳細流程圖,其中,以圖2中的緩存方式為例進行說明。
      [0086]步驟401、獲取線程隊列中的一個線程,通過APIFacet微服務(wù)接口轉(zhuǎn)發(fā)至對應(yīng)的服務(wù)緩存線程池;
      [0087]步驟402、針對每個服務(wù)緩存線程池中的一個線程,從緩存池中獲取需要的服務(wù);
      [0088]步驟403、若從緩存池中獲取需要的服務(wù)失敗,則將該線程設(shè)置為前置線程;
      [0089]步驟404、調(diào)用前置線程到服務(wù)器獲取需要的服務(wù),并將該服務(wù)更新至緩存池。
      [0090]基于相同的技術(shù)構(gòu)思,本申請實施例還提供一種緩存裝置。本申請實施例提供的緩存裝置如圖5所示。
      [0091]第一獲取單元501,用于選取線程隊列中的一個未執(zhí)行的線程,從緩存池中獲取所述線程需要的服務(wù);
      [0092]第二獲取單元502,用于如果無法從所述緩存池中獲取所述線程需要的服務(wù),則將所述線程設(shè)置為前置線程,通過執(zhí)行所述前置線程從所述服務(wù)器中請求需要的服務(wù),并將所述服務(wù)更新至所述緩存池,并返回選取線程隊列中的一個未執(zhí)行的線程的步驟。
      [0093]可選地,所述第二獲取單元502,還用于:
      [0094]選取線程隊列中的第一個線程,所述線程設(shè)置為前置線程,通過執(zhí)行所述前置線程從所述服務(wù)器中請求需要的服務(wù),并將所述服務(wù)更新至所述緩存池,并返回選取線程隊列中的一個未執(zhí)行的線程的步驟。
      [0095]可選地,所述第二獲取單元502,還用于:
      [0096]若確定計數(shù)器KEY對應(yīng)的狀態(tài)為空閑,則將所述計數(shù)器KEY對應(yīng)的狀態(tài)設(shè)置為占用,所述計數(shù)器KEY用于指示是否已經(jīng)有線程被設(shè)置為前置線程;
      [0097]獲取所述線程的類型標(biāo)識,將所述線程的類型標(biāo)識對應(yīng)的類型修改為前置線程。
      [0098]可選地,所述第二獲取單元502,還用于:
      [0099]將數(shù)據(jù)緩存KEY對應(yīng)的狀態(tài)修改為已更新;
      [0100]獲取所述線程的類型標(biāo)識,將所述線程的類型標(biāo)識對應(yīng)的類型修改為普通線程;[0101 ]將所述計數(shù)器KEY對應(yīng)的狀態(tài)修改為空閑。
      [0102 ] 可選地,所述裝置還包括更新單元503,具體用于:
      [0103]若確定所述緩存池中有對應(yīng)的服務(wù)失效時間小于或等于預(yù)先設(shè)定的值的服務(wù),則判斷所述計數(shù)器KEY對應(yīng)的狀態(tài)是否為占用;
      [0104]若所述計數(shù)器KEY對應(yīng)的狀態(tài)為占用,則通過執(zhí)行當(dāng)前的前置線程將確定的服務(wù)在所述服務(wù)器中的最新版本更新至所述緩存池;
      [0105]若所述計數(shù)器KEY對應(yīng)的狀態(tài)為空閑,則將所述線程隊列第一個線程設(shè)置為前置線程,并通過執(zhí)行該前置線程將確定的服務(wù)在所述服務(wù)器中的最新版本更新至所述緩存池。
      [0106]可選地,所述第二獲取單元502,還用于:
      [0107]將所述線程隊列中的線程分配到與線程需要的服務(wù)的類型對應(yīng)的服務(wù)緩存線程池中;
      [0108]針對每一個服務(wù)緩存線程池,選取所述服務(wù)緩存線程池中的一個線程,從所述緩存池中獲取所述線程需要的服務(wù);
      [0109]如果無法從所述緩存池中獲取所述線程需要的服務(wù),則將所述線程設(shè)置為前置線程,
      當(dāng)前第3頁1 2 3 4 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1