大型網(wǎng)站架構(gòu)筆記

大型網(wǎng)站架構(gòu)

網(wǎng)站架構(gòu)包括:前端架構(gòu)+應(yīng)用層架構(gòu)+服務(wù)層架構(gòu)+存儲層架構(gòu)+后臺架構(gòu)+數(shù)據(jù)中心機(jī)房架構(gòu)+安全架構(gòu)+數(shù)據(jù)采集與監(jiān)控联四。

前端架構(gòu)

  • 瀏覽器優(yōu)化技術(shù)
    并不是優(yōu)化瀏覽器辩撑,而是通過優(yōu)化響應(yīng)頁面篮奄,加快瀏覽器頁面的加載和顯示黍檩,常用的有頁面緩存估蹄、合并HTTP 減少請求次數(shù)颂碧、使用頁面壓縮等荠列。
  • CDN
    內(nèi)容分發(fā)網(wǎng)絡(luò),部署在網(wǎng)絡(luò)運(yùn)營商機(jī)房载城,通過將靜態(tài)頁面內(nèi)容分發(fā)到離用戶最近的CDN 服務(wù)器肌似,使用戶可以通過最短路徑獲取內(nèi)容。
  • 動(dòng)靜分離诉瓦,靜態(tài)資源獨(dú)立部署
    靜態(tài)資源川队,如JS,CSS 等文件部署在專門的服務(wù)器集群上力细,和Web 應(yīng)用動(dòng)態(tài)內(nèi)容服務(wù)分離,并使用專門的(二級)域名固额。
  • 圖片服務(wù)
    圖片不是指網(wǎng)站Logo 按鈕圖標(biāo)等眠蚂,這些文件屬于上面提到的靜態(tài)資源,應(yīng)該和JS CSS 部署在一起斗躏。這里的圖片指用戶上傳的圖片逝慧,如產(chǎn)品圖片、用戶頭像等啄糙,圖片服務(wù)同樣使用獨(dú)立部署的圖片服務(wù)器集群笛臣,并使用獨(dú)立(二級)域名。
  • 反向代理
    部署在網(wǎng)站機(jī)房迈套,在應(yīng)用服務(wù)器捐祠、靜態(tài)資源服務(wù)器、圖片服務(wù)器之前桑李,提供頁面緩存服務(wù)踱蛀。
  • DNS
    域名服務(wù),將域名解析成IP 地址贵白,利用DNS 可以實(shí)現(xiàn)DNS 負(fù)載均衡率拒,配置CDN也需要修改DNS使域名解析后指向CDN 服務(wù)器。

應(yīng)用層架構(gòu)

應(yīng)用層是處理網(wǎng)站主要業(yè)務(wù)邏輯的地方禁荒。

  • 開發(fā)框架
  • 頁面渲染
    將分別開發(fā)維護(hù)的動(dòng)態(tài)內(nèi)容和靜態(tài)頁面模板集成起來猬膨,組合成最終顯示給用戶的完整頁面。
  • 負(fù)載均衡
    將多臺應(yīng)用服務(wù)器組成一個(gè)集群呛伴,通過負(fù)載均衡技術(shù)將用戶請求分發(fā)到不同的服務(wù)器上勃痴,以應(yīng)對大量用戶同時(shí)訪問時(shí)產(chǎn)生的高并發(fā)負(fù)載壓力。
  • Session 管理
    為了實(shí)現(xiàn)高可用的應(yīng)用服務(wù)器集群热康,應(yīng)用服務(wù)器通常設(shè)計(jì)為無狀態(tài)沛申,不保存用戶請求上下文信息,但是網(wǎng)站業(yè)務(wù)通常需要保持用戶會話信息姐军,需要專門的.機(jī)制管理Session
    使集群內(nèi)甚至跨集群的應(yīng)用服務(wù)器可以共享Session
  • 動(dòng)態(tài)頁面靜態(tài)化
    對于訪問量特別大而更新又不很頻繁的動(dòng)態(tài)頁面铁材,可以將其靜態(tài)化,即生成一個(gè)靜態(tài)頁面奕锌,利用靜態(tài)頁面的優(yōu)化手段加速用戶訪問著觉,如反向代理、CDN惊暴、 瀏覽器緩存等饼丘。
  • 業(yè)務(wù)拆分
    將復(fù)雜而又龐大的業(yè)務(wù)拆分開來,形成多個(gè)規(guī)模較小的產(chǎn)品缴守,獨(dú)立開發(fā)葬毫、部署镇辉、維護(hù),除了降低系統(tǒng)耦合度贴捡,也便于數(shù)據(jù)庫業(yè)務(wù)分庫忽肛。按業(yè)務(wù)對關(guān)系數(shù)據(jù)庫進(jìn)行拆分,技術(shù)難度相對較小烂斋,而效果又相對較好屹逛。
  • 虛擬化服務(wù)器
    將一臺物理服務(wù)器虛擬化成多臺虛擬服務(wù)器,對于并發(fā)訪問較低的業(yè)務(wù)汛骂,更容易用較少的資源構(gòu)建高可用的應(yīng)用服務(wù)器集群罕模。

服務(wù)層架構(gòu)

提供基礎(chǔ)服務(wù),供應(yīng)用層調(diào)用帘瞭,完成網(wǎng)站業(yè)務(wù)淑掌。

  • 分布式消息
    利用消息隊(duì)列機(jī)制,實(shí)現(xiàn)業(yè)務(wù)和業(yè)務(wù)蝶念、業(yè)務(wù)和服務(wù)之間的異步消息發(fā)送及低耦合的業(yè)務(wù)關(guān)系抛腕。
  • 分布式服務(wù)
    提供高性能、低耦合媒殉、易復(fù)用担敌、易管理的分布式服務(wù),在網(wǎng)站實(shí)現(xiàn)面向服務(wù)架構(gòu)SOA
  • 分布式緩存
    通過可伸縮的服務(wù)器集群提供大規(guī)模熱點(diǎn)數(shù)據(jù)的緩存服務(wù)廷蓉,是網(wǎng)站性能優(yōu)化的重要手段全封。
  • 分布式配置
    系統(tǒng)運(yùn)行需要配置許多參數(shù),如果這些參數(shù)需要修改桃犬,比如分布式緩存集群加入新的緩存服務(wù)器刹悴,需要修改應(yīng)用程序客戶端的緩存服務(wù)器列表配置,并重啟應(yīng)用程序服務(wù)器。分布式配置在系統(tǒng)運(yùn)行期提供配置動(dòng)態(tài)推送服務(wù)寺酪,將配置修改實(shí)時(shí)推送到應(yīng)用系統(tǒng),無需重啟服務(wù)器。

