国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

為什么要將應用微服務化?

這篇具有很好參考價值的文章主要介紹了為什么要將應用微服務化?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

其實在十多年前,“架構(gòu)師”并不是一個需求很大的職業(yè),一來那時還沒有“全民App”級別的應用,除了三大門戶網(wǎng)站以外,其他的網(wǎng)上應用業(yè)務壓力并不大;二來也沒有現(xiàn)如今這么豐富的技術(shù)選型,幾乎清一色的PHP(坊間一直流傳著PHP是世界上最好的語言這個說法,我08年左右寫過一年P(guān)HP,那是我人生最黑暗的一年)。因此呢對所謂“架構(gòu)師?”的需求并不是很大,那些年的高可用架構(gòu)大體上就是這個樣子的:

為什么要將應用微服務化?,微服務,架構(gòu),云原生

在上面的反向代理集群之下,是眾多Web服務器構(gòu)成的高可用集群不過這些服務器中部署的應用卻是千篇一律,什么意思呢?大家看過火影忍者吧,里面主人公經(jīng)常用的一招叫“多重影分身之術(shù)”,將一個自己的本尊復制為成千,上萬個本尊。這里的服務器集群是-個道理,將一個巨無霸的單體應用復制成N個單體應用,組成一個分布式的服務集群。

傳統(tǒng)架構(gòu)之殤

隨著互聯(lián)網(wǎng)行業(yè)的飛速發(fā)展,個人的衣食住行幾乎全依賴各種APP來滿足。每天早上起來刷刷淘寶,地鐵,上用視頻app看個短句,- -天微信不離手,睡前刷個抖音- -不小心就刷到了后半夜,這些現(xiàn)象級全民應用層出不窮,所承接的用戶訪問量遠飛上古時期的門戶網(wǎng)站所能比擬的。在這種用戶量級下還要能夠滿足不斷變化的用戶請求,就像給飛行中的飛機換引擎,傳統(tǒng)的架構(gòu)模式已經(jīng)完全不能滿足業(yè)務發(fā)展的節(jié)奏。

我們來舉幾個“單體應用”中經(jīng)常被人詬病的幾個問題:

數(shù)據(jù)訪問雜亂

為什么要將應用微服務化?,微服務,架構(gòu),云原生

同一個war包內(nèi),在數(shù)據(jù)訪問層面沒有劃分領域模型,比如說我們有User、Product和Order三張表, 對于不同的Service來說, 都通過直接訪問數(shù)據(jù)庫的方式來獲取數(shù)據(jù)。這種做法有幾個顯而易見的缺點:

1)數(shù)據(jù)模型變更

拿Order表來說,如果某一天我的Data Model發(fā)生了重大變更,比如說引入了“子訂單”的概念,原先的數(shù)據(jù)模型不能再很好地支持業(yè)務必須重構(gòu)Orderi訂單表,與此同時,還要兼容老的訂單結(jié)構(gòu)。這種情況下你能貿(mào)然改動數(shù)據(jù)模型嗎?恐怕不行,原因就是這個Order表被這個系統(tǒng)中的各個服務引用到了,你的改動可能會破壞其他服務的功能。

再舉個例子,Product表 以前存放的是單個的商品記錄,數(shù)據(jù)模型非常簡單,后面引入了SKU的概念,這就要對數(shù)據(jù)模型做重大改動,同時還可能影響到庫存模塊(以往庫存落在Product級別,現(xiàn)在要落地到SKU級別)。

以上都是我做電商業(yè)務中遇到的實際場景,對于傳統(tǒng)的應用結(jié)構(gòu)來說,一丁點數(shù)據(jù)結(jié)構(gòu)的改變都會引起很大的影響。如果數(shù)據(jù)模型的變動是必須的,那我們?nèi)绾谓鉀Q這種情況呢?很簡單,通過微服務架構(gòu)在各個服務之間做好隔離,將Data Model的影響帶來的業(yè)務復雜度隔離在當前微服務中,劃分好領域模型,上' 下游服務只要對接微服務的接口就可以,領域模型驅(qū)動不用依賴底層數(shù)據(jù)結(jié)構(gòu)的變更。

