運維與架構師的兩大主題?
1、數據
項目經驗:
全網數據備份解決方案:數據庫數據,圖片資源等,程序,運維配置文件,其他相關的。(丟失了線上的環境,保證可以恢復)
數據庫數據:主從(解決物理故障),備機開binlog保持1天以上,按天做備份(丟失數據不會超過1分鐘)。
百度案例:一主多從,其中有個從不提供服務,實時同步 drbd(基本不丟數據)
M-S1:(不提供服務,專做備份,半同步插件)
-S2:
圖片資源等:
1、每天晚上全量備份,1T以下
增量備份:
01、rsync 小文件比對時間很長
02、drbd 浪費資源,備節點不可用
03、按時間增量,201606 201607
04、更新資源寫log,讓rsync直接通過log同步,不用再進行比對
05、innotify,sersync
全量備份:
01、drbd
02、程序雙寫,提交數據寫到兩個存儲。
03、分佈式存儲 NoSQL,mysql,mongodb同步機制做存儲
04、分佈式架構方案。
程序運維的配置文件:都需要放到SVN裏,再向外發布
按天備份即可:維護好SVN,就可以
辦公室SVN-->IDC測試
-->IDC正式
備份思想:
需求分析:對於每個項目或者業務點,事先定好備份計劃。
數據庫:數據規劃好可以丟失多少,10分鐘和1天,方案不同。
--> 需求誰來提出來?運維總監,開發總監,團隊討論。
機房遷移,OPENSSL升級,數據庫升級
2、7x24小時不間斷提供服務
集羣lvs,nginx,haproxy,f5,netscaler
高可用keepalive,heartbeat,nginx,haproxy
性能/擴展:優化,用戶體驗要好,業務可以自動擴展收縮
監控:運維級別(網絡連通性,磁盤,DNS)
應用級別(jvm垃圾回收,訪問速度,流量pv抖動)
業務級別(按產品線監控,流量,負載,訪問請求,錯誤日誌50X 40x,接口存活以及流量)
1、降低服務器訪問壓力
可以將不同的資源放到不同的服務器上,可以降低單臺服務器的壓力,也可以加快整個網站的訪問速度。另外,不同的服務器,減少cookie的傳送,也可以降低帶寬
2、頁面靜態化
直接在服務器端生成靜態頁面,避免頻繁訪問數據庫,降低數據庫壓力。
SHTML server sider incluee SSI 服務器端html拼接技術。
CDN對動態地址,不會做優化處理,對與請求靜態的文件或者地址,進行優化。所以頁面靜態化也顯得很有必要了
有些不適合靜態化的,比如有權限的頁面,需要註冊登陸後才能瀏覽,這就不能靜態化。
3、CDN
通過DNS解析,讓不同區域的用戶,訪問最近的區域,使訪問速度更快
現在很多企業沒有能力搭建CDN服務,可以購買第三方CDN優化。開發需要留意會因爲有CDN,開發會有不同。
CDN對動態地址,不會做優化處理,對與請求靜態的文件或者地址,進行優化。所以頁面靜態化也顯得很有必要了
4、js壓縮和csssprite
用工具把js文件壓縮,可以減少服務器和網絡的壓力,加快網頁加載速度。
把所有的圖片壓縮到一個圖片上,顯示的時候利用CSS偏移就可以顯示不同的圖片。
訪問不同的資源,可能請求不同的服務器,對於session可能存在不同服務器之間沒有同步,造成需要重新登陸的情況,因此session放到專門的服務器,每次都去同一個地方訪問session,就避免了這個問題
5、反向代理
用戶向web發送請求的時候,並不是直接向服務器請求,先請求反向代理服務器,然後由反向代理服務器請求資源服務器。反向代理起到中轉者的角色。
反向代理服務器可以米麪慢速Internet佔用Web服務器的連接數
反向代理服務器還可以起到安全和負載均衡的優點。
6、分離
文件服務器和web服務器分離:不同的事,不同服務器完成
上傳和下載分離
消耗資源的處理(視頻轉碼,圖片加水印)和web服務器分離
數據庫讀寫分離
數據庫分庫,分表
7、緩存-->降低服務器,數據庫壓力的最好方法
8、搜索引擎技術:全文檢索
sql like的問題:數據庫搜索時,用like查詢 讓整個數據庫很容易卡死
全文檢索的需求:高效率;模糊匹配
Lucene()全文檢索的工具-->效率低
Solr:基於java的封裝了Lucene-->效率高
技術都是混合架構的,適合的地方,使用適合的技術,不存在非誰不可的問題。
9、高併發的場景
秒殺和搶單:不能出現重複的問題
方法1:加鎖,只能有一個線程進行操作。缺點:效率低,慢。 高併發場景,不使用這種方案
方案2:兩個階段處理,自由搶,然後排隊裁判。
文章的閱讀數:避免同時併發加1
方法1:加鎖,只能有一個線程進行操作。缺點:效率低,慢。
方法2:每條閱讀單獨記錄,然後彙總統計。
10、雲計算 按需服務
比如12306平時10w夠用,春運的時候需要100w,這就沒有必要買100w臺服務器,利用雲服務,按照需要買需要的服務就可以了
隨着雲服務的深入,越來越多的企業,會去掉低端的網管,所以應該有危機感。