2021-03-06 分類: 網(wǎng)站建設
前言
我們已經(jīng) 設計和構建 了十多年的軟件,大部分時間我們一直在使用優(yōu)秀的 Symfony 框架來實現(xiàn)這一目標。 Symfony 是一個傳統(tǒng)的單體 PHP 構件集,受 Java Spring 的啟發(fā),我們發(fā)現(xiàn)它非常適合 企業(yè) Web 應用程序 和 數(shù)字產(chǎn)品 的快速開發(fā),而這些正是我們主要經(jīng)濟來源。
然而,去年發(fā)布的 Symfony 4 代表了該框架的重點逐漸變化 ; 這變化體現(xiàn)在其遠離單體架構和向 微服務 靠攏,這種變化背后的方法論在過去幾年中越來越受歡迎。
為了說明這一轉變,新版本在默認情況下使用了微內(nèi)核(micro by default), Symfony 組織大力宣傳其新的微內(nèi)核設計,聲稱與 Symfony 3 相比,編寫應用程序所需的代碼減少了 70%。
除了這些優(yōu)點外,這一變化意味著運行單個應用程序的開銷要小得多,這使得 Symfony 對于微服務體系結構的使用更具吸引力。
什么是單體應用和微服務
微服務設計基于將大型傳統(tǒng)(單體)應用程序拆分為幾個小型、不同的應用程序的概念。這些應用程序將處理單個業(yè)務功能領域,并與其他組件協(xié)作,就像它們是第三方應用程序一樣
這真的是一個新事物嗎,或者這只是一個具有時髦名字的面向服務體架構(SOA)? 我們不會在這里進行辯論,畢竟你可以到 Slashdot 和 Hacker News 上討論這個問題。不過,我們要說的是,微服務方法 ( 或者隨便你怎么稱呼它 ) 主要對大型組織有益。這是因為非常大的應用程序可以被分割成幾個不同的服務,每個服務由各自獨立的開發(fā)團隊管理。
微服務體系結構的另一個好處是允許靈活地擴展一個特定組件的數(shù)量,而不是整個應用程序。這特性非常適合應用在 彈性云計算 ,但在大多數(shù)情況下,我認為這種效率提高會被一個大而突出的問題所淹沒。
你真的需要微服務
我的觀點是,除非你在 Google 或 Netflix 等擁有數(shù)百名軟件開發(fā)人員的公司工作,否則你可能不需要微服務。事實上,對于大多數(shù)中小型企業(yè)來說,采用這種設計可能非常不合適。
我將會講到一些例外,但是微服務的開發(fā)和維護成本是很多人都注意到的卻又很少談及的問題。我們可以用一個簡單的問題來決定是否適合把微服務作為你的起點 : (譯者注:這句子的原文中有個詞語叫 房間里的大象 ,是指所有人都注意到卻又不被提及的問題)
你系統(tǒng)中的某個組件(例如用戶管理)是否足夠復雜,以致于需要多個開發(fā)人員全職進行持續(xù)開發(fā)?
如果答案是否定的,那么微服務方法可能會浪費您的時間和金錢。相反,如果你足夠幸運,能夠在以后達到這個規(guī)模,你可能就可以慢慢地把那些需要多人開發(fā)的部分分離出來。
為什么微服務在開發(fā)和運維上開銷更大
由于您不需要處理大量的分布式系統(tǒng)問題,因此單體應用程序通常是一個開銷更少的方案。使用像 Symfony 這樣的單體框架所通過提供開箱即用的集成特性提供了許多好處,這些特性可以方便地從應用程序的所有區(qū)域訪問。你基本上可以避免處理以下的這些問題 :
例外情況(混合的方式)
有時候微服務是合適的,但是根據(jù)我的經(jīng)驗,在這些情況下,可伸縮性需求或容錯需求超過了必須設計和管理分布式系統(tǒng)的缺點。這里的一個很好的例子是像 Monzo Bank 這樣的企業(yè)應用,它既需要能夠立即按需求進行伸縮,又需要能夠確保系統(tǒng)某個區(qū)域的故障不會影響到另一個區(qū)域 .
我們在 Browser 中多次重復的一個好方法是采用混合方法進行系統(tǒng)設計。這涉及到一個由支持微服務包圍的中心整體,但只有在有充分理由的情況下才會如此。例如,我們最近在將 NLP 處理集成 到應用程序中時使用了這種方法。
我們已經(jīng)構建了幾個系統(tǒng),其中核心業(yè)務應用程序作為一個整體構建 ( 通常在 Symfony 中 ),由獨立的微服務管道處理繁重的數(shù)據(jù)處理。這不僅允許我們在不影響核心應用程序性能的情況下處理大量數(shù)據(jù)量,而且如果需要,我們可以在不影響平臺的日常操作前提下,將這些組件下線。
理想情況下,你能夠清楚地理解規(guī)模和未來的開發(fā)需求,這對于決定體系結構非常重要。你想快速進入市場嗎?您想要支持數(shù)百萬用戶嗎?您是否需要處理 大量的數(shù)據(jù)流 。
盡早做出正確的決定可以增加產(chǎn)品在最短的時間內(nèi)獲得投資回報的機會,而不會妨礙您將來的探索。 在后續(xù)計劃中將組件微服務化通常比最初的 MVP 開發(fā)中微服務化更具成本效益。
分享名稱:作為一個程序員,你真的需要微服務嗎?
網(wǎng)站地址:http://m.rwnh.cn/news1/104551.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護、企業(yè)網(wǎng)站制作、云服務器、網(wǎng)站營銷、全網(wǎng)營銷推廣、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容