存儲層架構(gòu)

  • 分布式文件
    網(wǎng)站在線業(yè)務(wù)需要存儲的文件大部分都是圖片、網(wǎng)頁藻雪、視頻等比較小的文件,但是這些文件的數(shù)量非常龐大贩毕,而且通常都在持續(xù)增加刺彩,需要伸縮性設(shè)計(jì)比較好的分布式文件系統(tǒng)。

  • 關(guān)系數(shù)據(jù)庫
    大部分網(wǎng)站的主要業(yè)務(wù)是基于關(guān)系數(shù)據(jù)庫開發(fā)的躯砰,但是關(guān)系數(shù)據(jù)庫對集群伸縮性的支持比較差每币。通過在應(yīng)用程序的數(shù)據(jù)訪問層增加數(shù)據(jù)庫訪問路由功能,根據(jù)業(yè)務(wù)配置將數(shù)據(jù)庫訪問路由到不同的物理數(shù)據(jù)庫上琢歇,可實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫的分布式訪問

  • NoSQL 數(shù)據(jù)庫
    目前各種NoSQL 數(shù)據(jù)庫層出不窮兰怠,在內(nèi)存管理梦鉴、數(shù)據(jù)模型、集群分布式管理等方面各有優(yōu)勢揭保,不過從社區(qū)活躍性角度看肥橙,HBase 無疑是目前最好的。

  • 數(shù)據(jù)同步
    在支持全球范圍內(nèi)數(shù)據(jù)共享的分布式數(shù)據(jù)庫技術(shù)成熟之前秸侣,擁有多個(gè)數(shù)據(jù)中心的網(wǎng)站必須在多個(gè)數(shù)據(jù)中心之間進(jìn)行數(shù)據(jù)同步存筏,以保證每個(gè)數(shù)據(jù)中心都擁有完整的數(shù)據(jù)。在實(shí)踐中味榛,為了減輕數(shù)據(jù)庫壓力椭坚,將數(shù)據(jù)庫的事務(wù)日志(或者NoSQL 的寫操作Log) 同步到其他數(shù)據(jù)中心,根據(jù)Log 進(jìn)行數(shù)據(jù)重演搏色,實(shí)現(xiàn)數(shù)據(jù)同步善茎。

后臺架構(gòu)

網(wǎng)站應(yīng)用中,除了要處理用戶的實(shí)時(shí)訪問請求外频轿,還有一些后臺非實(shí)時(shí)數(shù)據(jù)分析要處理垂涯。

  • 搜索引擎
    即使是網(wǎng)站內(nèi)部的搜索引擎,也需要進(jìn)行數(shù)據(jù)增量更新及全量更新略吨、構(gòu)建索引等集币。
    這些操作通過后臺系統(tǒng)定時(shí)執(zhí)行。
  • 數(shù)據(jù)倉庫
    根據(jù)離線數(shù)據(jù)翠忠,提供數(shù)據(jù)分析與數(shù)據(jù)挖掘服務(wù)鞠苟。
  • 推薦系統(tǒng)
    社交網(wǎng)站及購物網(wǎng)站通過挖掘人和人之間的關(guān)系,人和商品之間的關(guān)系秽之,發(fā)掘潛在的人際關(guān)系和購物興趣当娱,為用戶提供個(gè)性化推薦服務(wù)。

數(shù)據(jù)采集與監(jiān)控

監(jiān)控網(wǎng)站訪問情況與系統(tǒng)運(yùn)行情況考榨,為網(wǎng)站運(yùn)營決策和運(yùn)維管理提供支持保障跨细。

  • 瀏覽器數(shù)據(jù)采集
    通過在網(wǎng)站頁面中嵌入JS 腳本釆集用戶瀏覽器環(huán)境與操作記錄,分析用戶行為河质。
  • 服務(wù)器業(yè)務(wù)數(shù)據(jù)采集
    服務(wù)器業(yè)務(wù)數(shù)據(jù)包括兩種冀惭,一種是采集在服務(wù)器端記錄的用戶請求操作日志;一種是釆集應(yīng)用程序運(yùn)行期業(yè)務(wù)數(shù)據(jù)掀鹅,比如待處理消息數(shù)目等散休。
  • 服務(wù)器性能數(shù)據(jù)采集
    采集服務(wù)器性能數(shù)據(jù),如系統(tǒng)負(fù)載乐尊、內(nèi)存使用率戚丸、網(wǎng)卡流量等。
  • 系統(tǒng)監(jiān)控
    將前述采集的數(shù)據(jù)以圖表的方式展示扔嵌,以便運(yùn)營和運(yùn)維人員監(jiān)控網(wǎng)站運(yùn)行狀況限府,做
    到這一步僅僅是系統(tǒng)監(jiān)視夺颤。更先進(jìn)的做法是根據(jù)釆集的數(shù)據(jù)進(jìn)行自動(dòng)化運(yùn)維,自動(dòng)處理
    系統(tǒng)異常狀況胁勺,實(shí)現(xiàn)自動(dòng)化控制世澜。
  • 系統(tǒng)報(bào)警
    如果采集來的數(shù)據(jù)超過預(yù)設(shè)的正常情況的閾值,比如系統(tǒng)負(fù)載過高姻几,就通過郵件宜狐、
    短信、語音電話等方式發(fā)出報(bào)警信號蛇捌,等待工程師干預(yù)抚恒。

安全架構(gòu)

保護(hù)網(wǎng)站免遭攻擊及敏感信息泄露。

  • Web 攻擊
    以HTTP 請求的方式發(fā)起的攻擊络拌,危害最大的就是XSS 和SQL 注入攻擊俭驮。但是只要
    措施得當(dāng),這兩種攻擊都是比較容易防范的春贸。
  • 數(shù)據(jù)保護(hù)
    敏感信息加密傳輸與存儲混萝,保護(hù)網(wǎng)站和用戶資產(chǎn)。

數(shù)據(jù)中心機(jī)房架構(gòu)


山寨與創(chuàng)新的最大區(qū)別不在于是否抄襲萍恕、是否模仿逸嘀,而在于對問題和需求是否真正理解與把握

在解決問題之前,能夠認(rèn)真思考自己面對的真正問題究竟是什么允粤,有哪些技術(shù)方案可以選擇崭倘,其基本原理是什么。

網(wǎng)站架構(gòu)其實(shí)并不難类垫,真正能解決問題的技術(shù)一定是簡單的司光。


大型網(wǎng)站的特點(diǎn):
高并發(fā)、大流量悉患;高可用残家;海量數(shù)據(jù);用戶分布廣泛且網(wǎng)絡(luò)環(huán)境復(fù)雜售躁;安全環(huán)境惡劣坞淮;需求快速變更,發(fā)布頻繁陪捷;漸進(jìn)式發(fā)展碾盐。

