分類
發燒車訊

Springboot中的緩存Cache和CacheManager原理介紹

背景理解

什麼是緩存,為什麼要用緩存

程序運行中,在內存保持一定時間不變的數據就是緩存。簡單到寫一個Map,裏面放着一些key,value數據,就已經是個緩存了

所以緩存並不是什麼高大上的技術,只是個概念,把要多次使用的東西存在一個變量里,時不時取出來使用,就達到了緩存的目的,緩存就是存放數據的容器

那為什麼要用緩存呢,是因為要多次使用。一個程序總有一些數據時可預見被多次使用(預見的準不準就是常說的命中率)

比如一個複雜的計算結果,一次數據庫訪問取得的數據等耗時耗資源的數據就能放入緩存,目的就是為了節省開銷,我們要用有限的資源(CPU,內存,帶寬等等)盡量做最多的事情。

為什麼要用SpringCache(緩存的演變過程)

緩存的思考

如果我們要設計一個緩存,最基本的功能是存和取:

1.能在緩存里存放數據

2.能在緩存里取出數據

可是這不夠呀,比如以下的思考

1.取數據時判斷,數據是否存在,如果不存在是不是要數據庫取

2.如果是過期的內容是不是要更新

3.如果我有多個緩存,一個是我自己設計的HashMap緩存,一個是名聲很大的redis,還有….,那需要個緩存管理器呀

為了讓緩存更好用,更“智能”,越來越多的需求就會被提出來,而緩存就是這樣一步步演變直到SpringCache橫空出世,功能十分強大(說白了就是我們少寫很多代碼)

SpringCache的好處

SpringCache包含兩個頂級接口,Cache(緩存)和CacheManager(緩存管理器),顧名思義,用CacheManager去管理一堆Cache。

最最關鍵的地方:抱緊了Spring的大腿,可以使用註解就能完成數據進入緩存!!

給大家舉個例子,就知道多簡單了

首先,Springboot中會自動加載一個CacheManager(它有默認的實現類),所以只要寫好一個自定義的Cache即可(如果想用系統定義好的或者第三方如RedisCache也行,記得向Spring註冊這個bean即可)

@Component
public class MyCache implements Cache {
  /*
       實現接口方法,一些關於數據set和get的方法
       CacheManager是根據Cache的名字進行管理的
       所以假設這個Cache名為MyCache
  */  
}

然後在得出數據的方法上寫上註釋即可

@Cacheable(value = "MyCache",key = "#id")
public String getNavegationURLs(String id) {
        //一個獲取數據的方法
}

這樣就會在調用這個方法時,會以id為key值,在名為MyCache的Cache容器中查找(註解中value就是緩存名字,不同名字指定使用不同的緩存)

如果沒查到,則執行方法 getNavegationURLs,將返回值存入緩存

如果找到了,就直接將從緩存取值,直接返回,不用執行方法 getNavegationURLs

還有其他方便的Cache註解自行百度,重要的是我們根本不用寫任何關於調用緩存的邏輯代碼,只用關注於緩存自身的邏輯

註解如何起作用的,源碼流程大致了解

為什麼要了解源碼

最直接的原因是因為SpringCache是不支持靈活的緩存時間設置的,所以想了解大概的來龍去脈去實現一個支持緩存過期時間設置和自動更新的類(之後會寫實現博文)。

高大上的原因是想通過這次探索,去了解下Spring對類的管理機制,去接觸下AOP的實現

SpringCache源碼簡單分析

大家從上面例子有沒發現問題,Cache和CacheManager是怎樣做關聯的,其實是Spring掃包實現的

凡是繼承了Cache接口的類,都會被自動注入進CacheManager中,最終存儲於CacheManager的實現類中

 

 接着會生成被@Cacheable(或者其他SpringCache註解修飾過)的代理類,並會將管理它的CacheManager賦值進去

 看這段代碼,就知道如果要設置多個CacheManager,就得在眾多實現類的其中一個加上@Primary,不然會Spring會報錯能選擇的Bean太多而不知道用哪個

 

代理類生成后(包括會根據不同的註解生成信息類CacheOperationMetadata,到時候就會根據這個類的內容進行緩存操作,說白了就是調用我們實現Cache裏面的各種方法)

Springboot底層初始化完成后,進入我們寫的代碼邏輯

