全球資訊網(World Wide Web, WWW)可視為一個由數百萬台客戶端與伺服器組成的巨型分散式系統,用來存取彼此連結的文件:伺服器維護文件集合,客戶端則提供簡單易用的介面讓使用者呈現與存取這些文件。

Web 起源於歐洲粒子物理實驗室 CERN 的一項計畫,目的是讓地理上分散的大批研究人員透過簡單的超文本(hypertext)系統存取共享文件。文件之間互相連結,使得整合不同計畫的文件不需要集中式的修改。Web 的普及則要歸功於圖形化介面的出現——尤其是 Mosaic 瀏覽器:文件從伺服器抓取、傳送到客戶端、呈現在螢幕上,對使用者而言,本地文件與世界另一端的文件在概念上毫無差別。就這層意義而言,分散是透明的(transparent)。

自 1994 年起,Web 的發展由 CERN 與 M.I.T. 合作成立的全球資訊網協會(World Wide Web Consortium, W3C)主導,負責協定標準化、改善互通性與擴充 Web 的能力;同時也有許多發展發生在協會之外,未必帶來理想的相容性。如今的 Web 早已不只是單純的文件系統——隨著 Web 服務(Web services)的引入,一個以「服務」而非僅僅「文件」為中心的巨型分散式系統正在成形:服務可以被任何找得到用途的使用者或機器發現、組合與使用。

本章許多概念都建立在本書前半部討論過的原理之上;也會看到,許多地方仍有很大的改進空間。

本章重點#

  • 架構:從簡單的兩層式客戶端—伺服器,演進到 CGI、伺服器端腳本與三層式架構;Web 服務以 UDDI、WSDL、SOAP 等標準為核心,並需要協調與組合機制。
  • 行程:瀏覽器由瀏覽器引擎與渲染引擎構成、以外掛(plug-in)擴充;Apache 以掛鉤(hook)與模組達成高度可擴充性;伺服器叢集靠前端交換器或 DNS 分散負載。
  • 通訊:傳統 Web 用 HTTP(無狀態、基於 TCP、持久連線),Web 服務用建立在 XML 上的 SOAP。
  • 命名:以 URI(URL 與 URN)作為單一命名系統。
  • 一致性與複製:Web 代理快取、內容遞送網路(CDN)與 Web 應用程式複製,是 Web 效能與可用性的關鍵;不同解法必須並存才能取得最佳效能。
  • 容錯與安全:大多沿用其他分散式系統早已使用的標準技術——複製、快取、冗餘,以及以 TLS/SSL 建立安全通道。