網(wǎng)站系統(tǒng)的演進(jìn):

  1. 單機(jī)部署
  2. 數(shù)據(jù)和應(yīng)用分離
  3. 使用緩存減少數(shù)據(jù)庫壓力
    網(wǎng)站訪問特點(diǎn)和現(xiàn)實(shí)世界的財(cái)富分配一樣遵循二八定律:80%的業(yè)務(wù)訪問集中在20%
    的數(shù)據(jù)上
  4. 應(yīng)用服務(wù)器集群化
    可擴(kuò)展性,負(fù)載均衡
  5. 數(shù)據(jù)庫讀寫分離
    利用的是數(shù)據(jù)庫的主從熱備揩局。寫主讀從。
  6. 加速網(wǎng)站訪問速度:CDN和反向代理掀虎。
    CDN 和反向代理的基本原理都是緩存凌盯,區(qū)別在于CDN 部署在網(wǎng)絡(luò)提供商的機(jī)房付枫,使
    用戶在請求網(wǎng)站服務(wù)時(shí),可以從距離自己最近的網(wǎng)絡(luò)提供商機(jī)房獲取數(shù)據(jù)驰怎;而反向代理
    則部署在網(wǎng)站的中心機(jī)房阐滩,當(dāng)用戶請求到達(dá)中心機(jī)房后,首先訪問的服務(wù)器是反向代理
    服務(wù)器县忌,如果反向代理服務(wù)器中緩存著用戶請求的資源掂榔,就將其直接返回給用戶。
  7. 分布式數(shù)據(jù)庫和分布式文件系統(tǒng)
    網(wǎng)站更常用的數(shù)據(jù)庫拆分手段是業(yè)務(wù)分庫症杏,將不同業(yè)務(wù)的數(shù)據(jù)
    庫部署在不同的物理服務(wù)器上装获。
  8. 使用NoSQL和搜索引擎
  9. 業(yè)務(wù)拆分
  10. 分布式服務(wù)

但事物發(fā)展到一定階段,就會擁有自身的發(fā)展沖動(dòng)厉颤,擺脫其初衷穴豫,向著使自己更強(qiáng)
大的方向發(fā)展。既然大型網(wǎng)站架構(gòu)解決了海量數(shù)據(jù)的管理和高并發(fā)事務(wù)的處理逼友,那么就
可以把這些解決方案應(yīng)用到網(wǎng)站自身以外的業(yè)務(wù)上去精肃。我們看到目前許多大型網(wǎng)站都開
始建設(shè)云計(jì)算平臺,將計(jì)算作為一種基礎(chǔ)資源出售帜乞,中小網(wǎng)站不需要再關(guān)心技術(shù)架構(gòu)問
題司抱,只需要按需付費(fèi),就可以使網(wǎng)站隨著業(yè)務(wù)的增長逐漸獲得更大的存儲空間和更多的
計(jì)算資源黎烈。

這個(gè)世界沒有哪個(gè)網(wǎng)站從誕生起就是大型網(wǎng)站习柠;也沒有哪個(gè)網(wǎng)站第一次發(fā)布就擁有
龐大的用戶,高并發(fā)的訪問怨喘,海量的數(shù)據(jù)津畸;大型網(wǎng)站都是從小型網(wǎng)站發(fā)展而來。網(wǎng)站的
價(jià)值在于它能為用戶提供什么價(jià)值必怜,在于網(wǎng)站能做什么肉拓,而不在于它是怎么做的,所以
在網(wǎng)站還很小的時(shí)候就去追求網(wǎng)站的架構(gòu)是舍本逐末梳庆,得不償失的暖途。小型網(wǎng)站最需要做
的就是為用戶提供好的服務(wù)來創(chuàng)造價(jià)值,得到用戶的認(rèn)可膏执,活下去驻售,野蠻生長。

技術(shù)是用來解決業(yè)務(wù)問題的更米,而業(yè)務(wù)的問題欺栗,也可以通過業(yè)務(wù)的手段去解決。
恩,不要妄圖用技術(shù)解決所有問題迟几。


大型網(wǎng)站架構(gòu)模式

  1. 分層
    單一職責(zé)消请,上層對下層的依賴關(guān)系。
  2. 分割
    業(yè)務(wù)縱向分割类腮,分布式部署臊泰。
  3. 分布式
    分層和分割都是為了便于分布式部署。
    常用的分布式方案有:分布式應(yīng)用和服務(wù)蚜枢;分布式靜態(tài)資源缸逃;分布式數(shù)據(jù)和存儲;分布式計(jì)算厂抽。
  4. 集群
  5. 緩存
    緩存是改善軟件性能的第一手段需频。
    使用緩存有兩個(gè)前提條件,一是數(shù)據(jù)訪問熱點(diǎn)不均衡修肠,某些數(shù)據(jù)會被更頻繁的訪問贺辰,
    這些數(shù)據(jù)應(yīng)該放在緩存中;二是數(shù)據(jù)在某個(gè)時(shí)間段內(nèi)有效嵌施,不會很快過期饲化,否則緩存的
    數(shù)據(jù)就會因已經(jīng)失效而產(chǎn)生臟讀,影響結(jié)果的正確性吗伤。
  6. 異步
    將一個(gè)業(yè)務(wù)操作分成多個(gè)階段吃靠,每個(gè)階段之間通過共享數(shù)據(jù)的方式異步執(zhí)行進(jìn)行協(xié)作。
    在分布式系統(tǒng)中足淆,多個(gè)服務(wù)器集群通過分布式消息隊(duì)列實(shí)現(xiàn)異步巢块,分布式消息隊(duì)列可以看作內(nèi)存隊(duì)列的分布式部署。
    提高系統(tǒng)可用性巧号。
    加快網(wǎng)站響應(yīng)速度族奢。
    消除并發(fā)訪問高峰。
  7. 冗余

架構(gòu)要素

從性能丹鸿、可用性越走、伸縮性、擴(kuò)展性靠欢、安全這五個(gè)要素廊敌。
所謂伸縮性是指通過不斷向集群中加入服務(wù)器的手段來緩解不斷上升的
用戶并發(fā)訪問壓力和不斷增長的數(shù)據(jù)存儲需求。
衡量架構(gòu)伸縮性的主要標(biāo)準(zhǔn)就是是否可以用多臺服務(wù)器構(gòu)建集群门怪,是否容易向集群
中添加新的服務(wù)器骡澈。加入新的服務(wù)器后是否可以提供和原來的服務(wù)器無差別的服務(wù)。集
群中可容納的總的服務(wù)器數(shù)量是否有限制掷空。

關(guān)系數(shù)據(jù)庫雖然支持?jǐn)?shù)據(jù)復(fù)制肋殴,主從熱備等機(jī)制囤锉,但是很難做到大規(guī)模集群的可伸
縮性,因此關(guān)系數(shù)據(jù)庫的集群伸縮性方案必須在數(shù)據(jù)庫之外實(shí)現(xiàn)护锤,通過路由分區(qū)等手段
將部署有多個(gè)數(shù)據(jù)庫的服務(wù)器組成一個(gè)集群
至于大部分NoSQL 數(shù)據(jù)庫產(chǎn)品嚼锄,由于其先天就是為海量數(shù)據(jù)而生,因此其對伸縮性
的支持通常都非常好蔽豺,可以做到在較少運(yùn)維參與的情況下實(shí)現(xiàn)集群規(guī)模的線性伸縮。

