• <button id="4os99"><acronym id="4os99"><menuitem id="4os99"></menuitem></acronym></button>
  • <th id="4os99"><pre id="4os99"></pre></th>
  • <em id="4os99"><tr id="4os99"><kbd id="4os99"></kbd></tr></em>
  • <form id="4os99"></form>
      1. <progress id="4os99"></progress>
        登錄
        立即咨詢

        語言選擇

        諧云 諧云
        在這里探索云原生
        一文了解數據中間件
        2021年09月23日

        在討論數據中間件是什么之前,我們先來討論什么是中間件。

        維基百科對中間件的定義:

        中間件(英語:Middleware),又譯中間件、中介層,是一類提供系統軟件和應用軟件之間連接、便于軟件各部件之間的溝通的軟件,應用軟件可以借助中間件在不同的技術架構之間共享信息與資源。中間件位于客戶機服務器的操作系統之上,管理著計算資源和網絡通信。 

        常見的中間件有如下幾類

        · RPC框架

        · 消息中間件

        · 緩存服務

        · 配置中心

        · 任務調度

        · 分布式事務

        · 數據庫

        數據相關的中間件主要有: 

        數據庫:數據庫是數據存儲的主要,由于需要寫到緩存,包括關系型數據庫(常見的mysql、oracal)、非關系型數據等(elasticsearch、hbase等)

        緩存服務: 內存數據庫,數據直接運行在內存中,加快訪問速度,常見的比如redis、memcached

        消息隊列: 消息的傳輸過程中保存消息的容器。常見的比如rocketmq、kafka

         

        數據中間件能做些什么?

        盡管云原生開發存在諸多好處,但它同時也增加了復雜性。從本地系統到公共云,您可能會跨多種基礎架構來部署應用。而應用架構本身也是多種多樣。所以開發人員需要兼顧多種工具、語言和框架,同時還要竭力爭取在更短的時間內以更低的成本完成更多工作,這無疑壓力倍增。

        為了應對這種復雜情況,企業紛紛選擇了中間件來保持快速、經濟高效的應用開發。中間件可以有力支持應用環境在高度分布式平臺上平穩、一致地運行。

        構建于此,而部署于彼。由于應用下層有中間件,所以跨環境也能穩定運行。

        數據庫

        數據庫可以直觀的理解為存放數據的倉庫,只不過這個倉庫是在計算機的大容量存儲器上,而且數據必須按照一定的格式存放,因為它不僅需要存放,而且要便于查找。

        緩存服務

        在計算機領域,緩存技術一般是指,用一個更快的存儲設備存儲一些經常用到的數據,供用戶快速訪問。用戶不需要每次都與慢設備去做交互,因此可以提高訪問效率。

        分布式緩存就是指在分布式環境或系統下,把一些熱門數據存儲到離用戶近、離應用近的位置,并盡量存儲到更快的設備,以減少遠程數據傳輸的延遲,讓用戶和應用可以很快訪問到想要的數據。通常在應用訪問數據庫中間加一層緩存提高獲取數據的速率。

        圖:緩存服務的場景

        消息隊列

        消息隊列主要由以下作用:解耦,削峰,異步,其實還有一個作用是提高接收著性能。

        · 解耦: 多個交互的應用程度可以獨立變動,而無需太多考慮其他系統

        · 削峰: 將流量高的時間平攤到不那么高的時候

        · 異步: 異步處理不用阻塞當前線程來等待處理完成,而是允許后續操作

        圖:消息隊列的場景

         

        組件名稱

        作用

        特點

        數據庫

        數據存儲,提供數據讀寫的功能

        高安全性

        緩存

        主要提供數據庫快速查詢

        高性能、高并發

        消息隊列

        解耦業務、異步傳輸、流程削峰

        高性能,擴展業務

         

        如何建立數據中間件?

        數據中間件本質是提高單機/分布式環境下 提交數據交互的速率和穩定性。

        那么我們先來回顧一下操作系統原理,計算機系統中包含各類存儲,從CPU寄存器到網絡IO速率是依次遞減。那么就需要在成本限定的前提下盡可能利用好高IO設備。

        圖:各類設備的IO速度

        在物理資源不變的情況下,對于提高性能無非幾種方法。

        在非分布式環境下 通過數據結構優化/緩存/緩沖,分布式環境下數據復制+讀寫分離/數據分片

        穩定性主要考慮的就是宕機/網絡故障

        數據存儲(數據庫)

        數據庫通常需要提供sql進行數據請求,由sql解析器進行語法解析,同時經過優化器進行語法優化,最后根據不同的存儲引擎在緩存中讀取數據。

            

        圖:Mysql數據庫的架構

         

        數據庫中用到了下面幾種重要的原理:

        索引

        建立索引提高讀取數據尋址的效率, 想想一下同樣大小的文件夾(包含大量小文件)和壓縮包,考慮的速率肯定是壓縮包更快。前置是不連續地址,后者是連續地址。比如mysql主要通過b+樹索引快速定位索引的內存位置并且獲取數據。

        內存緩存

        雖然索引能夠很大的提高速率,但是無法一次性將所有索引保存在內存中。 雖然linux內部提供page cache等方式提高,但是通常為了更加提高數據讀寫性能,通常自己另外實現一套應用級別的緩沖,比如mysql的buffer pool機制,通過索引在讀數據時可以很大程度上減少磁盤IO的次數,大大提高了數據搜尋的速率。

        其他

        單機環境,再優化也會有性能瓶頸,同時無法應對宕機和網絡故障問題,只能通過擴展解決。

        常規的業務環境往往是讀多寫少,可以通過讀寫分離,大大提高讀的性能,也能做到數據的冗余備份。

        緩存服務

        這里的緩存不是特應用的內部緩存,而是獨立的緩存服務(也可以叫做內存數據庫)。

           

        圖:緩存與數據庫的讀寫交互

         

        寫流程:

        1. 要更新的數據是否在緩存中存在,若存在則直接將數據寫入緩存,之后緩存數據由第三方緩存組件將其更新到DB.

        2. 若緩存中不存在,則直接將結果寫入DB,這種稱之為寫穿透

        讀流程:

        1. 首先讀緩存,如果緩存命中,則直接返回結果

        2. 如果緩存未命中,則依賴第三方組件從DB 中加載數據到緩存中,然后將獲取的結果返回。

        內存緩存

        這里說的內存緩存和數據庫存在差異,由于數據庫的安全性,需要經常落盤,那么就會帶來很多問題;而緩存服務本身就作為內存數據庫落盤不那么頻繁。

        當你訪問數據庫,存在大量的qps導致數據庫跟不上性能,那么可以通過緩存解決,相對于數據庫需要經常落盤,緩存大部分時間是無需落盤,內存IO的速度比磁盤IO快了很多,所以緩存往往是作為應用訪問數據庫的中間件層提高性能。

        其他

        由于緩存讀多,很少使用數據庫的事務,所以在數據分片實現是更加容易,擴展性也相對于數據庫更加方便。

        消息隊列

        消息隊列是從數據結構中的隊列(FIFO)中演變過來的,作為獨立的隊列,通過網絡寫入和讀取數據。

        異步處理:
        有些業務不想也不需要立即處理消息。消息隊列提供了異步處理機制,允許用戶把一個消息放入隊列,但并不立即處理它。想向隊列中放入多少消息就放多少,然后在需要的時候再去處理它們,例如短信通知、終端狀態推送、App推送、用戶注冊等。

        圖:緩存異步讀寫

        系統解耦:

        降低工程間的強依賴程度,針對異構系統進行適配。在項目啟動之初來預測將來項目會碰到什么需求,是極其困難的。通過消息系統在處理過程中間插入了一個隱含的、基于數據的接口層,兩邊的處理過程都要實現這一接口,當應用發生變化時,可以獨立的擴展或修改兩邊的處理過程,只要確保它們遵守同樣的接口約束。比如通訊上下行、終端異常監控、分布式事件中心。

        圖:緩存用作應用解耦

        數據流處理:
        分布式系統產生的海量數據流,如:業務日志、監控數據、用戶行為等,針對這些數據流進行實時或批量采集匯總,然后進行大數據分析是當前互聯網的必備技術,通過消息隊列完成此類數據收集是最好的選擇,比如日志服務、監控上報。

        圖:緩存用作數據流處理

         

        數據中間件的發展趨勢

        1. 基于云原生環境的智能運維和擴展能力

        對于中間件設施的開發和運維人員來說,中間件復雜的架構是難點。

        目前云原生技術越來越成熟,可以充分利用云原生的聲明式API,控制器模型擴展中間件,使其更加智能穩定。

        比如目前開源的各類中間件operator的項目 

        https://kubernetes.io/zh/docs/concepts/extend-kubernetes/operator/

        圖:operator 原理

        2. 統一的編程模型

        對于應用的使用者來說,需要了解不同的中間件如何使用,同時需要考慮很多復雜的場景。編寫高性能、可擴展且可靠的分布式應用程序很困難??梢允褂猛坏木幊棠P推帘蔚讓拥膹碗s場景。

        Dapr項目是一個有趣的項目,它將事件驅動和參與者語義統一到一個簡單、一致的編程模型中。它支持所有編程語言,沒有框架鎖定。您不會接觸到低級原語,例如線程、并發控制、分區和縮放。相反,您可以通過使用您選擇的熟悉的 Web 框架實現一個簡單的 Web 服務器來編寫代碼。

        https://github.com/dapr/dapr

        圖:operator hub

        添加評論
        諧云
        2024年03月02日
        添加回復
        回復:Hi, i think that i saw you visited my site thus i came to “return the favor”.I'm trying to find things to enhance my site!I suppose its ok to use some of your ideas!!
        添加回復
        回復:This information is invaluable. Where can I find out more?
        添加回復
        回復:Wonderful blog! Do you have any suggestions for aspiring writers? I'm hoping to start my own website soon but I'm a little lost on everything. Would you suggest starting with a free platform like Wordpress or go for a paid option? There are so many choices out there that I'm completely confused .. Any ideas? Many thanks!
        添加回復
        回復:Thanks on your marvelous posting! I quite enjoyed reading it, you are a great author. I will always bookmark your blog and will come back very soon. I want to encourage you to definitely continue your great posts, have a nice weekend!
        添加回復
        回復:I'm impressed, I have to admit. Rarely do I encounter a blog that's both educative and entertaining, and let me tell you, you have hit the nail on the head. The issue is an issue that too few folks are speaking intelligently about. Now i'm very happy that I came across this in my hunt for something relating to this.
        添加回復
        回復:Having read this I believed it was very enlightening. I appreciate you taking the time and energy to put this article together. I once again find myself spending a significant amount of time both reading and posting comments. But so what, it was still worthwhile!
        添加回復
        回復:Write more, thats all I have to say. Literally, it seems as though you relied on the video to make your point. You definitely know what youre talking about, why throw away your intelligence on just posting videos to your blog when you could be giving us something informative to read?
        添加回復
        回復:Every weekend i used to pay a quick visit this site, because i want enjoyment, for the reason that this this web page conations really good funny information too.
        添加回復
        回復:Terrific article! This is the kind of info that are meant to be shared across the web. Shame on Google for now not positioning this publish higher! Come on over and talk over with my website . Thanks =)
        添加回復
        回復:This website was... how do I say it? Relevant!! Finally I have found something which helped me. Kudos!
        添加回復
        回復:Its not my first time to visit this website, i am visiting this site dailly and take nice data from here everyday.
        添加回復
        回復:Hi there every one, here every person is sharing such know-how, so it's good to read this website, and I used to pay a visit this website everyday.
        添加回復
        回復:fantastic points altogether, you simply received a brand new reader. What may you recommend about your put up that you simply made some days ago? Any positive?
        添加回復
        回復:I am really loving the theme/design of your site. Do you ever run into any internet browser compatibility issues? A handful of my blog readers have complained about my website not working correctly in Explorer but looks great in Opera. Do you have any suggestions to help fix this problem?
        添加回復
        回復:If you wish for to get a great deal from this post then you have to apply these methods to your won website.
        添加回復
        回復:Hi there! This is my 1st comment here so I just wanted to give a quick shout out and tell you I genuinely enjoy reading your articles. Can you suggest any other blogs/websites/forums that go over the same topics? Thanks a ton!
        添加回復
        回復:Your style is really unique in comparison to other people I have read stuff from. Many thanks for posting when you've got the opportunity, Guess I'll just bookmark this site.
        添加回復
        回復:I read this piece of writing fully regarding the difference of most up-to-date and preceding technologies, it's amazing article.
        添加回復
        回復:Hey I know this is off topic but I was wondering if you knew of any widgets I could add to my blog that automatically tweet my newest twitter updates. I've been looking for a plug-in like this for quite some time and was hoping maybe you would have some experience with something like this. Please let me know if you run into anything. I truly enjoy reading your blog and I look forward to your new updates.
        添加回復
        回復:Good day I am so thrilled I found your blog, I really found you by mistake, while I was searching on Bing for something else, Anyways I am here now and would just like to say thanks a lot for a fantastic post and a all round interesting blog (I also love the theme/design), I don’t have time to go through it all at the minute but I have bookmarked it and also added in your RSS feeds, so when I have time I will be back to read more, Please do keep up the awesome work.
        添加回復
        回復:You could certainly see your skills in the work you write. The world hopes for more passionate writers like you who aren't afraid to say how they believe. All the time follow your heart.
        添加回復
        回復:Hi there! Someone in my Myspace group shared this website with us so I came to take a look. I'm definitely loving the information. I'm bookmarking and will be tweeting this to my followers! Exceptional blog and great design.
        添加回復
        回復:My brother suggested I might like this blog. He was totally right. This post truly made my day. You can not imagine just how much time I had spent for this information! Thanks!
        添加回復
        諧云
        2024年03月02日
        添加回復
        諧云 CpjJwWHV
        2024年03月02日
        555
        添加回復
        gBqsPxAZ回復CpjJwWHV:555
        添加回復
        gBqsPxAZ回復CpjJwWHV:555
        添加回復
        gBqsPxAZ回復CpjJwWHV:555
        添加回復
        gBqsPxAZ回復CpjJwWHV:555
        添加回復
        回復CpjJwWHV:
        添加回復
        回復CpjJwWHV:
        添加回復
        諧云 CpjJwWHV
        2024年03月02日
        555
        添加回復
        gBqsPxAZ回復CpjJwWHV:555
        添加回復
        gBqsPxAZ回復CpjJwWHV:555
        添加回復
        gBqsPxAZ回復CpjJwWHV:555
        添加回復
        gBqsPxAZ回復CpjJwWHV:555
        添加回復
        回復CpjJwWHV:
        添加回復
        回復CpjJwWHV:
        添加回復
        回復CpjJwWHV:
        添加回復
        回復CpjJwWHV:
        添加回復
        回復CpjJwWHV:
        添加回復
        申請合作咨詢
        您可以通過此表單填寫您的合作意向,我們將會盡快與您取得聯系!
        或撥打電話0571-87607309
        *姓名:
        *手機:
        *郵箱:
        備注:
        備注:
        登錄
        登錄
        注冊賬號 忘記密碼
        注冊
        {{ code.btn }}
        注冊
        立即登錄 忘記密碼?
        忘記密碼
        {{ code.btn }}
        確定
        立即登錄 忘記密碼?
        立即咨詢
        欧美一级a人与免费2019|99久热精品免费观看动漫官网|久久久久国色av免费看|免费A片短视频在线观看国产