如果這時進入了該類的方法,如:

 

 代碼跟進去,你會神奇的發現進入了代理類的intercept方法,怎麼進去的呢~(具體原理看下面3.0)

 這裏面就會根據註解類型,進行緩存的邏輯判斷,然後決定會不會調用我們寫的方法~

 代理類原理介紹(AOP切面之類的都是通過代理哦)

Spring代理分為兩種:

1.JDK原生動態代理,要求被代理的類需要實現接口(通過接口來實現的代理

那麼代理類滿足以下條件:

首先實現一個InvocationHandler,方法調用會被轉發到該類的invoke()方法。 意思是:對代理對象的所有接口方法調用都會轉發到InvocationHandler.invoke()方法,在invoke()方法里我們可以加入任何邏輯,比如修改方法參數,加入日誌功能、安全檢查功能等;之後我們通過某種方式執行真正的方法體  
2.CGLIB動態代理,不要求被代理的類需要實現接口,但是final的方法無法被代理(
通過繼承來實現代理) 那麼代理類滿足以下條件: 實現一個MethodInterceptor,方法調用會被轉發到該類的intercept()方法

具體內容可以參考這篇精品博客:

如果你想自己實現代理類(就是不喜歡用工具包),其實也行啊,輸出符合class規範的二進制字節碼就行啦~~~(認真學習JVM規範吧)

 

至此,該分享的就分享完啦,有什麼問題歡迎留言一起探討~

 

 

 

 

 

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

分類
發燒車訊

esp8266 smartconfig-智能配網分析和使用及注意事項

基本知識:

  樂鑫⾃主研發的 ESP-TOUCH 協議采⽤的是 Smart Config(智能配置)技術,幫助⽤戶將 采⽤ ESP8266EX 和 ESP32 的設備(以下簡稱“設備”)連接⾄ Wi-Fi ⽹絡。⽤戶只需在⼿ 機上進⾏簡單操作即可實現智能配置。整個過程如下圖所示:

   

 由於設備在⼀開始並未連接⾄⽹絡,ESP-TOUCH App ⽆法直接向設備發送信息。通過 ESP-TOUCH 通信協議,具備 Wi-Fi ⽹絡接⼊能⼒的設備(例如智能⼿機)就可以向接 ⼊點 (AP) 發送⼀系列 UDP 包,其中每⼀包的⻓度(即 Length 字段)都按照 ESPTOUCH 通信協議進⾏編碼,SSID 和密碼就包含在 Length 字段中,隨後設備便可以獲 得並解析出所需的信息。數據包結構如圖 1-2 所示:

 

源碼和app:

源碼的路徑如下所示:

源碼路徑:

根據你的所需進行修改或直接安裝,筆者的截圖如下所示:

 

操作步驟:

準備⼀台⽀持 ESP-TOUCH 的設備,開啟配置功能;
將⼿機連接⾄路由器;
打開安裝在⼿機上的 ESP-TOUCH App;
在 App 界⾯輸⼊路由器的 SSID 和密碼(若路由不加密則密碼為空),開始連接。

注意事項:

• 設備與⼿機建⽴鏈路所需的時間和兩者之間的距離有關,若距離很近,僅需數秒即可完成。

• 在開啟設備端 ESP-TOUCH 智能配置功能之前,請確保路由器已經開啟。由於開啟此功能后,設備會先 掃描周圍的 AP 信息,如果路由器沒有開啟,則⽆法獲取周圍的 AP 列表。

• ESP-TOUCH App 端發送序列有超時限制,即如果沒有在規定的時間配置上路由,App 會返回配置失敗 信息(參考 App 源碼)。設備端也會有超時限制,從設備鎖定通道開始計時到獲取 SSID 和密碼信息, 如果達到超時限制但並未獲取到 SSID 和密碼信息,設備會⾃動重新開始⼀次 Smart Config。⽤戶可以通 過 esptouch_set_timeout(uint8 time_s) 或 esp_smartconfig_set_timeout(uint8 time_s) 設置超時時 間。

• Smart Config 過程中設備需要開啟 Sniffer 模式,所以在 ESP8266 上 Station 和 soft-AP 模式都是關閉 的,不要調⽤其他相關 API。ESP32 不受此限制,可以同時開啟 Sniffer 和 Station 模式。

• 配置結束后,發送端獲取設備的 IP,設備端也會返回發送端的 IP,如果⽤戶需要⾃定義發送端和設備端 的信息交互,可以使⽤此 IP 信息進⾏局域⽹通信。 • 如果路由器設置了“AP 隔離”,會出現設備連接路由器成功,但 App 未收到連接成功的提示的現象。

• ⽀持⼿機同時配置多個設備到同⼀路由器上,配置時 App 端選擇接收多個返回結果。

• ESP8266 和 ESP32 不⽀持 5G 和 11AC 模式,因此不⽀持 Smart Config 連接 5G 或 11AC 模式的路由 器。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

分類
發燒車訊

南非八獅遭毒殺 爪及鼻子被割下疑圖製藥

摘錄自2020年1月7日星島日報報導

南非近日有八隻獅子被人非法獵殺,另有仍在母獅體內的胎兒亦因此胎死腹中。部分獅子的腳掌及鼻子亦被人割去,懷疑是用作製作藥物,警方目前仍在調查案件。

事發在西北省斯瓦圖根斯(Swartruggens)附近一個農場,51歲的負責人布洛姆上周五(3日)在場內視察時,發現兩隻雄獅及六隻母獅被獵殺,獅子的爪以及鼻子亦被人割下。其中兩隻母獅各懷有三隻幼獅,但全都胎死腹中。另外,有兩隻幼獅剛在案發前出生,因喝下中毒母獅的奶水而死亡,事發後,該獅子家族僅剩一隻雌性幼獅「Yoda」,由於牠由布洛姆以奶樽餵哺而沒有喝下有毒的奶水,因此逃過一劫。

布洛姆在現場找到四組腳印,警方目前正調查案件,暫無人被捕。在南非,由於獅子及老虎等動物的部分身體部位可製成藥材,因此盜獵事件不時發生。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

分類
發燒車訊

環團舉辦「絕膠」活動 52間商戶參與減廢

摘錄自2020年1月7日星島日報報導

環保團體綠領行動今(7日)午在銅鑼灣記利佐治街舉行《全程「絕膠」日》推廣活動,提醒市民每日實踐「絕膠」生活,減少使用即棄塑膠。綠領行動調查顯示,香港人每星期最少共丟棄4640萬件即棄塑膠產品,廢塑膠問題非常嚴峻。

綠領行動舉辦爲期兩年的「全城絕膠大行動」,呼籲大眾和商戶在日常生活實踐拒絕即棄塑膠,至今成功邀請52間食肆和零售商戶參加行動。

綠領行動推出「絕膠地圖」網頁,所有店鋪已登錄在網頁中,方便市民搜尋及光顧。參加商戶需要做到包括淘汰所有過度包裝產品、拒絕不自攜器皿或餐具買外賣之顧客、提供可重用餐具或器皿,以及不主動派發即棄塑膠予顧客中的兩項,就會獲發「絕膠」店舖標籤。

現時香港每日有2343公噸塑膠棄置在堆填區,比去年上升一成,情況令人擔心,他期望立法會能盡快通過都市固體廢物收費草案,提供經濟誘因,令市民從源頭減廢。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

分類
發燒車訊

特斯拉將於 9 月 29 日對外發表 Model X

特斯拉宣布,將於美國時間 9 月 29 日在加州費利蒙市發佈旗下 SUV 車型 Model X。   費利蒙市是特斯拉汽車工廠所在地,特斯拉屆時可能會公佈 Model X 的價格和車型配置。而 Model X 將於 9 月 30 日開始首批交車,現在訂車的客戶可於明年初交車。   Model X 後車門採鷗翼式設計,充飽電後可行駛里程達 240 英里,靜止加速到時速 60 英里只需 3.8 秒,極速時速 155 英里。由於車身重量比 Model S 要重,因此它的續航里程也有所縮水,單次充電可行駛 230 至 265 英里  

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

分類
發燒車訊

Tesla 不懼挖角,Elon Musk:不合格的員工都去了蘋果

  蘋果公司啟動電動車研發專案後,從汽車廠商、電池製造商挖角了大量員工,包括電動車製造商 Tesla,近日 Tesla CEO Elon Musk 在接受採訪時表示,他並不擔心蘋果挖角工程師和管理人員,被挖角的員工多是被 Tesla 解雇的,如果員工無法承擔在 Tesla 的工作,那可以考慮去蘋果公司。   蘋果公司的電動車專案遭到了許多汽車產業人士的唱衰,Tesla CEO Elon Musk 表示,歡迎蘋果公司加入電動車產業,但研發汽車的難度遠高於智慧手機和手錶,在汽車產業內不可能找到一家像富士康那樣的代工廠,汽車的供應鏈和製造環節更加複雜,對於一家毫無汽車產業背景的公司而言,研發電動汽車不是一件容易的事。   蘋果公司從汽車產業挖角了大量研發人才,不少 Tesla 的員工也跳槽到了蘋果,Elon Musk 對於蘋果的挖角並不擔心,據他透露在公司內部蘋果公司被稱為 Tesla 的墳墓,如果你在 Tesla 幹不下去了,可以考慮去蘋果公司謀個職位。     本文全文授權轉載自《科技新報》——〈〉

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

分類
發燒車訊

上海明年電動車免費牌照可望延續

近年積極在推廣電動車的上海,據該市的新能源汽車推進辦人士透露,明年上海的免費牌照政策可望延續。據業界專家指出,由於上海車牌動輒 9 至 10 萬人民幣,這項政策對電動車發展極有助益。   據解放網報導,上海未來在標誌性的文化場所、學校、醫院等公共場所,將率先推廣公共充電站建設;在公務車、公共交通領域率先應用電動汽車取得突破,提高電動汽車在汽車消費市場的比重,形成「電動汽車+分時租賃」的公共交通新常態。   電動汽車租賃相關的 evcard 分時租賃專案,則以從郊區發展到市中心,今年年底前將會有 500 個充電站建成 。截 至目前,上海新能源汽車免費掛上海車牌的入圍品牌已經有30 多家,總共發放了 3 萬張。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

分類
發燒車訊

2016第七屆廣州國際新能源汽車工業展覽會

時間:2016年6月8-10日

地點:廣州琶洲保利世貿博覽館

主辦單位:廣州中汽國際展覽有限公司

  專業的組織機構——展會是中汽國際展覽有限公司按照“專業化、國際化、品牌化”原則舉辦的新能源汽車及配套設施行業國際品牌盛會。國內外多家單位協辦,既有政府支持,又有行業權威的參與。展會舉行期間,將有商務部及省市領導、業界權威人士蒞臨展會參觀指導並出席開幕剪綵。

  龐大採購團隊——盛會將邀請來自中國、美國、德國、法國、英國、義大利、巴西、墨西哥、西班牙、俄羅斯、瑞典、捷克、匈牙利、中東、日本、韓國、印度、土耳其、新加坡、越南、泰國、臺灣、香港、澳門等國家和地區眾多新能源汽車及配套設施進出口貿易商、代理商、經銷商及國際著名相關採購協會組織率團到會參觀採購。

●  高端論壇——展會將邀請新能源汽車及配套設施行業權威專家,討論中外新能源汽車及配套設施行業最新動態、發展趨勢、分工格局、相關對策等多個熱門議題。就中國新能源汽車及配套設施行業發展現狀及所面臨的問題作深入報告,針對中國新能源汽車及配套設施行業市場行情作研究報告,並對產品開發、技術創新等作細緻的演講。屆時,將安排我們認為在國際新能源汽車及配套設施領域,具有影響力的企業介紹產品概況、最新技術動向等進行講座和交流。擬邀請中國政府高級官員,有關專家、學者,國際著名機構代表,著名新能源汽車及配套設施產品供應商、採購商,中國新能源汽車及配套設施市場企業代表和其他專業觀眾出席,其行業的引導性和權威性令人期待,是中國新能源汽車及配套設施產業發展和國際交流合作的風向標,將是獲取新能源汽車及配套設施行業資訊和把握國際市場的最佳平臺。

※ 展會介紹

在能源匱乏的時代,綠色、節能、環保成為經濟發展的核心主題,新能源汽車具有良好的環保性能和燃料經濟性好、運行成本低等優勢,既可以保護環境,又可以緩解能源的短缺並能調整能源的結構,保障能源的安全。

21世紀是一個面臨能源和環境巨大挑戰的世紀,傳統燃油汽車將向高效低排放的電動汽車及混合動力車方向發展。大力發展新能源汽車是能源與環境的必然要求,而且,中國發展新能源汽車的壓力更為緊迫。根據國家《汽車與新能源汽車產業發展規劃》(2011-2020),將在“十二五”期間重點發展清潔能源汽車,未來十年僅中央財政就投入上千億元用來支持以純電動車、混合動力汽車為代表的節能與新能源汽車的研發與推廣。2014年5月24日上午,國家主席習近平在上海汽車集團考察時強調,發展新能源汽車是我國從汽車大國邁向汽車強國的必由之路,要加大研發力度,認真研究市場,用好用活政策,開發適應各種需求的產品,使之成為一個強勁的增長點。2014年多地出臺補貼政策,國務院發文:2014年9月1日起免征新能源汽車車輛購置稅,各種利好消息層出不窮,可以預見,未來我國新能源汽車必將會迅速發展。

廣州是廣東省會,改革開放前沿城市,中國對外貿易的重要視窗,經濟實力雄厚,市場潛力巨大。廣東是泛珠三角經濟區域的中心,毗鄰港、澳、台,輻射東南亞,海、陸、空交通便利,市場輻射面廣,經濟發達。隨著CEPA的實施,粵、港、澳以及泛珠三角(9+2)區域合作與發展的良性互動,必將給新能源汽車及配套設施產業創造無限美好的發展前景。為順應高速發展的新能源汽車及配套設施行業,廣州中汽國際展覽有限公司聯合行業權威機構定于2016年6月8-10日在廣州琶洲保利世貿博覽館舉辦“2016第七屆廣州國際新能源汽車工業展覽會”(NEA CHINA 2016),展會將深化活動內涵,秉承推動行業發展、為企業服務的宗旨,為商家提供一個拓展業務、技術交流、展示實力、獲取資訊、結交客戶、推廣新產品、尋找合作夥伴的國際商貿平臺。

我們將以“突出品牌、開拓創新、注重實效、強化服務”的辦展宗旨,憑藉獨特的創意,科學的組織管理和卓越的服務,以全新的理念為廣大中外參展商提供一個“高水準、高品味、高品質”的展示交流平臺,為全球新能源汽車及配套設施行業提供更多的合作機會,有力推動中國新能源汽車及配套設施產品全面進入全球採購體系,與世界各國新能源汽車及配套設施產業協調合作、互利共贏、共同發展進步。

※ 展品範圍

純電動車:轎車、大巴、公車、各旅行車、各種純電動特種車(環衛車、電力車、郵政車、小型客貨車、高爾夫車、房車、叉車、搬運車、旅遊觀光車、摩托車、三輪車等);

混合動力車:轎車、大巴、公車、各型旅行車等;

其他能源車:超級電容、燃料電池、氫能、生物燃料、太陽能及氫能源、天然氣等各種新能源、清潔燃料及低排放、環保節能型車等;

零部件:低排放節能型發動機、混合動力發動機及清潔燃料發動機;動力電池與管理系統;整車匯流排與控制系統;電機與電控系統;充電裝置;儲能裝置等;能源管理系統;電力電容器、飛輪、逆變器、電熱泵、電動助力轉向、電動空調、功率模組等;相關材料、工藝、技術;相關檢測、監控、試驗、安全防護裝備;維修、製造設備和工具等;

充電設施:充電站智慧型網路專案規劃及成果展示,加油站擴建充(換)電站、加油充電綜合服務站展示,太陽能、風能互補新能源汽車充電站技術產品,充電站充電機、充電樁、配電設備、變壓器、更換設備、電能、監控系統、有源濾波裝置、配電櫃、電纜、直接充電設備、管理輔助設備、充換電池及電池管理系統、停車場充電設施、智慧監控、充電站供電解決方案、充電站等。

其他:新能源汽車的整車及系統控制設計等。

※ 目標觀眾

主辦單位將重點邀請的目標觀眾包括:
1、商務部、發改委、科技部、工信部、國家環保局等各局、司、中心、所領導;
2、全國各省市主管部門領導、大型企事業、機關單位領導;
3、全國各高校、科研單位、設計院、研究院、協(學)會領導;
4、公交、出租、環衛、郵政等單位負責人;車站、機場、碼頭、房地產、大型物業公司、高爾夫球場、旅遊景點、公園、體育場館、大專院校、度假村等單位負責人;
5、國內外著名生產、代理、經銷商、貿易公司等業內人士參觀、參展、技術交流。

※ 展會日程

報到布展:2016年6月6-7日
展出時間:2016年6月8-10日
撤展時間:2016年6月10日下午

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

分類
發燒車訊

Docker學習(三)-簡單的私有DockerHub搭建

Docker Hub

目前Docker官方維護了一個公共倉庫https://hub.docker.com, 其中已經包括100000+個的鏡像。大部分需求都可以通過在 Docker hub中直接下載鏡像來實現,

註冊登錄

可以在 免費註冊一個Docker賬號。在命令行執行docker login輸入用戶名及密碼來完成在命令行界面登記Docker Hub。你可以通過docker logout退出登錄。

docker login

 

拉取鏡像

可以通過docker search命令來查找官方倉庫中的鏡像,並利用docker pull命令來將它下載到本地。

 

推送鏡像

用戶也可以在登錄后通過docker push命令來將自己的鏡像推送到Docker Hub。

docker pull tomcat

 docker images

修改本地鏡像的名字為賬號名/鏡像名

上傳鏡像到公共倉庫

docker push woxpp/tomcat-test:latest

登錄界面查看

docker pull woxpp/tomcat-test

 

私有倉庫

有時候使用Docker Hub這樣的公共倉庫可能不方便,用戶可以創建一個本地倉庫供私人使用。比如,基於公司內部項目構建的鏡像。
docker-registry是官方提供的工具,可以用於構建私有的鏡像倉庫。

安裝運行docker-registry

可以通過獲取官方registry鏡像來運行。默認情況下,倉庫會被創建在容器的/var/lib/registry目錄下。可以通過-v參數來將鏡像文件存放在本地的指定路徑。

docker run --name registry -d  -p 5000:5000 --restart=always  -v /opt/registry:/var/lib/registry registry
docker ps -a

測試是否成功

使用docker tag將session-web:latest這個鏡像標記為192.168.50.24:5000/session-web:latest格式為docker tag IMAGE:TAG/]REPOSITORY[:TAG]

