摘要:使用緩存兩個前提條件數據訪問熱點不均衡數據某時段內有效,不會很快過期反向代理本地緩存分布式緩存異步旨在系統解耦。
大型網站技術架構-入門梳理
標簽 : 架構設計
[TOC]
羅列了大型網站架構涉及到的概念,附上了簡單說明
前言本文是對《大型網站架構設計》(李智慧 著)一書的梳理,類似文字版的“思維導圖”
全文主要圍繞“性能,可用性,伸縮性,擴展性,安全”這五個要素
性能,可用性,伸縮性這幾個要素基本都涉及到應用服務器,緩存服務器,存儲服務器這幾個方面
概述三個緯度:演化、模式、要素
五個要素: 性能,可用性,伸縮性,擴展性,安全
演化歷程圖例可參考 大型網站架構演化歷程:
初始階段的網站架構:一臺服務器,上面同時擁有應用程序,數據庫,文件,等所有資源。例如 LAMP 架構
應用和數據服務分離:三臺服務器(硬件資源各不相同),分別是應用服務器,文件服務器和數據庫服務器
使用緩存改善網站性能:分為兩種,緩存在應用服務器上的本地緩存和緩存在專門的分布式緩存服務器的遠程緩存
使用應用服務器集群改善網站并發處理能力:通過負載均衡調度服務器來將訪問請求分發到應用服務器集群中的任何一臺機器
數據庫讀寫分離:數據庫采用主從熱備,應用服務器在寫數據時訪問主數據庫,主數據庫通過主從復制機制將數據更新同步到從數據庫。應用服務器使用專門的數據訪問模塊從而對應用透明
使用反向代理和 CDN 加速網站響應:這兩者基本原理都是緩存。反向代理部署在網站的中心機房,CDN 部署在網絡提供商的機房
使用分布式文件系統和分布式數據庫系統:數據庫拆分的最后手段,更常用的是業務分庫
使用 NoSQL 和搜索引擎:對可伸縮的分布式有更好的支持
業務拆分:將整個網站業務拆分成不同的應用,每個應用獨立部署維護,應用之間通過超鏈接建立聯系/消息隊列進行數據分發/訪問同一數據存儲系統
分布式服務:公共業務提取出來獨立部署
演化的價值觀
大型網站架構的核心價值是隨網站所需靈活應對
驅動大型網站技術發展的主要力量是網站的業務發展
誤區
一味追隨大公司的解決方案
為了技術而技術
企圖用技術解決所有問題
架構模式模式的關鍵在于模式的可重復性
分層:橫向切分
分割:縱向切分
分布式:分層和分割的主要目的是為了切分后的模塊便于分布式部署。常用方案:
分布式應用和服務
分布式靜態資源
分布式數據和存儲
分布式計算
分布式配置,分布式鎖,分布式文件,等等
集群:多臺服務器部署相同的應用構成一個集群,通過負載均衡設備共同對外提供服務
緩存:將數據放距離計算最近的位置加快處理速度,改善性能第一手段,可以加快訪問速度,減小后端負載壓力。使用緩存 兩個前提條件 :1.數據訪問熱點不均衡;2.數據某時段內有效,不會很快過期
CDN
反向代理
本地緩存
分布式緩存
異步:旨在系統解耦。異步架構是典型的消費者生產者模式,特性如下:
提高系統可用性
加快網站訪問速度
消除并發訪問高峰
冗余:實現高可用。數據庫的冷備份和熱備份
自動化:包括發布過程自動化,自動化代碼管理,自動化測試,自動化安全檢測,自動化部署,自動化監控,自動化報警,自動化失效轉移,自動化失效恢復,自動化降級,自動化分配資源
安全:密碼,手機校驗碼,加密,驗證碼,過濾,風險控制
核心要素架構是“最高層次的規劃,難以改變的規定”。主要關注五個要素:
性能
可用性(Availability)
伸縮性(Scalability)
擴展性(Extensibility)
安全性
架構下面依次對這五個要素進行歸納
高性能性能的測試指標主要有:
響應時間:指應用執行一個操作需要的時間
并發數:指系統能夠同時處理請求的數目
吞吐量:指單位時間內系統處理的請求數量
性能計數器:描述服務器或者操作系統性能的一些數據指標
性能測試方法:
性能測試
負載測試
壓力測試
穩定性測試
性能優化,根據網站分層架構,可以分為三大類:
Web 前端性能優化
瀏覽器訪問優化
減少 http 請求
使用瀏覽器緩存
啟用壓縮
CSS 放在頁面最上面,JavaScript 放在頁面最下面
減少 Cookie 傳輸
CDN 加速:本質是一個緩存,一般緩存靜態資源
反向代理
保護網站安全
通過配置緩存功能加速 Web 請求
實現負載均衡
應用服務器性能優化:主要手段有 緩存、集群、異步
分布式緩存(網站性能優化第一定律:優化考慮使用緩存優化性能)
異步操作(消息隊列,削峰作用)
使用集群
代碼優化
多線程(設計為無狀態,使用局部對象,并發訪問資源使用鎖)
資源復用(單例,對象池)
數據結構
垃圾回收
存儲服務器性能優化
機械硬盤 vs. 固態硬盤
B+ 樹 vs. LSM 樹
RAID vs. HDFS
高可用高可用的網站架構:目的是保證服務器硬件故障時服務依然可用、數據依然保存并能夠被訪問,主要手段數據和服務的冗余備份及失效轉移
高可用的應用:顯著特點是應用的無狀態性
通過負載均衡進行無狀態服務的失效轉移
應用服務器集群的 Session 管理
Session 復制
Session 綁定
利用 Cookie 記錄 Session
Session 服務器
高可用的服務:無狀態的服務,可使用類似負載均衡的失效轉移策略,此外還有如下策略
分級管理
超時設置
異步調用
服務降級
冪等性設計
高可用的數據:主要手段是數據備份和失效轉移機制
CAP 原理
數據一致性(Consisitency)
數據可用性(Availibility)
分區耐受性(Partition Tolerance)
數據備份
冷備:缺點是不能保證數據最終一致和數據可用性
熱備:分為異步熱備和同步熱備
失效轉移:由以下三部分組成
失效確認
訪問轉移
數據恢復
高可用網站的軟件質量保證
網站發布
自動化測試
預發布驗證
代碼控制
主干開發、分支發布
分支開發、主干發布
自動化發布
灰度發布
網站運行監控
監控數據采集
用戶行為日志采集(服務器端和客戶端)
服務器性能監控
運行數據報告
監控管理
警報系統
失效轉移
自動優雅降級
伸縮性大型網站的“大型”是指:
用戶層面:大量用戶及大量訪問
功能方面:功能龐雜,產品眾多
技術層面:網站需要部署大量的服務器
伸縮性的分為如下幾個方面
網站架構的伸縮性設計
不同功能進行物理分離實現伸縮
縱向分離(分層后分離)
橫向分離(業務分割后分離)
單一功能通過集群規模實現伸縮
應用服務器集群的伸縮性設計
HTTP 重定向負載均衡
DNS 域名解析負載均衡
反向代理負載均衡(在 HTTP 協議層面,應用層負載均衡)
IP 負載均衡(在內核進程完成數據分發)
數據鏈路層負載均衡(數據鏈路層修改 mac 地址,三角傳輸模式,LVS)
負載均衡算法
輪詢(Round Robin, RR)
加權輪詢(Weighted Round Robin, WRR)
隨機(Random)
最少鏈接(Least Connections)
源地址散列(Source Hashing)
分布式緩存集群的伸縮性設計
Memcached 分布式緩存集群的訪問模型
Memcached 客戶端(包括 API,路由算法,服務器列表,通信模塊)
Memcached 服務器集群
Memcached 分布式緩存集群的伸縮性挑戰
分布式緩存的一致性 Hash 算法(一致性 Hash 環,虛擬層)
數據存儲服務集群的伸縮性設計
關系數據庫集群的伸縮性設計
NoSQL 數據庫的伸縮性設計
可擴展系統架構設計層面的“開閉原則”
構建可擴展的網站架構
利用分布式消息隊列降低耦合性
事件驅動架構(Event Driven Architecture)
分布式消息隊列
利用分布式服務打造可復用的業務平臺
Web Service 與企業級分布式服務
大型網站分布式服務的特點
分布式服務框架設計(Thrift, Dubbo)
可擴展的數據結構(如 ColumnFamily 設計)
利用開放平臺建設網站生態圈
安全XSS 攻擊和 SQL 注入攻擊是構成網站應用攻擊最主要的兩種手段,此外還包括 CSRF,Session 劫持等手段。
攻擊與防御
XSS 攻擊:跨站點腳本攻擊(Cross Site Script)
反射型
持久型
XSS 防御手段
消毒(即對某些 html 危險字符轉義)
HttpOnly
注入攻擊
SQL 注入攻擊
OS 注入攻擊
注入防御
避免被猜到數據庫表結構信息
消毒
參數綁定
CSRF 攻擊:跨站點請求偽造(Cross Site Request Forgery)
CSRF 防御:主要手段是識別請求者身份
表單 Token
驗證碼
Referer Check
其他攻擊和漏洞
Error Code
HTML 注釋
文件上傳
路徑遍歷
Web 應用防火墻(ModSecurity)
網站安全漏洞掃描
信息加密技術及密鑰安全管理
單向散列加密:不同輸入長度的信息通過散列計算得到固定長度的輸出
不可逆,非明文
可加鹽(salt)增加安全性
輸入的微小變化會導致輸出完全不同
對稱加密:加密和解密使用同一個密鑰
非對稱加密
信息傳輸:公鑰加密,私鑰解密
數字簽名:私鑰加密,公鑰解密
密鑰安全管理:信息安全傳輸是靠密鑰保證的,改善手段有:
把密鑰和算法放在一個獨立的服務器上
將加解密算法放在應用系統中,密鑰放在獨立服務器
信息過濾與反垃圾
文本匹配
分類算法
黑名單
作者@brianway 更多文章:個人網站 | CSDN | oschina
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/61818.html
摘要:消息隊列技術介紹后端掘金一消息隊列概述消息隊列中間件是分布式系統中重要的組件,主要解決應用耦合異步消息流量削鋒等問題。的內存優化后端掘金聲明本文內容來自開發與運維一書第八章,如轉載請聲明。 消息隊列技術介紹 - 后端 - 掘金一、 消息隊列概述 消息隊列中間件是分布式系統中重要的組件,主要解決應用耦合、異步消息、流量削鋒等問題。實現高性能、高可用、可伸縮和最終一致性架構。是大型分布式系...
摘要:表示的是兩個,當其中任意一個計算完并發編程之是線程安全并且高效的,在并發編程中經常可見它的使用,在開始分析它的高并發實現機制前,先講講廢話,看看它是如何被引入的。電商秒殺和搶購,是兩個比較典型的互聯網高并發場景。 干貨:深度剖析分布式搜索引擎設計 分布式,高可用,和機器學習一樣,最近幾年被提及得最多的名詞,聽名字多牛逼,來,我們一步一步來擊破前兩個名詞,今天我們首先來說說分布式。 探究...
閱讀 511·2023-04-26 00:33
閱讀 3538·2021-11-24 09:39
閱讀 2897·2021-09-22 15:34
閱讀 2316·2019-08-23 18:07
閱讀 2912·2019-08-23 18:04
閱讀 3694·2019-08-23 16:06
閱讀 2893·2019-08-23 15:27
閱讀 1614·2019-08-23 14:32