2) 底層組件變更

假如現(xiàn)在我要對Product表的數(shù)據(jù)訪問規(guī)則做一個變更,比如引入MyCat分庫分表,或者對熱點數(shù)據(jù)的訪問加上緩存讀寫的步驟。那么意味著.上下游所有訪問Product表的業(yè)務,都需要連帶著做同樣的改動。

再說個更極端的例子,以前我們使用的是Oracle,這家伙老貴了,領導層想要換成MySQL,即便我們沒有存儲過程的牽絆,那么這個變更也是極其巨大的,可謂牽一發(fā)而動全身。

理論,上來說,我們應該盡可能對業(yè)務層屏蔽底層組件的變更,在傳統(tǒng)的分布式應用中非常難以辦到,但是在微服務架構(gòu)下卻沒有那么困難,因為微服務間的訪問依賴API接口+業(yè)務模型,我們只要在當前微服務中把這種底層組件的變更處理好,對上下游其他服務來講這個變更其實是無感知的,因為在微服務接口暴露出的業(yè)務模型并不會有什么變化。

代碼復用帶來的維護成本

一整個應用的代碼摻雜在一塊,少不了各種“借鑒”,咱來細數(shù)下這里面的坑:

1)碼農(nóng)的傲嬌-rewrite code

作為一個驕傲的碼農(nóng),看別人寫的代碼都跟屎一樣,只有自己出品的才是最好的。路見不平重構(gòu)一番,重構(gòu)不了的干脆重新寫個功能上一模一樣但是代碼結(jié)構(gòu)上更“優(yōu)雅”的接口出來,隨著時間的推移,這深藏于碼農(nóng)血液里的“rewrite code”基因,終究會把一個代碼庫編程一座屎山。

2)小改動沒什么大不了

“我就改了個if條件啊,誰知道你們也用了這個方法,這方法我當初就寫給自己用的啊!”

碼農(nóng)之間的撕逼沒有那么轟轟烈烈,反正最后歸根結(jié)底就是-改出bug來了。上面那個情景在傳統(tǒng)架構(gòu)的系統(tǒng)里很常見,當你的業(yè)務需要添加一個新功能,瞄了幾眼發(fā)現(xiàn),咦?我去年寫的這個方法改一下正好能用,隨手改了個if條件。誰曾料想,隔壁組的程序媛妹子沒打招呼也用了這個方法,被你這么一改,把別人的服務搞掛了,又不好意思跟人妹子撕逼,只好自己背了個生產(chǎn)事故的鍋。

時不我待!糙快猛才是生產(chǎn)力

不知道大伙有沒有經(jīng)歷過互聯(lián)網(wǎng)公司的業(yè)務節(jié)奏,擁抱變化不是白叫的,研發(fā)團隊沉浸在996的福報中不能自拔。就像前面說的,為了支持不斷變化的新業(yè)務,開發(fā)團隊對系統(tǒng)的改造就像給飛行中飛機換引擎,既要讓飛機飛,又要保證完成任務,還得要快。因此我們提出了“糙快猛”的開發(fā)模式,它是繼瀑布模型、敏捷模型等等軟件工程理論之后的具有中國特色的互聯(lián)網(wǎng)研發(fā)模式。

面對一個屎山- -般的單war包應用,產(chǎn)品的發(fā)布節(jié)奏往往是以月甚至年來計,-個變更從評估到上線,拖個- -年半載是很常見的事情這種節(jié)奏對于互聯(lián)網(wǎng)公司來說,倒閉100次都夠了。

小步快跑

互聯(lián)網(wǎng)產(chǎn)品的迭代依靠小步快跑,盡快上線,盡快驗證業(yè)務模式,有問題立即調(diào)整,-切都是“快字當頭”。對于傳統(tǒng)應用來說,發(fā)布節(jié)奏只能劃歸到一個千年等-回的發(fā)布窗口,再小的變更都得耗上很長的時間,可能每次發(fā)布都要經(jīng)歷很耗時的全鏈路回歸測試。對微服務架構(gòu)來說完全不存在這個問題,每個微服務模塊由于職責邊界足夠清晰,規(guī)??煽乇阌诳焖僮兏蜏y試,完全可以讓團隊自己制定發(fā)布窗口,即便是上線前的回歸測試也只局限在當前服務模塊