docker tag docker.io/tomcat 192.168.50.24:5000/tomcat-2:latest

使用docker push上傳標記的鏡像

docker push 192.168.50.24:5000/tomcat-2:latest

驗證上傳的鏡像

 

 

 先刪除已有鏡像,再嘗試從私有倉庫中下載這個鏡像。

docker images
 docker rmi 192.168.50.24:5000/tomcat-2
docker pull 192.168.50.24:5000/tomcat-2 

 

注意事項

The push refers to a repository [192.168.50.24:5000/consul]
Get https://192.168.50.24:5000/v1/_ping: http: server gave HTTP response to HTTPS client

可以用下面方式解決

修改客戶端/etc/docker/daemon.json中寫入如下內容

{
    "registry-mirror":[
        "http://hub-mirror.c.163.com"
    ],
    "insecure-registries":[
        "192.168.50.24:5000"
    ]
}

重新啟動docker后再試試
service docker restart

 

 

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

分類
發燒車訊

SpringBoot之微服務日誌鏈路追蹤

SpringBoot之微服務日誌鏈路追蹤

簡介

在微服務里,業務出現問題或者程序出的任何問題,都少不了查看日誌,一般我們使用 ELK 相關的日誌收集工具,服務多的情況下,業務問題也是有些難以排查,只能確定大致時間定位相關日誌。log-trace-spring-boot-starter 解決多個服務調用日誌的問題,它可以將一個完整的調用鏈給整合為一個完整有序的日誌。