擴(kuò)展性是指的功能擴(kuò)展拧粪,伸縮是指性能伸縮修陡。

性能優(yōu)化

System Load 即系統(tǒng)負(fù)載,指當(dāng)前正在被CPU 執(zhí)行和等待被CPU 執(zhí)行的進(jìn)程數(shù)目總和可霎,是反映系統(tǒng)忙閑程度的重要指標(biāo)魄鸦。多核CPU 的情況下,完美情況是所有CPU 都在使用癣朗,沒有進(jìn)程在等待處理拾因,所以Load 的理想值是CPU 的數(shù)目。當(dāng)Load 值低于CPU 數(shù)目的時(shí)候旷余,表示CPU 有空閑绢记,資源存在浪費(fèi);當(dāng)Load 值高于CPU 數(shù)目的時(shí)候正卧,表示進(jìn)程在排隊(duì)等待CPU 調(diào)度蠢熄,表示系統(tǒng)資源不足,影響應(yīng)用程序的執(zhí)行性能炉旷。
在Linux 系統(tǒng)中使用top 命令査看签孔,該值是三個(gè)浮點(diǎn)數(shù),表示最近1 分鐘窘行,10 分鐘饥追,15 分鐘的運(yùn)行隊(duì)列平均進(jìn)程數(shù)。

性能測試是一個(gè)總稱罐盔,具體可細(xì)分為性能測試但绕、負(fù)載測試、壓力測試翘骂、穩(wěn)定性測試壁熄。

排査一個(gè)網(wǎng)站的性能瓶頸和排査一個(gè)程序的性能瓶頸的手法基本相同:檢査請求處
理的各個(gè)環(huán)節(jié)的日志,分析哪個(gè)環(huán)節(jié)響應(yīng)時(shí)間不合理碳竟、超過預(yù)期草丧;然后檢査監(jiān)控?cái)?shù)據(jù),
分析影響性能的主要因素是內(nèi)存莹桅、磁盤昌执、網(wǎng)絡(luò)烛亦、還是cpu? 是代碼問題還是架構(gòu)設(shè)計(jì)不
合理,或者系統(tǒng)資源確實(shí)不足懂拾。

前端性能優(yōu)化

主要優(yōu)化手段有優(yōu)化瀏覽器訪問煤禽、使用反向代理、CDN 等岖赋。
優(yōu)化瀏覽器訪問的措施:

  1. 減少http請求檬果。
    HTTP 協(xié)議是無狀態(tài)的應(yīng)用層協(xié)議,意味著每次HTTP 請求都需要建立通信鏈路唐断、進(jìn)行數(shù)據(jù)傳輸选脊,而在服務(wù)器端,每個(gè)HTTP 都需要啟動(dòng)獨(dú)立的線程去處理脸甘。這些通信和服務(wù)的開銷都很昂貴恳啥,減少HTTP 請求的數(shù)目可有效提高訪問性能。
    減少HTTP 的主要手段是合并CSS,合并JavaScript,合并圖片丹诀。將瀏覽器一次訪問需要的JavaScript CSS 合并成一個(gè)文件钝的,這樣瀏覽器就只需要一次請求。圖片也可以合并铆遭,多張圖片合并成一張硝桩,如果每張圖片都有不同的超鏈接,可通過CSS 偏移響應(yīng)鼠標(biāo)點(diǎn)擊操作疚脐,構(gòu)造不同的URL
  2. 使用瀏覽器緩存
    對一個(gè)網(wǎng)站而言亿柑,CSS? JavaScript , Logo圖標(biāo)這些靜態(tài)資源文件更新的頻率都比較低,而這些文件又幾乎是每次HTTP 請求都需要的棍弄,如果將這些文件緩存在瀏覽器中望薄,可以極好地改善性能。
    通過設(shè)置HTTP 頭中Cache-Control 和Expires 的屬性呼畸,可設(shè)定瀏覽
    器緩存痕支,緩存時(shí)間可以是數(shù)天,甚至是幾個(gè)月蛮原。
    在某些時(shí)候卧须,靜態(tài)資源文件變化需要及時(shí)應(yīng)用到客戶端瀏覽器,這種情況儒陨,可通改變文件名實(shí)現(xiàn)花嘶,即更新JavaScript 文件并不是更新JavaScript 文件內(nèi)容,而是生成一個(gè)新的JS 文件并更新HTML 文件中的引用蹦漠。
    使用瀏覽器緩存策略的網(wǎng)站在更新靜態(tài)資源時(shí)椭员,應(yīng)采用批量更新的方法,比如需要更新10 個(gè)圖標(biāo)文件笛园,不宜把10 個(gè)文件一次全部更新隘击,而是應(yīng)一個(gè)文件一個(gè)文件逐步更
    新侍芝,并有一定的間隔時(shí)間,以免用戶瀏覽器突然大量緩存失效埋同,集中更新緩存州叠,造成服
    務(wù)器負(fù)載驟增、網(wǎng)絡(luò)堵塞的情況凶赁。
  3. 啟用壓縮
    在服務(wù)器端對文件進(jìn)行壓縮咧栗,在瀏覽器端對文件解壓縮,可有效減少通信傳輸?shù)臄?shù)
    據(jù)量虱肄。文本文件的壓縮效率可達(dá)80%以上楼熄,因此HTML? CSS? JavaScript 文件啟用GZip
    壓縮可達(dá)到較好的效果。但是壓縮對服務(wù)器和瀏覽器產(chǎn)生一定的壓力浩峡,在通信帶寬良好,
    而服務(wù)器資源不足的情況下要權(quán)衡考慮错敢。
  4. CSS 放在頁面最上面翰灾、JavaScript 放在頁面最下面
    但如果頁面解析時(shí)就需要用到JavaScript, 這時(shí)放在底部就不合適了。

5稚茅,減少cookie傳輸

