1. 程式人生 > 其它 >第29章 網站架構演變過程

第29章 網站架構演變過程

每日一句

Human beings are designed for many things, but loneliness isn't one of them.
人類能應對許多問題,但孤獨並不在其中。

概述

本章節中主要介紹了大致的網站架構演變過程。

傳統架構(單點應用)-> 分散式架構(以專案進行拆分)-> SOA架構(面向服務架構)-> 微服務架構

傳統架構

傳統的SSH架構,分為三層架構 web控制層、業務邏輯層、資料庫訪問層。

傳統架構也就是單點應用,就是大家在剛開始初學JavaEE技術的時候SSH架構或者SSM架構,業務沒有進行拆分,都寫同一個專案工程裡面,一般是適合於個人或者是小團隊開發。

這種架構模式,一旦有一個模組導致服務不可用,可能會影響整個專案。

分散式架構

分散式架構基於傳統架構演變過來,將傳統的單體專案以專案模組進行拆分,比如拆分為會員專案、訂單專案、支付專案、優惠券專案等,從而降低耦合度,這種專案架構模式慢慢開始適合於網際網路公司規模人數開發。

分散式架構與傳統架構區別:

  1. 專案粒度分的更加細

  2. 慢慢開始適合於網際網路公司開發,耦合度降低

Maven 聚合專案是不是分散式專案?

答案:不一定,最終取決於打的包:jar 或者 war
解釋:可以將傳統的專案,以Maven聚合方式分為3個專案libaba_web、ibaba_service、libaba_dao最終打成一個包。

SOA 架構

SOA架構代表面向與服務架構,俗稱服務化,通俗的理解為面向與業務邏輯層開發,將共同的業務邏輯抽取出來形成一個服務,提供給其他服務介面進行呼叫,服務與服務之間呼叫使用 rpc 遠端技術。

服務概念:將共同的業務邏輯進行拆分,拆分成獨立的一個專案進行部署,沒有檢視層。

SOA 架構特點:

  1. SOA架構中通常使用XML方式實現通訊,在高併發情況下XML比較冗餘會帶來極大的影響,所以最後微服務架構中採用JSON替代xml方式

  2. SOA架構的底層實現通過WebService和ESB(xml與中介軟體混合物),Web Service技術是SOA服務化的一種實現方式,WebService底層採用 soap 協議進行通訊,soap協議就是Http或者是Https通道傳輸XML資料實現的協議

微服務架構

這個是目前主流的架構。

微服務架構產生的原因

微服務架構基於SOA架構演變過來的

在傳統的WebService架構中有如下問題:

  1. 依賴中心化服務發現機制

  2. 使用Soap通訊協議,通常使用XML格式來序列化通訊資料,xml格式非常喜歡重,比較佔寬頻傳輸。

  3. 服務化管理和治理設施不完善

什麼是微服務?

微服務架是從SOA架構演變過來,比SOA架構粒度會更加精細,讓專業的人去做專業的事情(專注),目的提高效率,每個服務於服務之間互不影響,微服務架構中,每個服務必須獨立部署,互不影響,微服務架構更加體現輕巧、輕量級,是適合於網際網路公司敏捷開發。

微服務架構特徵

微服務架構倡導應用程式設計程多個獨立、可配置、可執行和可微服務的子服務。

服務與服務通訊協議採用Http協議,使用restful風格API形式來進行通訊,資料交換格式輕量級json格式通訊,整個傳輸過程中,採用二進位制,所以http協議可以跨語言平臺,並且可以和其他不同的語言進行相互的通訊,所以很多開放平臺都採用http協議介面。

微服務架構如何拆分

1.微服務把每一個職責單一功能存放在獨立的服務中

2.每個服務執行在單獨的程序中

3.每個服務有自己獨立資料庫儲存、實際上有自己獨立的快取、資料庫、訊息佇列等資源。

微服務架構與SOA架構區別

1.微服務架構基於 SOA架構 演變過來,繼承 SOA架構的優點,在微服務架構中去除 SOA 架構中的 ESB 訊息匯流排,採用 http+json(restful)進行傳輸。

2.微服務架構比 SOA 架構粒度會更加精細,每個服務於服務之間互不影響。服務架構中,每個服務必須獨立部署,微服務架構更加輕巧,輕量級。

3.SOA 架構中可能資料庫儲存會發生共享,微服務強調獨每個服務都是單獨資料庫,保證每個服務於服務之間互不影響。

美文佳句

鸚鵡的叫聲十分動聽,“唧唧,喳喳”,歡快極了,它們時不時還會學你說話呢!每當太陽升起時,它們就會此起彼伏地叫起來,叫聲十分悅耳,好像在說:“小主人,快起床了!”

到了晚上,卡菲安靜地睡覺了,睡覺時它會捲成一個又小又圓的球樣,非常可愛。它還喜歡和小夥伴挨在一起睡覺,應該是覺得這樣暖和些吧。

卡菲真可愛。我喜歡我家的小鸚鵡。

你好,我是yltrcc,日常分享技術點滴,歡迎關注我的公眾號:ylcoder