回滾

回滾對于傳統(tǒng)的單war包分布式系統(tǒng)來說是個噩夢,好不容易等到了發(fā)布窗口,各個團隊牟足了勁把所有變更都發(fā)布了出去,結(jié)果因為其中某個小改動引發(fā)的問題,導致全部回滾。又要苦苦等待下一個發(fā)布窗口。

在微服務架構(gòu)中,回滾只局限在某個微服務的范圍內(nèi),只要把出問題的應用回滾就好了,不會影響上下游其他應用的發(fā)布節(jié)奏。

技術(shù)前沿拓展

前端開發(fā),你的認知不能僅局限于技術(shù)內(nèi),需要發(fā)散思維了解技術(shù)圈的前沿知識。細心的人會發(fā)現(xiàn),開發(fā)內(nèi)部工具的過程中,大量的頁面、場景、組件等在不斷重復,這種重復造輪子的工作,浪費工程師的大量時間。

介紹一款程序員都應該知道的軟件JNPF快速開發(fā)平臺,很多人都嘗試用過它,它是功能的集大成者,任何信息化系統(tǒng)都可以基于它開發(fā)出來。

這是一個基于 Java Boot/.Net Core 構(gòu)建的簡單、跨平臺快速開發(fā)框架。前后端封裝了上千個常用類,方便擴展;集成了代碼生成器,支持前后端業(yè)務代碼生成,實現(xiàn)快速開發(fā),提升工作效率;框架集成了表單、報表、圖表、大屏等各種常用的 Demo 方便直接使用;后端框架支持 Vue2、Vue3。如果你有閑暇時間,可以做個知識拓展。

看完本文如果覺得有用,記得點個贊支持,收藏起來說不定哪天就用上啦~文章來源地址http://www.zghlxwxcb.cn/news/detail-802075.html

