天天看點

從小站到大站的技術架構優化之路-網站架構與前端服務性能優化

一、課程目的

2015年,5月的某天,正在上班,突然看線公司群裡開始發出攜程網通路500的資訊,于是乎,大家小扯的一下,大家并沒有想到後來發生的事情的事情會如此震驚,開始官方的微網誌确認問題為,正遭受攻擊,但後來内部的技術人員洩漏出“資料庫被實體删除!” 這個對于技術的人員來說,可以說是非常驚訝的消息,大家開始了各種疑問,怎麼确定是資料庫引起,作為一個大公司怎麼會有這種問題産生,資料庫作為底層核心,為什麼恢複機制是那麼薄弱。

陸續消息中,最後傳出,由于運維人員的類似于自動化系統操作不當,造成幾個系統的資料目錄被清理。這個也人員失誤最後也得到了官方的證明。

https://www.zhihu.com/question/30746844

2014年,當時應邀去成都的一家企業作mongodb的教育訓練,公司正利用mongdb作為單一的資料倉庫,他們選用2.4的版本,由于業務性質,主要存儲客戶車輛和交通位置資訊,且mongodb很好的分片方式,避免了關系資料庫的水準擴充。由于持續的資料寫入,并且初期缺乏對mongdo管理維護的了解,導緻當時一個collection的資料超過了150g,oplog的設定為200m的,導緻性能極具下降。

2014、2015年正是微信公衆賬号的極速發展事情,很多小的創業團隊,利用公衆賬号的平台大賺了一筆。15年中旬,接到一家公司老闆打過來的電話,電話中着很急切的告知他們公司的服務目前正不斷遭受類似于ddos的惡意攻擊,這種情況已經持續了一段時間,由于問題遲遲無法定位,導緻線上核心服務無法正常運作,為此收到了很多顧客投訴回報,若再無法解決,業務将沒法正常開展,急需技術支援.

在這幾年,或是而聽、或是全身心經曆,兼職技術支援,我接觸了很多類似的案例,寫這個課程的最基本的目的就是,總結經驗和教訓,為了避免走相同的路。

因......

    1、為什麼要設計這門課程

     2、我們能學到什麼?

                  2.1.1、一樣的技術不一樣的切入點

                   從整體到局部,從案例到總結 我們來講解本課程

                  2.1.2、常遇到的内容不常明白的東西

                  基于個人實踐案例,從其抽象出的網際網路概念中,細節的介紹典型的案例實作。

                  大的問題,幾乎都是由于細節的不注意引起,有的問題,我們常遇到,也容易疏忽,以至于導緻造成的大問題。

                  2.1.3、一樣的針對性适合不一樣的人群

                  資深工程獅-看不同問題的處理手段、程式猿-了解不同領域的技術實作、技術小白-了解網際網路技術架構的奧秘。

         沒錯,本課程我們要講的是 “架構”“性能”、和 “實踐”。                   

      3、講解前言

                  3.1.1、講解方式

                   金字塔形式的方式從上層到下層講解,先:介紹技術架構模式、一般演變模式。總體介紹接入層、中層層、底層的技術架構,再着重圍繞接入層性能優化展開案例分析。

                   課程若有涉及比較淺顯的内容,本課程提供出對應知識點指引,并不作詳述。

大章節

小标題

課程小節

内容介紹

預計時長(min)

課時小章(拆分成小課時)

課程設計前言

課程目的

1、為什麼要作這期的課程?

介紹這門課程設計的目的,比如介紹一些由于我們在日常的工作中常常遇到的問題,或是由于網站整體設計時的考慮不足,導緻後期的性能、功能擴充瓶頸,最後不得不考慮重構,學習完這門課程後,我們所作的東西更有前瞻性,思路能更複合公司的業務發展方向。或是由于單一的通過某一種思路或者方向上去考慮問題,導緻功能、性能及安全的沖突,學習完這門課程後,我們學會多方面的綜合分析,拿出最有效的方案。或是由于,目前企業中已經出現了各式各樣的問題甚至到了瓶頸時期,一直到不到出路,這時借助這門課程來學習到一些我之前處理并且歸納好的經驗,進而有助于幫助你走出問題困境。也許你隻是了解網際網路的一部分,那麼我将帶你進入到網際網路的技術世界,看看一路從小站到大戰中有多少的坑是可以避免出現的。

6

 

2、課程找重點及注意事項

提高到架構,确實講解課程内容有很多,好比一個金字塔,這個課程是帶着大家從頂端往下分析,内容過于籠統,我們也就隻能知道個大概,不知是以然,如果一個個深挖,就是一個幕客網所有視訊的集合。                                                  是以,在這裡特别的告訴大家,我們介紹的就是從上層說起,分别準備三大塊内容:網站性能優化、開源應用、及架構應用及分析、網站安全三個課程分類進行。                                           即使是分了三個部分,也是有海量的内容存在,但是就目前網際網路的常用架構及工作模式,我們針對性的介紹一些,針對性的介紹具體某一個案例時,我将把設計到的基礎内容以别的方式提供,或者引升到。案例部分詳細介紹,注意了:重點是思路總結,我們需要掌握的就是這個。                            介紹三門課程前端服務性能優化 中間層、底層開源服務、安全分别将介紹的内容。