服務(wù)器端性能優(yōu)化

  1. 分布式緩存
    網(wǎng)站性能優(yōu)化第一定律:優(yōu)先考慮使用緩存優(yōu)化性能纸淮。
    產(chǎn)品在設(shè)計(jì)之初就需要一個(gè)明確的定位:什么是產(chǎn)品要實(shí)現(xiàn)的功能,什么
    不是產(chǎn)品提供的特性亚享。在產(chǎn)品漫長的生命周期中咽块,會有形形色色的困難和誘惑
    來改變產(chǎn)品的發(fā)展方向,左右搖擺欺税、什么都想做的產(chǎn)品侈沪,最后有可能成為一個(gè)
    失去生命力的四不像。
    緩存預(yù)熱
    緩存穿透
  2. 異步
    消息隊(duì)列晚凿。需要注意的是亭罪,由于數(shù)據(jù)寫入消息隊(duì)列后立即返回給用戶,數(shù)據(jù)在后續(xù)的業(yè)務(wù)校驗(yàn)歼秽、寫數(shù)據(jù)庫等操作可能失敗应役,因此在使用消息隊(duì)列進(jìn)行業(yè)務(wù)異步處理后,需要適當(dāng)修改業(yè)
    務(wù)流程進(jìn)行配合
    任何可以晚點(diǎn)做的事情都應(yīng)該晚點(diǎn)做燥筷。
  3. 使用集群箩祥。
  4. 代碼優(yōu)化
    • 多線程。
      啟動(dòng)線程數(shù)= [任務(wù)執(zhí)行時(shí)間/ (任務(wù)執(zhí)行時(shí)間-10 等待時(shí)間)] xCPU 內(nèi)核數(shù)
      最佳啟動(dòng)線程數(shù)和CPU 內(nèi)核數(shù)量成正比肆氓,和IO 阻塞時(shí)間成反比袍祖。
      如果是計(jì)算型任務(wù),那么線程數(shù)最多不超過CPU 內(nèi)核數(shù)做院,因?yàn)閱?dòng)再多線程盲泛,CPU 也來不及調(diào)度濒持;相反如果是任務(wù)需要等待磁盤操作,網(wǎng)絡(luò)響應(yīng)寺滚,那么多啟動(dòng)線程有助于提高任務(wù)并
      發(fā)度柑营,提高系統(tǒng)吞吐能力,改善系統(tǒng)性能村视。
    • 對象復(fù)用官套。單例和池技術(shù)。
    • 數(shù)據(jù)結(jié)果蚁孔。
    • 垃圾回收奶赔。

存儲性能優(yōu)化

B+樹,關(guān)系型數(shù)據(jù)庫多采用此數(shù)據(jù)結(jié)構(gòu)杠氢。
NoSql產(chǎn)品多采用LSM樹作為主要數(shù)據(jù)結(jié)構(gòu)站刑。
在LSM 樹上進(jìn)行一次數(shù)據(jù)更新不需要磁盤訪問,在內(nèi)存即可完成鼻百,速度遠(yuǎn)快于B+
樹绞旅。當(dāng)數(shù)據(jù)訪問以寫操作為主,而讀操作則集中在最近寫入的數(shù)據(jù)上時(shí)温艇,使用LSM樹可以極大程度地減少磁盤的訪問次數(shù)因悲,加快訪問速度。

RAID勺爱,通過使用RAID 技術(shù)晃琳,實(shí)現(xiàn)數(shù)據(jù)在多塊磁盤上的并發(fā)讀寫和數(shù)據(jù)備份。
RAID 技術(shù)在傳統(tǒng)關(guān)系數(shù)據(jù)庫及文件系統(tǒng)中應(yīng)用比較廣泛琐鲁,但是在大型網(wǎng)站比
較喜歡使用的NoSQL? 以及分布式文件系統(tǒng)中卫旱,RAID 技術(shù)卻遭到冷落。

高可用性優(yōu)化

4個(gè)9也就是一年中大約最多53 分鐘不可用围段。

主要手段是數(shù)據(jù)和服務(wù)的冗余備份及失效轉(zhuǎn)移誊涯。

分級管理,部署隔離蒜撮。
超時(shí)設(shè)置暴构。
異步調(diào)用。
服務(wù)降級段磨。
冪等性設(shè)計(jì)取逾。

CAP 原理認(rèn)為,一個(gè)提供數(shù)據(jù)服務(wù)的存儲系統(tǒng)無法同時(shí)滿足數(shù)據(jù)一致性
(Consistency)苹支、數(shù)據(jù)可用性(Availibility )砾隅、分區(qū)耐受性即可擴(kuò)展性(Patition Tolerance? 系統(tǒng)具有跨網(wǎng)絡(luò)分區(qū)的伸縮性)這三個(gè)條件。
通常我們必須去保證A可用性和P擴(kuò)展性债蜜,某種程度上放棄C一致性晴埂。

數(shù)據(jù)最終一致性究反,這是數(shù)據(jù)一致性中較弱的一種,數(shù)據(jù)可能不一致儒洛,但經(jīng)過一段時(shí)間的自我恢復(fù)和修正精耐,數(shù)據(jù)達(dá)到最終一致。

數(shù)據(jù)備份琅锻,冷備和熱備卦停。熱備又分同步熱備和異步熱備。

失效轉(zhuǎn)移操作由三部分組成:失效確認(rèn)恼蓬、訪問轉(zhuǎn)移惊完、數(shù)據(jù)恢復(fù)。

伸縮性優(yōu)化

實(shí)現(xiàn)負(fù)載均衡的基礎(chǔ)技術(shù):

  • HTTP 重定向
    這種負(fù)載均衡方案的優(yōu)點(diǎn)是比較簡單处硬。缺點(diǎn)是瀏覽器需要兩次請求服務(wù)器才能完成
    一次訪問小槐,性能較差;重定向服務(wù)器自身的處理能力有可能成為瓶頸荷辕,整個(gè)集群的伸縮
    性規(guī)模有限本股;使用HTTP302 響應(yīng)碼重定向,有可能使搜索引擎判斷為SEO 作弊桐腌,降低搜
    索排名。因此實(shí)踐中使用這種方案進(jìn)行負(fù)載均衡的案例并不多見苟径。
  • DNS 域名解析負(fù)載均衡
    事實(shí)上案站,大型網(wǎng)站總是部分使用DNS 域名解析,利用域名解析作為第一級負(fù)載均衡
    手段棘街,即域名解析得到的一組服務(wù)器并不是實(shí)際提供Web 服務(wù)的物理服務(wù)器蟆盐,而是同樣
    提供負(fù)載均衡服務(wù)的內(nèi)部服務(wù)器,這組內(nèi)部負(fù)載均衡服務(wù)器再進(jìn)行負(fù)載均衡遭殉,將請求分
    發(fā)到真實(shí)的Web 服務(wù)器上石挂。
  • 反向代理負(fù)載均衡
  • IP 負(fù)載均衡
  • 數(shù)據(jù)鏈路層負(fù)載均衡
    這種數(shù)據(jù)傳輸方式又稱作三角傳輸模式,負(fù)載均衡數(shù)據(jù)分發(fā)過程中不修改IP 地址险污,
    只修改目的mac 地址痹愚,通過配置真實(shí)物理服務(wù)器集群所有機(jī)器虛擬IP 和負(fù)載均衡服務(wù)器
    IP 地址一致,從而達(dá)到不修改數(shù)據(jù)包的源地址和目的地址就可以進(jìn)行數(shù)據(jù)分發(fā)的目的
    是目前大型網(wǎng)站使用最廣的一種負(fù)載均衡手段蛔糯。在Linux 平臺上最好的鏈路層負(fù)載均衡開源產(chǎn)品是LVS ( Linux Virtual Server )拯腮。