支持組件:

  • zuul 調用
  • feign 調用
  • restTemplate 調用

日誌輸出格式:

2019-11-14 14:22:07.796  INFO [log-trace-service-a-demo,ac8ffaaed5f343da,log-trace-zuul-demo,,] 88948 --- [nio-8081-exec-7] c.p.l.t.service.a.demo.TestController    : controller test2 執行 ac8ffaaed5f343da
2019-11-14 14:23:15.569  INFO [log-trace-service-a-demo,04cf5392dc5c4881,log-trace-zuul-demo,,] 88948 --- [nio-8081-exec-9] c.p.l.t.service.a.demo.TestController    : controller test2 執行 04cf5392dc5c4881
2019-11-14 14:24:44.183  INFO [log-trace-service-a-demo,86b5c555ce4f4451,log-trace-zuul-demo,,] 88948 --- [nio-8081-exec-1] c.p.l.t.service.a.demo.TestController    : controller test2 執行 86b5c555ce4f4451

我們可以通過 86b5c555ce4f4451 id 進行查詢鏈路上的所有日誌信息。

log-trace-service-a-demo 為當前應用。
log-trace-zuul-demo 為上游應用。

當然這些參數可以基於業務定製的。

功能使用

添加依賴

ps: 實際version版本請使用最新版
最新版本:

<dependency>
  <groupId>com.purgeteam</groupId>
  <artifactId>log-trace-spring-boot-starter</artifactId>
  <version>0.1.0.RELEASE</version>
</dependency>

ps: 請基於 SpirngBoot2.1.x 版本使用

配置應用

這裏以3個微服務來舉例子。

  1. log-trace-zuul-demo 充當網關功能
  2. log-trace-service-a-demo 充當服務A
  3. log-trace-service-b-demo 充當服務B

調用鏈路為:

log-trace-zuul-demo -> log-trace-service-a-demo TestController#test -> log-trace-service-b-demo TestController#test

訪問網關地址: http://127.0.0.1:8000/a/test

網關日誌如下:

2019-11-14 14:27:37.434 DEBUG [33b07a9c5f324375,this] 89996 --- [nio-8000-exec-1] c.p.l.t.s.i.zuul.TracePreZuulFilter      : zuul traceid 33b07a9c5f324375

網關轉發至服務A

服務A 日誌如下:

2019-11-14 14:27:37.476  INFO [log-trace-service-a-demo,33b07a9c5f324375,log-trace-zuul-demo,,] 88948 --- [nio-8081-exec-5] c.p.l.t.service.a.demo.TestController    : controller test2 執行 33b07a9c5f324375

服務A 調用 服務B