到了這里,關(guān)于為什么要將應用微服務化?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關(guān)文章

  • xxl-job服務化

    xxl-job作為服務,之前使用都是每個服務配置信息,采用方法的形式,xxl-job作為服務的話,只需要進行配置 配置信息 xxl-job創(chuàng)建任務 xxl-job相關(guān)輸入 clientClass 實現(xiàn)類 clientMethod 調(diào)用的方法 加參數(shù),比如用戶為張三,年齡18 ,\\\"name\\\":\\\"張三\\\",\\\"age\\\":18 JobHandler:CommonXxlJobHandler 任務參數(shù):

    2024年02月06日
    瀏覽(24)
  • springboot + activiti實現(xiàn)activiti微服務化

    springboot + activiti實現(xiàn)activiti微服務化

    本文介紹如何將springboot+activiti進行整合,并配合eureka,zuul和feign實現(xiàn)activiti的微服務化,將流程控制和業(yè)務邏輯分離. 并實現(xiàn)了幾個比較特殊的功能,比如時間段委托(某人請假或出差,出差時間內(nèi),所有待辦交給被委托人處理),比如節(jié)點的無限級加簽功能(流程本身有不確定性,臨時增加

    2024年02月09日
    瀏覽(29)
  • PaddleOCR 服務化部署(基于PaddleHub Serving)

    PaddleOCR 服務化部署(基于PaddleHub Serving)

    最近用到百度飛槳的 PaddleOCR,研究了一下PaddleOCR的服務化部署,簡單記錄一些部署過程和碰到的問題。 基礎環(huán)境 paddlepaddle 2.5.2 python 3.7 paddlehub 2.1.0 PaddleOCR 2.6 pip 20 部署過程中也嘗試多次,不同版本遇到的問題不盡相同,這里選取其中一組進行部署說明 使用 docker部署 paddl

    2024年03月09日
    瀏覽(28)
  • 【架構(gòu)設計】單體軟件向微服務化演變

    假設單體軟件的各模塊如下,其中服務包含許多功能模塊,如用戶管理模塊、商品模塊、訂單模塊、倉庫模塊; 服務化是指對單體服務進行拆分,將一個服務軟件拆分為多個相互關(guān)聯(lián)的服務,他們之間相互協(xié)作,能正常完成原單體服務的所有業(yè)務。 服務化后,有如下優(yōu)點:

    2024年01月17日
    瀏覽(20)
  • 分布式、服務化的ERP系統(tǒng)架構(gòu)設計

    分布式、服務化的ERP系統(tǒng)架構(gòu)設計

    ERP 之痛 ? ? ? ?曾幾何時,我混跡于電商、珠寶行業(yè)4年多,為這兩個行業(yè)開發(fā)過兩套大型業(yè)務系統(tǒng)(ERP)。作為一個ERP系統(tǒng),系統(tǒng)主要功能模塊無非是訂單管理、商品管理、生產(chǎn)采購、倉庫管理、物流管理、財務管理等等。作為一個管理系統(tǒng),大家的一般開發(fā)習慣就是使用

    2024年02月11日
    瀏覽(101)
  • 【flask】python使用flask發(fā)布http服務對算法服務化封裝

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 隨著應用場景的變化,某些場景中需要調(diào)用python的算法對B/S或C/S結(jié)構(gòu)的項目進行支撐,為了將算法服務化,可以使用flask框架對算法進行服務發(fā)布,避免不同系統(tǒng)調(diào)用算法時進行多次算法的部署以及代碼

    2024年04月16日
    瀏覽(56)
  • PaddleOCR 使用 FastDeploy 服務化部署及postman、java調(diào)用服務的方法

    PaddleOCR 使用 FastDeploy 服務化部署及postman、java調(diào)用服務的方法

    目錄 服務化部署 postman調(diào)用 java調(diào)用 題外話 部署這塊大部分按著官方文檔來做就差不多 PaddleOCR/deploy/fastdeploy/serving/fastdeploy_serving at dygraph · PaddlePaddle/PaddleOCR · GitHub 提一下兩個需要注意的點。 一、如果跟我一樣選擇的是cpu的版本,那么修改config.pbtxt配置文件時不僅得按官方

    2024年02月08日
    瀏覽(23)
  • GroundingDINO(一種開集目標檢測算法)服務化,根據(jù)文本生成檢測框

    GroundingDINO(一種開集目標檢測算法)服務化,根據(jù)文本生成檢測框

    最近發(fā)現(xiàn)一個叫GroundingDINO的開集目標檢測算法,所謂開集目標檢測就是能檢測的目標類別不局限于訓練的類別,這個算法可以通過輸入文本的prompt然后輸出對應的目標框。可以用來做預標注或者其他應用,比如我們要訓練某個細分場景的算法時,我們找不到足夠的已經(jīng)標注的

    2024年02月06日
    瀏覽(24)
  • AI架構(gòu)師必知必會系列:模型部署與服務化、Mass架構(gòu)設計方案詳解和代碼實戰(zhàn)指南
  • 百度飛槳(PaddlePaddle) - PP-OCRv3 文字檢測識別系統(tǒng) 基于 Paddle Serving快速使用(服務化部署 - Docker)

    百度飛槳(PaddlePaddle) - PP-OCRv3 文字檢測識別系統(tǒng) 基于 Paddle Serving快速使用(服務化部署 - Docker)

    目錄 安裝 Docker 安裝 PaddleOCR 安裝 準備PaddleServing的運行環(huán)境, 模型轉(zhuǎn)換 Paddle Serving pipeline部署 重啟 測試 百度飛槳(PaddlePaddle) - PP-OCRv3 文字檢測識別系統(tǒng) 預測部署簡介與總覽 百度飛槳(PaddlePaddle) - PP-OCRv3 文字檢測識別系統(tǒng) Paddle Inference 模型推理(離線部署) 百度飛槳(Paddl

    2024年02月07日
    瀏覽(56)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包