分布式緩存
一致性哈希
計(jì)算機(jī)領(lǐng)域有句話:計(jì)算機(jī)的任何問題都可以通過增加一個(gè)虛擬層來解決。
蚁飒。那么在實(shí)踐中动壤,一臺物理服務(wù)器虛擬為多少個(gè)虛擬服務(wù)器節(jié)點(diǎn)合適呢?太多會影響
性能淮逻,太少又會導(dǎo)致負(fù)載不均衡琼懊,一般說來阁簸,經(jīng)驗(yàn)值是150,當(dāng)然根據(jù)集群規(guī)模和負(fù)載均
衡的精度需求哼丈,這個(gè)值應(yīng)該根據(jù)具體情況具體對待启妹。

關(guān)系型數(shù)據(jù)庫
使用開源中間件,如Cobar削祈。原理是在數(shù)據(jù)庫之上又加了一層翅溺。是一個(gè)分布式數(shù)據(jù)庫的訪問代理。
當(dāng)前分布式數(shù)據(jù)庫無法解決的問題是髓抑,無法跨庫Join咙崎,更無法實(shí)現(xiàn)跨庫事務(wù)。
所以需要從業(yè)務(wù)上避免分布式數(shù)據(jù)庫的缺點(diǎn):避免事務(wù)或者利用事務(wù)補(bǔ)償機(jī)制代替數(shù)據(jù)庫事務(wù)吨拍。分解數(shù)據(jù)訪問邏輯避免Join操作褪猛。

還有一類分布式數(shù)據(jù)庫可以支持JOIN 操作執(zhí)行復(fù)雜
的SQL 査詢,如GreenPlum? 但是這類數(shù)據(jù)庫的訪問延遲比較大(可以想象羹饰,JOIN 操作
需要在服務(wù)器間傳輸大量的數(shù)據(jù))伊滋, 因此一般使用在數(shù)據(jù)倉庫等非實(shí)時(shí)業(yè)務(wù)中。

NoSql
NoSQL數(shù)據(jù)庫產(chǎn)品都放棄了關(guān)系數(shù)據(jù)庫的兩大重要基礎(chǔ):以關(guān)系代數(shù)為基礎(chǔ)的結(jié)構(gòu)化査詢語言
( SQL ) 和事務(wù)一致性保證(ACID )队秩。而強(qiáng)化其他一些大型網(wǎng)站更關(guān)注的特性:高可用性
和可伸縮性笑旺。

可擴(kuò)展性架構(gòu)

設(shè)計(jì)網(wǎng)站可擴(kuò)展架構(gòu)的核心思想是模塊化,并在此基礎(chǔ)之上馍资,降低模塊間的耦合性筒主,
提高模塊的復(fù)用性。

  • 利用分布式消息隊(duì)列降低系統(tǒng)耦合性
  • 利用分布式服務(wù)框架鸟蟹,如Dubbo
  • 搭建開放平臺建設(shè)網(wǎng)站生態(tài)圈
    API接口乌妙,協(xié)議轉(zhuǎn)換,安全建钥,審計(jì)藤韵,路由,流程

安全架構(gòu)

常見攻擊

XSS熊经,跨站點(diǎn)腳本攻擊泽艘。惡意腳本執(zhí)行。
防御:消毒(特殊字符轉(zhuǎn)義)
httponly镐依,防止XSS 攻擊者竊取Cookie悉盆。

注入攻擊,消毒馋吗,預(yù)編譯

CSRF焕盟,跨站點(diǎn)請求偽造。其核心是利用了瀏覽器Cookie 或服務(wù)器Session 策略,盜取用戶身份脚翘。
防御:表單Token灼卢,驗(yàn)證碼,referer check(請求來源檢查)

web應(yīng)用防火墻

ModSecurity

加密

  • 單項(xiàng)散列加密
    常用的單向散列算法有MD5? SHA 等来农。單向散列算法還有一個(gè)特點(diǎn)就是輸入的任何
    微小變化都會導(dǎo)致輸出的完全不同鞋真,這個(gè)特性有時(shí)也會被用來生成信息摘要、計(jì)算具有
    高離散程度的隨機(jī)數(shù)等用途沃于。
  • 對稱加密
    常用的對稱加密算法有DES 算發(fā)涩咖、RC 算法等
  • 非對稱加密
    非對稱加密的常用算法有RSA 算法

信息過濾

  • 文本匹配
    正則表達(dá)式的效率一般較差,僅適用于短文本及低并發(fā)場景繁莹。
    高并發(fā)時(shí)使用的公幵的算法有很多檩互,基本上都是Trie 樹的變種,空間和時(shí)間復(fù)雜度都比較好
    的有雙數(shù)組Trie 算法等咨演。

秒殺系統(tǒng)架構(gòu)

網(wǎng)站如果為秒殺時(shí)的最高并發(fā)訪問量進(jìn)行設(shè)計(jì)部署闸昨,就需要比正常運(yùn)營多得多的服務(wù)器,而這些服務(wù)器在絕大部分時(shí)候都是用不著的薄风,浪費(fèi)驚人饵较。所以網(wǎng)站的秒殺業(yè)務(wù)不能使用正常的網(wǎng)站業(yè)務(wù)流程,也不能和正常的網(wǎng)站交易業(yè)務(wù)共用服務(wù)器遭赂,必須設(shè)計(jì)部署專門的秒殺系統(tǒng)循诉,進(jìn)行專門應(yīng)對。

技術(shù)挑戰(zhàn)

  1. 對現(xiàn)有網(wǎng)站業(yè)務(wù)沖擊撇他。
    如果部署在一起茄猫,稍有不慎全業(yè)務(wù)癱瘓。
  2. 高并發(fā)下的應(yīng)用逆粹、數(shù)據(jù)庫負(fù)載。
  3. 突然增加的網(wǎng)絡(luò)及服務(wù)器帶寬
  4. 直接下單
    下單頁面也是一個(gè)普通的URL, 如果得到這個(gè)URL炫惩, 不用等到秒殺開始就可以下單了僻弹。

應(yīng)對策略

  1. 獨(dú)立部署
    2衅枫,秒殺產(chǎn)品頁面靜態(tài)化
    使其不需要經(jīng)過web服務(wù)器和數(shù)據(jù)庫服務(wù)器房午。
    3,租借秒殺活動(dòng)帶寬
  2. 動(dòng)態(tài)生成隨機(jī)下單頁面URL
    為了避免用戶直接訪問下單頁面URL. 需要將該URL 動(dòng)態(tài)化逃魄,即使秒殺系統(tǒng)的開發(fā)
    者也無法在秒殺開始前訪問下單頁面的URL. 辦法是在下單頁面URL 加入由服務(wù)器端生
    成的隨機(jī)數(shù)作為參數(shù)筋蓖,在秒殺開始的時(shí)候才能得到卸耘。

