為什么要微服務設計,微服務該如何設計緩存

為什么開發后端微服務時要分離API模塊?基于組件模型的架構(EJB)層次架構(MVC)面向服務的架構(SOA)3 .微服務特點(1)系統由多個服務組成(2)每個服務都可以獨立部署(3)每個服務都是松耦合的 。
微服務該如何設計緩存?

為什么要微服務設計,微服務該如何設計緩存


筆者做過公司多個項目的微服務架構和改造,就微服務的緩存設計這個問題來發表一下自己的看法 。從3個層面來回答這個問題:為什么用緩存?什么場景下使用緩存?基于緩存的架構設計點1.為什么用緩存在高并發場景下,如果直接讀DB,很容易出現性能瓶頸,因此需要通過緩存來減少DB的壓力,使得大量的訪問進來能夠命中緩存,只有少量的需要讀DB,
緩存基于內存,可支持的并發量遠遠大于基于硬盤的數據庫 。所以對于高并發設計,緩存的設計必不可少,2.什么場景下使用緩存我們都知道緩存可以提升系統響應速度,那么一般哪些場景下需要用到緩存呢?我們可以列舉3個場景:2.1計數緩存計數對于數據庫來講,是非常繁重的任務,需要查詢大量的數據,最后得出計數結果,當數據改變的時候,需要重新刷一遍,非常影響性能 。
因此可以設計一個計數服務,后端對接緩存,將計數作為結果放在緩存里面,當數據改變時,調用計數服務增加或者減少計數,計數服務可以使用Redis進行單個計數,也可以用hash表進行批量計數 。微服務中的使用場景為網關中的流量控制、配額控制等計數服務,2.2頻繁讀 低頻寫比如一個網上商城,商品品類信息的更新品類相對而言是比較低的,但是幾乎所有商品相關的查詢服務都需要讀取商品的品類信息 。
【為什么要微服務設計,微服務該如何設計緩存】像這種低頻寫、高頻讀的數據,比較適合放到緩存中,來提升服務性能,2.3較大內容的高頻讀數據這個和2.2的主要區別是防止在緩存中的量級 。比如物聯網場景中的白名單信息,接入物聯網的設備量級一般比較大,可以到萬、千萬甚至上億級別 。對于這些設備的白名單控制不可能每次都讀取DB來做權限驗證,因此需要設計針對大量數據的分布式緩存來提升服務性能 。
3.基于緩存的架構設計點基于緩存的架構設計點可以從2個方面來考慮:3.1分場景要區分緩存的實際應用場景,來進行不同的緩存技術選型,對于微服務網關中的流量控制所用到的分布式緩存,可以使用redis 本地緩存技術的方案 。對于商品分類信息的存放,使用本地緩存就可以滿足需求,對于大型文件的緩存,則推薦本地文件 本地緩存的方式,配合版本管理實現 。
3.2緩存架構的高可用引入緩存是為了解決性能瓶頸,但是實質上是引入了更多依賴,比如使用redis,如果沒有足夠的容錯機制,redis一旦掛了,則會導致服務不可用 。可以使用分片,這樣每一個緩存實例都不大,但是實例數目比較多,一方面可以實現負載均衡,防止單個實例稱為瓶頸或者熱點,另一方面如果一個實例掛了,影響面相對會小很多,高可用性大大增強,
Java后端微服務開發,為什么要單獨把api模塊分離出來?
為什么要微服務設計,微服務該如何設計緩存


現在的軟件開發模式和傳統的有很多差別,傳統的開發模式耦合度較高,隨著技術的發展越來越多的開發模式被應用,比如微服務架構模式 。其實很多開發語言都有自己的微服務解決方案,如Java系的SpringBoot、SpringCloud等,但在實際項目開發中,即使是在微服務開發模式下,依舊有很多人喜歡單獨抽離出一個api模塊,這是為什么呢?什么是微服務?其實“微服務”并不是一種新的技術,而是一種新興的架構模式 。

推薦閱讀