5

3、我們能學習到什麼?

學習到什麼,我想不用多介紹,就如本課程的标題一樣,如果你能一一的按照課程的内容學習完,那麼你将從總體上對網站架構有把控。相信借助課程中實踐的經驗總結,你也将收獲到可貴的經驗,進而以後的工作中少走彎路。

2

主要内容

常見的網站部署架構模型

小站的常用部署架構

1、集中方式

1、介紹單機部署特點 2、存在的優點和缺陷 3、典型的集中式架構示範

10

2、bs\cs架構模式

1、介紹什麼是bs及cs的架構模式 2、介紹bs\cs的架構模式特點 3、集中模式到bs\cs模式需要注意問題 4、典型的bs架構示範 

大站的常用部署架構

1、分層服務化部署

1、水準拆分與垂直拆分 2、常用的分層模式案例 3、應用、資料分層演化

2、分布式架構

1、什麼是分布式架構 2、soa面向服務模式 2、網際網路中常用的分布式架構案例 3、cdn網絡 4、glsb的實作 

4、服務的接入層、中間層、底層

示範服務接入整體架構,總體分析本課程中前端接入層,中間層底層服務有哪些。

從小站到大戰演變

4、架構演變

1、闡述架構演變模式 2、開發語言性能優化 3、整體架構的穩定性 4、網站架構設計中的沖突 5、水準拆分與垂直拆分

網站架構設計核心

衡量架構設計好壞的标準

1、網站性能中的可用性和可靠性

1、可用性與可靠性介紹 2、網站性能名額參數講解

2、網站擴充能力

1、網站架構設計之初該考慮的擴充性 2、案例分析:擴充性考慮缺失而導緻的隐患 網站上線初期帶寬預估不足導緻頁面加載緩慢   tomcat多個服務部署與獨立部署的沖突

前端服務常用重點技術

web前端性能優化

1、接入端性能優化常見方法

1、接性能優化邏輯 2、js代碼結構優化 3、多線程、異步、非阻塞實作 3、

120

1、網站接入層性能優化邏輯

2、常用的接入前端服務結構(java、php、python)

3、tomcat獨立部署還是選擇整合部署?

4、服務的動靜分離實作

15

5、lamp與lnmp

6、tengine對比nginx

7、linux系統下的多線程

8、程式的異步與非阻塞實作

9、linux系統下的io模式

2、nginx服務優化

1、詳解輕量級nginx服務及優化 2、nginx代理詳解 3、nginx服務常用結構及優化手段

70

1、nginx為什麼能脫穎而出

2、nginx系統性參數優化

3、代理服務

4、負載均衡

5、靜态資源服務

3、負載均衡服務

1、負載均衡實作特點 2、常用的負載均衡實作方式 3、lvs方案的高可用設計及實作

45

1、負載均衡的基本原理

2、不同場景下的負載均衡技術實作

3、lvs

4、持久化緩存

1、持久化與非持久化 2、建構高性能的redis持久化叢集 3、mongodb分片叢集可用性介紹及注意事項

50

1、什麼是持久化和非持久化?

2、redis中的持久化和非持久化實作

3、mongodb和redis叢集對比

4、mongodb和redis分片叢集的實作對比

5、非持久化緩存

1、一緻性哈希與哈希取模的算法實作 python程式為例 2、資料級緩存設計實作邏輯 python、php程式實作為例 3、memcache開發使用過程中的那些坑

30-40

1、非持久化緩存的特性及應用

2、用memcache建構高可用非持久化叢集

3、程式示範python中實作一緻性哈希的實作

6、頁面緩存服務

1、頁面緩存的作用 2、nginx\varnish\ats\squid緩存加速差別 3、如何有效的使用vanrish緩存加速

20-40

1、什麼時候應該考慮頁面緩存

2、頁面緩存的實作已及各種類的緩存應用對比

3、靜态内容緩存實作分類

4、varnish靜态動态接口頁面緩存的實作

案例

1、應用混部導緻網站性能故障

2、歸納應用部署常見的錯誤

3、日志錯亂寫入引發的故障

4、歸納日志管理不善導緻的其他影響

5、不好的程式設計習慣引發的故障

6、歸納程式設計習慣導緻的問題

7、緩存操作不合理導緻的系統性崩潰

20-30

1、連接配接數限制設定過小導緻緩存的短連結性質受限

2、哈希取模的算法實作容易導隻能

3、緩存資料内容次元對接口功能的影響

8、歸納緩存的使用不當造成的影響

前端服務架構設計總結

1、接入層服務架構設計邏輯總結

繼續閱讀