架構(gòu)設(shè)計(jì)

  1. 如何控制秒殺按鈕的點(diǎn)亮
    解決辦法是使用JavaScript 腳本控制,在秒殺商品靜態(tài)頁面中加入一個(gè)JavaScript 文
    件引用粘咖,該JavaScript 文件中加入秒殺是否開始的標(biāo)志和下單頁面URL 的隨機(jī)數(shù)參數(shù)蚣抗,
    當(dāng)秒殺開始的時(shí)候生成一個(gè)新的JavaScript 文件并被用戶瀏覽器加載,控制秒殺商品頁面
    的展示瓮下。這個(gè)javaScript 文件使用隨機(jī)版本號翰铡,并且不被瀏覽器钝域、CDN 和反向代理服務(wù)
    器緩存。
    2锭魔,只允許用戶的第一個(gè)下單請求到達(dá)服務(wù)器
    并且服務(wù)器接收到的單量超過設(shè)定值后例证,其他的請求直接秒殺結(jié)束。
    如果服務(wù)器出錯(cuò)迷捧,直接秒殺結(jié)束頁面织咧。

經(jīng)驗(yàn)教訓(xùn)

寫日志導(dǎo)致磁盤滿

  • 控制業(yè)務(wù)日志級別warn
  • 某些第三方包也會打太多錯(cuò)誤日志,要關(guān)閉
  • 自己的業(yè)務(wù)日志和第三方的日志要分開配置

數(shù)據(jù)庫load高

原因:首頁訪問了數(shù)據(jù)庫

  • 首頁訪問頻繁漠秋,不要直接訪問數(shù)據(jù)庫
  • 首頁最好應(yīng)該做出靜態(tài)的

高并發(fā)下鎖超時(shí)

  • 減小粒度
  • 謹(jǐn)慎使用

緩存

緩存服務(wù)器宕機(jī)笙蒙,數(shù)據(jù)庫壓力陡增引發(fā)宕機(jī)。

  • 緩存服務(wù)器也很重要膛堤,大家普遍不夠重視

應(yīng)用啟動(dòng)不同步引發(fā)故障

原因:應(yīng)用程序Web 環(huán)境使用Apache+JBoss 的模式手趣,用戶請求通過Apache 轉(zhuǎn)
發(fā)JBoss? 在發(fā)布時(shí),Apache 和JBoss 同時(shí)啟動(dòng)肥荔,由于JBoss 啟動(dòng)時(shí)需要加載很多應(yīng)用并
初始化绿渣,花費(fèi)時(shí)間較長,結(jié)果JBoss 還沒有完全啟動(dòng)燕耿,Apache 就已經(jīng)啟動(dòng)完畢開始接收
用戶請求中符,大量請求阻塞在JBoss 進(jìn)程中,最終導(dǎo)致JBoss 崩潰誉帅。除了這種Apache 和JBoss
啟動(dòng)不同步的情況淀散,網(wǎng)站還有很多類似的場景,都需要后臺服務(wù)準(zhǔn)備好蚜锨,前臺應(yīng)用才能
啟動(dòng)档插,否則就會導(dǎo)致故障。

大文件讀寫?yīng)氄即疟P

有幾個(gè)文件非常大亚再,有數(shù)百兆郭膛,讀寫這些大文件一
次需要幾十秒,這段時(shí)間氛悬,磁盤基本被這個(gè)文件操作獨(dú)占则剃,導(dǎo)致其他用戶的文件操作緩慢。

  • 大文件和小文件區(qū)分存儲如捅,區(qū)別對待棍现。

架構(gòu)師

架構(gòu)師作為項(xiàng)目組最資深的專業(yè)技術(shù)人員,是項(xiàng)目組開發(fā)測試工程師的前輩镜遣。從架
構(gòu)師的身上己肮,工程師可以看到自己的未來,因此架構(gòu)師在做人做事方面需要嚴(yán)格要求自
己,做好表率朴肺。

關(guān)注人而不是產(chǎn)品

一定要堅(jiān)信:一群優(yōu)秀的人做一件他們熱愛的事窖剑,一定能取得成功。不管過程多么
曲折戈稿,不管外人看來多么不可思議不靠譜西土。
領(lǐng)導(dǎo)的真諦:尋找一個(gè)值得共同奮斗的目標(biāo),營造一個(gè)讓大家都能最大限度
發(fā)揮自我價(jià)值的工作氛圍鞍盗。
沒有懶惰的員工需了,只有沒被激發(fā)出來的激情。所有強(qiáng)迫員工加班的管理者都應(yīng)該為
自己的無能而羞愧般甲。

發(fā)覺人的優(yōu)秀

是事情成就了人肋乍,而不是人成就了事。指望優(yōu)秀的人來幫自己成事敷存,不如做成一件
事讓自己和參與的人都變得優(yōu)秀墓造。

共享美好藍(lán)圖

架構(gòu)師要和項(xiàng)目組全體成員共同描繪一個(gè)藍(lán)圖,這個(gè)藍(lán)圖是整個(gè)團(tuán)隊(duì)能夠認(rèn)同的锚烦,
是團(tuán)隊(duì)共同奮斗的目標(biāo)觅闽。
藍(lán)圖應(yīng)該是表述清楚的:產(chǎn)品要做什么、不做什么涮俄、要達(dá)到什么業(yè)務(wù)目標(biāo)蛉拙,都需要
描述清楚。
藍(lán)圖應(yīng)該是形象的:產(chǎn)品能為用戶創(chuàng)造什么價(jià)值彻亲、能實(shí)現(xiàn)什么樣的市場目標(biāo)孕锄、產(chǎn)品
最終會長什么樣,都需要形象地想象出來苞尝。
藍(lán)圖應(yīng)該是簡單的:不管內(nèi)部還是外部溝通畸肆,都能一句話說明白:我們在做什么。
藍(lán)圖應(yīng)該寫在軟件架構(gòu)設(shè)計(jì)文檔的扉頁宙址、寫在郵件的簽名檔轴脐、寫在內(nèi)部即時(shí)通信群
的公告上。
在項(xiàng)目過程中曼氛,架構(gòu)師要保持對目標(biāo)藍(lán)圖的關(guān)注豁辉,對任何偏離藍(lán)圖的設(shè)計(jì)和決定保持警惕令野,錯(cuò)誤的偏離要及時(shí)修正舀患,必要的變更要經(jīng)過大家討論,并且需要重新獲得大家
的認(rèn)同气破。

共同參與架構(gòu)

架構(gòu)師需要對系統(tǒng)架構(gòu)負(fù)責(zé)聊浅,但并不是說一定要架構(gòu)師自己完成架構(gòu)設(shè)計(jì),并要項(xiàng)
目團(tuán)隊(duì)嚴(yán)格遵守架構(gòu)決策。
把架構(gòu)和架構(gòu)師凌駕于項(xiàng)目和項(xiàng)目組之上低匙,只會讓架構(gòu)師變成孤家寡人旷痕,讓架構(gòu)曲
局和寡。

  1. 不要只有架構(gòu)師一個(gè)人擁有架構(gòu)
  2. 讓其他人維護(hù)框架與架構(gòu)文檔

