開門見山,「巨集大」的問題簡單說。0
1資訊科技發展趨勢
資訊科技發展的三個階段
資訊科技從出現到逐漸成為主流,主要經歷了軟體、開源、雲三個階段的發展。從軟體到開源,再到雲,這也是資訊科技的發展趨勢。縱觀人類社會漫長的發展歷史,農耕時代、工業時代與資訊時代可謂是明顯的三個分水嶺,每個時代都會出現很多新興的領域,作為資訊時代最重要的載體,網際網路越來越成為當今社會關注的焦點,網際網路的基石之一——軟體,正在迅速地改變著這個世界。隨著軟體行業的成熟,相比於「重複造輪子」,「站在巨人的肩膀上」明顯可以更加容易和快速地創造出優秀的新產品。
隨著開源文化越來越被認可,以及社群文化越來越成熟,使用優秀的開源產品作為基礎架構來快速搭建系統以實現市場戰略,成為當今最優的資源配比方案。僅通過開源產品搭建並運維乙個高可用、高度彈性化的平台,進而實現網際網路近乎100%的可用性,難度可想而知。因此,在提供技術思路的同時,進一步提供整套雲解決方案以保證不斷擴充套件的非功能需求,便成了當今新一代網際網路平台的追求。隨著使用者集群規模的進一步加大,單純的分布式系統已經難以駕馭,因此技術圈開啟了乙個概念爆發的時代——soa、devops、容器、ci/cd、微服務、service mesh等概念層出不窮,而 docker、kubernetes、mesos、spring cloud、istio 等一系列產品的出現,標誌著雲時代已真正到來。當今的網際網路大潮,已經越來越難以估算使用者量以及由此產生的自然資料增長有多少了,區別於我們日常的生活(例如商場,僅有 10 個人和有 1000 人的購物體驗是明顯不同的),企業如何做到無差別地為全世界所有的使用者提供服務,成了一道難題。面對當今快速增長的業務和需求,敏捷開發成為了熱門的選擇。在不斷迭代的過程中,時間成本就顯得尤為重要。如何敏捷地探知市場需求並將其實現,是網際網路行業的立命之本。產品快速公升級必然會推動、測試、交付甚至系統迅速迭代。我們要保證應用全天候不間斷的可用,必須要考慮到隨時可能發生的意外,例如光纜挖斷、機房失火等,每一次宕機都可能會造成巨大的損失。另外,如果系統設計得不夠健壯,對其公升級和維護時就要停止服務。頻繁的系統公升級同樣會對系統可用性產生很大的影響。
雖然隨時隨處可用的難度非常大,但網際網路應用會盡量縮短宕機時間。通常使用 3~5 個 9(3 個 9 即 99.9%,4 個 9 即 99.99%,5 個 9 即 99.999%)作為衡量系統可用性的指標,表示系統在 1 年的執行過程中可以正常使用的時間與總執行時間的比值,下面分別計算 3~5 個 9 指標下的全年宕機時間,感受一下它們的可靠性差異:
3 個 9:(1 - 99.9%) x 365 x 24 = 8.76 小時流量突增分為可預期型徒增和不可預期型徒增,像**活動、有計畫的熱點事件等引起的流量突增屬於前者,可以通過提前擴容、預案演練等方式精心為這些流量突增準備應對方案。而意料之外的熱點事件(如**)往往事發突然,系統來不及準備應對措施,因此若系統本身的可用性、彈性等非功能需求十分成熟,便可以在某種程度上應對這種突增。很多網際網路公司都是跨界巨頭,我們知道,即使不跨界,在單一領域編織乙個大規模的成型業務系統也並不簡單。4 個 9:(1 - 99.99&) x 365 x 24 = 52.6 分鐘
4 個 9:(1 - 99.999&) x 365 x 24 = 5.26 分鐘
上圖是我從 processon 模板裡隨便找的一張關於電商平台應用服務的架構圖,可以看到裡面交織了各種各樣的業務,當行業的擴張速度超出預計的增長的時候,對底層支撐的考驗要求也越來越高。
0 2什麼是微服務
需要注意,「微服務」與「微服務架構」有著本質的區別:「微服務」強調的是服務的大小,它關注的是某乙個點。而「微服務架構」則是一種架構思想,需要從整體上對軟體系統進行通盤的考慮。要了解微服務是如何誕生的,我們有必要對架構的演變過程有一定的了解。上面已經對架構主要面臨的問題進行了闡述,下面我們來了解一下架構是如何一步一步公升級並轉化到「雲」上的。單體架構比較初級,典型的**架構,前端(web/手機端)+中間業務邏輯層+資料庫層。這是一種典型的 mvc 框架的應用。
單體架構的應用比較容易部署、測試, 在專案的初期,單體應用可以很好地執行。然而,隨著需求的不斷增加, 越來越多的人加入開發團隊,**庫也在飛速地膨脹。慢慢地,單體應用變得越來越臃腫,可維護性、靈活性逐漸降低,維護成本越來越高。下面是單體架構應用的一些缺點:中級架構,分布式應用,中間層分布式 + 資料庫分布式,是單體架構的併發擴充套件,將乙個大的系統劃分為多個業務模組,業務模組分別部署在不同的伺服器上,各個業務模組之間通過介面進行資料互動。資料庫也大量採用分布式資料庫,如 redis、elasticsearch、solor 等。通過 lvs/nginx **應用,將使用者請求均衡的負載到不同的伺服器上。
缺點:系統之間的互動要使用遠端通訊,介面開發增大工作量,但是利大於弊。微服務架構,主要是中間層分解,將系統拆分成很多小應用(微服務),微服務可以部署在不同的伺服器上,也可以部署在相同的伺服器不同的容器上。當應用的故障不會影響到其他應用,單應用的負載也不會影響到其他應用,其代表框架有 spring cloud、dubbo 等。
微服務雖然有很多吸引人的地方,但它並不是免費的午餐,使用它是有代價的。使用微服務架構面臨著挑戰。當我們還在容器的浪潮中前行時,已經有一些革命先驅悄然布局另外乙個雲計算戰場:serverless 架構。
serverless 架構能夠讓開發者在構建應用的過程中無需關注計算資源的獲取和運維,由平台來按需分配計算資源並保證應用執行的sla(服務等級協議),按照呼叫次數進行計費,有效的節省應用成本。通過上面簡單的介紹,我們了解了我們的架構是如何一步一步過渡到微服務的,為了解決單體應用的諸多問題,我們提出
了分布式的概念,通過將單體應用拆分成諸多單獨的模組來降低耦合以及提公升系統效能,其實這裡就
涉及到乙個服務化的概念,而微服務與之不同的是:
儘管微服務和微服務架構有所不同,但我們通常也可以簡單理解為:微服務是一種軟體架構風格,它是以專注於單一責任與功能的小型功能區塊為基礎,利用模組化的方式組合出複雜的大型應用程式,各功能區塊使用與語言無關的 api(例如 rest)集相互通訊,且每個服務可以被單獨部署,它具備以下三個核心特點:
就知道你在看!
什麼是DFT,DFT是什麼意思
dft 數位電路 fpga asic 設計入門之可測試設計與可測性分析,離散傅利葉變換,dft direct fouriet transformer 可測試性技術 design for testability dft 就是試圖增加電路中訊號的可控制性和可觀測性,以便及時經濟地測試晶元是否存在物理缺陷...
網路收斂是什麼意思 收斂是什麼意思(什麼是收斂性)
收斂是什麼意思 什麼是收斂性 有的茶友品茶時說 這個茶收斂性好。這時就有很多人矇圈了,什麼叫 收斂性 其標準是怎麼定義的?其實 收斂性 這三字用的人多,懂得的人少。下面我們就聊一聊普洱茶的 收斂性 收斂性 跟茶葉的苦 澀有關,它是苦 澀味轉成回甘之間的感知時間的強度。收斂性越強的茶,它的苦味和澀味在...
什麼是SAAS 是什麼 什麼叫 是什麼意思
什麼是saas saas是software as a service 軟體即服務 的簡稱,它是一種通過internet提供軟體的模式,使用者不用再購買軟體,而改用向提供商租用基於web的軟體,來管理企業經營活動,且無需對軟體進行維護,服務提供商會全權管理和維護軟體,對於許多小型企業來說,saas是採...