Chrome瀏覽器架構

通用瀏覽器架構

它可以是一個具有許多不同線程的進程,也可以是具有幾個通過IPC進行通信的多個線程的進程。

一個具有許多不同線程的進程

                        image.png

通過IPC進行通信的多個線程的進程

                            image.png

注意

這些不同的體系結構是實現細節。沒有關於如何構建網絡瀏覽器的標準規範。一種瀏覽器的方法可能與另一種完全不同

 

Chrome瀏覽器架構

 Chrome官網的架構圖(18年)

                        image.png

 chrome最新的架構圖(19年)

image.png

多進程模型優缺點

優點

  • 穩定性,一個頁面崩潰不會影響到其他頁面,因爲使用了不同渲染進程
  • 安全性和沙箱處理,瀏覽器可以從某些功能中沙漏某些進程。例如,Chrome瀏覽器限制了處理諸如渲染器進程之類的任意用戶輸入的進程的任意文件訪問。

缺點

  • 更高的資源佔用。因爲每個進程都會包含公共基礎結構的副本(例如V8,這是Chrome的JavaScript引擎),這就意味着瀏覽器會消耗更多的內存資源。
  • 更復雜的體系架構。瀏覽器各模塊之間耦合性高、擴展性差等問題

 

面向服務的架構

爲了解決之前架構帶來的一系列問題,早在 2016 年,Chrome 官方團隊使用“面向服務的架構”(Services Oriented Architecture,簡稱 SOA)的思想設計了新的 Chrome 架構。原來的各種模塊會被重構成獨立的服務(Service),訪問服務(Service)必須使用定義好的接口,通過 IPC 來通信,每個服務(Service)都可以在獨立的進程中運行,並且可以輕鬆拆分爲不同的進程或聚合爲一個進程。當Chrome在功能強大的硬件上運行時,它可能會將每個服務拆分爲不同的進程以提供更高的穩定性,但是如果是在資源受限的設備上,Chrome會將服務整合到一個進程中以節省內存。

官網服務化架構圖(18年)

image.pngChrome“面向服務的架構”的進程模型圖(最新)

image.png

Chrome“面向服務的架構”的進程模型圖(在資源受限的設備)image.png

Chrome的進程

主要進程

瀏覽器進程,渲染進程,GPU進程,網絡進程,插件進程

 

  • 瀏覽器進程

主要負責界面顯示、用戶交互、子進程管理,同時提供存儲等功能。控制應用程序的“ chrome”部分,包括        地址欄,書籤,後退和前進按鈕, 還處理Web瀏覽器的隱形,特權部分,例如網絡請求和文件訪問。

  • 渲染進程

核心任務是將 HTML、CSS 和 JavaScript 轉換爲用戶可以與之交互的網頁,排版引擎 Blink 和 JavaScript 引擎 V8 都是運行在該進程中,默認情況下,Chrome 會爲每個 Tab 標籤創建一個渲染進程。出於安全考慮,渲染進程都是運行在沙箱模式下。

  • GPU 進程

其實,Chrome 剛開始發佈的時候是沒有 GPU 進程的。而 GPU 的使用初衷是爲了實現 3D CSS 的效果是        隨後網頁、Chrome 的 UI 界面都選擇採用 GPU 來繪製,這使得 GPU 成爲瀏覽器普遍的需求。最後,            Chrome 在其多進程架構上也引入了 GPU 進程。

  • 網絡進程

主要負責頁面的網絡資源加載,之前是作爲一個模塊運行在瀏覽器進程裏面的,直至最近才獨立出來,成爲        一個單獨的進程。

  • 插件進程

主要是負責插件的運行,因插件易崩潰,所以需要通過插件進程來隔離,以保證插件進程崩潰不會對瀏覽器        和頁面造成影響。

  • utility進程

有時候瀏覽器主進程需要做一些“危險”的事情,比如圖片解碼、文件解壓縮。如果這些“危險”的操作發生了失敗,會導致整個主進程發生異常崩潰,這是我們不願意看到的。因此Chromium設計出了一個utility進程的機制。主進程臨時需要做一些不方便的任務的情況下,可以啓動一個utility進程來代替主進程執行,主進程與utility進程之間通過IPC消息來通信。

如果當前在資源充足的環境下還會有如下其他進程

  • UI進程
  • 存儲進程
  • 設備進程
  • Audio進程
  • Video進程
  • Profile進程
  • ........

發展

鑑於目前架構的複雜性,要完整過渡到面向服務架構,估計還需要好幾年時間才能完成。不過 Chrome 開發是一個漸進的過程,新的特性會一點點加入進來,這也意味着我們隨時能看到 Chrome 新的變化。

注意

⚠️當前最新Chrome瀏覽器已經在面向服務的架構上了,我們可以打開Chrome對的任務管理器看一下

image.png

參考鏈接

極客時間瀏覽器工作原理與時間

Chrome官網 https://developers.google.com/web/updates/2018/09/inside-browser-part1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章