學(xué)會妥協(xié)

不要企圖在項(xiàng)目中證明自己是正確的顽冶,一定要記住欺抗,你是來做軟件的,不是來當(dāng)老
大的强重。所以不要企圖去證明自己了不起绞呈,永遠(yuǎn)也別干這種浪費(fèi)時(shí)間、傷害感情的事

很多時(shí)候间景,對架構(gòu)和技術(shù)方案的反對意見佃声,其實(shí)意味著架構(gòu)和技術(shù)方案被關(guān)注、被
試圖理解和接受倘要。架構(gòu)師不應(yīng)該對意見過于敏感圾亏,這時(shí)架構(gòu)師應(yīng)該做的是坦率地分享自
己的設(shè)計(jì)思路,讓別人理解自己的想法并努力理解別人的想法封拧,求同存異志鹃。
對于技術(shù)細(xì)節(jié)的爭論應(yīng)該立即驗(yàn)證而不是繼續(xù)討論,當(dāng)討論深入到技術(shù)細(xì)節(jié)的時(shí)候
也意味著問題已經(jīng)收斂哮缺,對于整體架構(gòu)設(shè)計(jì)弄跌,各方意見正趨于一致。
而當(dāng)大家不再討論架構(gòu)的時(shí)候尝苇,表明架構(gòu)已經(jīng)融入到項(xiàng)目铛只、系統(tǒng)和開發(fā)者中了,架
構(gòu)師越早被項(xiàng)目組遺忘糠溜,越表示架構(gòu)非常成功淳玩;項(xiàng)目組越離不開架構(gòu)師,越表示架構(gòu)還
有很多缺陷非竿。

成就他人

架構(gòu)師作為團(tuán)隊(duì)的技術(shù)領(lǐng)導(dǎo)者蜕着,在項(xiàng)目過程中不要去試圖控制什么,帶著一個(gè)彈性
的計(jì)劃和藍(lán)圖推進(jìn)红柱,團(tuán)隊(duì)會管好他們自己承匣。你越是強(qiáng)加禁令,隊(duì)伍就越是沒有紀(jì)律锤悄;你
越是強(qiáng)制韧骗,團(tuán)隊(duì)就越是不能獨(dú)立自主;你越是從外面尋找?guī)椭憔郏蠹揖驮绞菦]有信心袍暴。

發(fā)現(xiàn)問題些侍,尋找突破

其實(shí)即使是在一流的技術(shù)團(tuán)隊(duì)里,也一定有數(shù)不清的問題政模,只是人們習(xí)慣了這些問
題岗宣,以至于無視它們的存在。正所謂“魚是最后一個(gè)看見水的”淋样,天天面對這些問題耗式,反
而不覺得有什么問題。

提出問題趁猴,尋求支持

問題被發(fā)現(xiàn)纽什,它只是問題發(fā)現(xiàn)者的問題,而不是問題擁有者的問題躲叼,如果想要解決一個(gè)問題芦缰,就必須提出這個(gè)問題,讓問題的擁有者知道問題的存在枫慷。   
找對關(guān)鍵人

  • 把“我的問題”表述成“我們的問題”
  • 給上司提封閉式問題让蕾,給下屬提開放式問題
    不要問上司“你覺得該怎么辦?”這種沒有建設(shè)性的開放式問題或听,給上司
    提問題是希望能夠得到他的支持探孝,而不是帶著一頭霧水等他去指點(diǎn)迷津。公司
    付你薪水不是讓你睜著迷茫的眼睛賣萌誉裆。給上司提問應(yīng)該是“你覺得A 和B 兩
    個(gè)方案哪個(gè)更好顿颅?”這種封閉式問題。
  • 指出問題而不是批評人
    如果在合作中出現(xiàn)問題足丢,告訴他問題的存在和緊迫性粱腻,而不是責(zé)問他為什
    么出現(xiàn)問題。
  • 用贊同的方式提出問題
    所謂直言有諱是指想要表達(dá)的意圖要直截了當(dāng)說明白斩跌,不要兜圈子绍些,但是
    在表達(dá)方式上要有所避諱,照顧到當(dāng)事人的感受耀鸦。

解決問題柬批,達(dá)成績效

  1. 在解決我的問題之前,先解決你的問題
    先解決別人的問題有幾個(gè)好處:
    你幫別人解決了問題袖订,禮尚往來氮帐,別人也會幫你解決問題。
    在幫別人解決問題的過程中洛姑,熟悉了情況上沐,后面解決自己的問題也就得
    心應(yīng)手了。
    解決別人的問題時(shí)使用的是你的解決方案吏口,這個(gè)方案在你的控制之中奄容,
    將來往這個(gè)方案里再塞一些東西解決自己的問題,手到擒來产徊。

  2. 適當(dāng)?shù)奶颖軉栴}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末昂勒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子舟铜,更是在濱河造成了極大的恐慌戈盈,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谆刨,死亡現(xiàn)場離奇詭異塘娶,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)痊夭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門刁岸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人她我,你說我怎么就攤上這事虹曙。” “怎么了番舆?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵酝碳,是天一觀的道長。 經(jīng)常有香客問我恨狈,道長疏哗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任禾怠,我火速辦了婚禮返奉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吗氏。我一直安慰自己衡瓶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布牲证。 她就那樣靜靜地躺著哮针,像睡著了一般。 火紅的嫁衣襯著肌膚如雪坦袍。 梳的紋絲不亂的頭發(fā)上十厢,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機(jī)與錄音捂齐,去河邊找鬼蛮放。 笑死,一個(gè)胖子當(dāng)著我的面吹牛奠宜,可吹牛的內(nèi)容都是我干的包颁。 我是一名探鬼主播瞻想,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼娩嚼!你這毒婦竟也來了蘑险?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤岳悟,失蹤者是張志新(化名)和其女友劉穎佃迄,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贵少,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呵俏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了滔灶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片普碎。...
    茶點(diǎn)故事閱讀 39,703評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖录平,靈堂內(nèi)的尸體忽然破棺而出随常,到底是詐尸還是另有隱情,我是刑警寧澤萄涯,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布绪氛,位于F島的核電站,受9級特大地震影響涝影,放射性物質(zhì)發(fā)生泄漏枣察。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一燃逻、第九天 我趴在偏房一處隱蔽的房頂上張望序目。 院中可真熱鬧,春花似錦伯襟、人聲如沸猿涨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽叛赚。三九已至,卻和暖如春稽揭,著一層夾襖步出監(jiān)牢的瞬間俺附,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工溪掀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留事镣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓揪胃,卻偏偏與公主長得像璃哟,于是被迫代替她去往敵國和親氛琢。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容