服務B 日誌如下:

2019-11-14 14:27:37.478  INFO [log-trace-service-b-demo,33b07a9c5f324375,log-trace-service-a-demo,,] 88952 --- [nio-8082-exec-3] c.p.l.t.servcie.b.demo.TestController    : header traceId 33b07a9c5f324375
2019-11-14 14:27:37.478  INFO [log-trace-service-b-demo,33b07a9c5f324375,log-trace-service-a-demo,,] 88952 --- [nio-8082-exec-3] c.p.l.t.servcie.b.demo.TestController    : controller test 執行 33b07a9c5f324375
2019-11-14 14:27:37.478  INFO [log-trace-service-b-demo,33b07a9c5f324375,log-trace-service-a-demo,,] 88952 --- [nio-8082-exec-3] c.p.l.trace.servcie.b.demo.TestService   : test 方法執行 33b07a9c5f324375
2019-11-14 14:27:37.478  INFO [log-trace-service-b-demo,33b07a9c5f324375,log-trace-service-a-demo,,] 88952 --- [nio-8082-exec-3] c.p.l.trace.servcie.b.demo.TestService   : test1 方法執行 33b07a9c5f324375

這樣可以在第三方日誌平台按照一個id進行查詢了。

ELK 通過 33b07a9c5f324375 id 查詢出相關的所有鏈路調用。

配置輸出格式

目前支持以上參數:

X-B3-ParentName 上游服務名稱
X-B3-TraceId 為一個請求分配的ID號,用來標識一條請求鏈路。

通過 application.properties 進行配置。

spring.trace.log.format=X-B3-TraceId,X-B3-ParentName


`spring.trace.log.format` 配置參數順序將影響日誌輸出格式。

不配置將按照默認格式輸出。

日誌輸出如下:

2019-11-14 14:27:37.434 DEBUG [33b07a9c5f324375,this] 89996 --- [nio-8000-exec-1] c.p.l.t.s.i.zuul.TracePreZuulFilter      : zuul traceid 33b07a9c5f324375

總結

目前實現了日誌連貫的功能,後續將支持定製輸出 比如按照登陸人員id進行輸出,方便追蹤用戶行為。
框架方便後續支持 Dubbo 等。

示例代碼地址:

作者GitHub:
歡迎關注

qq交流群: 812321371 微信交流群: MercyYao

微信公眾號:

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!