地鐵模型分析
和絕大部分人一樣,小白每天都要乘坐地鐵上下班,那麼就拿地鐵來分析,再次深刻理解下效能。早上乘坐地鐵上班,最典型的就是北京地鐵1、5、10、13號線等,人多得簡直沒法形容!為了方便理解分析,先做如下假設。
- 某地鐵站進站只有3個刷卡機。
- 人少的情況下,每位乘客很快就可以刷卡進站,假設進站需要1s。
- 乘客耐心有限,如果等待超過30min,就會暴躁、嘮叨,甚至選擇放棄。
按照上述的假設,最初會出現如下的場景。
- 場景一:只有1名乘客進站時,這名乘客可以在1s的時間內完成進站,且只利用了一臺刷卡機,剩餘2臺等待著。
- 場景二:只有2名乘客進站時,2名乘客仍都可以在1s的時間內完成進站,且利用了2臺刷卡機,剩餘1臺等待著。
- 場景三:只有3名乘客進站時,3名乘客還能在1s的時間內完成進站,且利用了3臺刷卡機,資源得到充分利用。
想到這裡,小白越來越覺得有意思了,原來技術與生活這麼息息相關,真的可以快樂學習哦。隨著上班高峰的到來,乘客也越來越多,新的場景也慢慢出現了。
- 場景四:A、B、C三名乘客進站,同時D、E、F乘客也要進站,因為A、B、C先到,所以D、E、F乘客需要排隊,等A、B、C三名乘客進站完成後才行。那麼,A、B、C乘客進站時間為1s,而D、E、F乘客必須等待1s,所以他們3位在進站的時間是2s。
通過上面這個場景可以發現,每秒能使3名乘客進站,第1s是A、B、C,第2s是D、E、F,但是對於乘客D、E、F來說,“響應時間”延長了。
- 場景五:假設這次進站一次來了9名乘客,根據上面的場景,不難推斷出,這9名乘客中有3名的“響應時間”為1s,有3名的“響應時間”為2s(等待1s+進站1s),還有3名的“響應時間”為3s(等待2s+進站1s)。
- 場景六:假設這次進站一次來了10名乘客,根據上面的推算,必然存在1名乘客的“響應時間”為4s,如果隨著大量的人流湧入進站,可想而知就會達到乘客的忍耐極限。
- 場景七:如果地鐵正好在火車站,例如,著名的北京西站、北京站。每名乘客都拿著大小不同的包,有的乘客拿的包太大導致卡在刷卡機那(堵塞),這樣每名乘客的進站時間就會又不一樣。
小白突然想到,貌似很多地鐵進站的刷卡機有加寬的和正常寬度的兩種型別,那麼拿大包的乘客可以通過加寬的刷卡機快速進站(增加頻寬),這樣就能避免場景七中的現象。
- 場景八:進站的乘客越來越多,3臺刷卡機已經無法滿足需求,於是為了減少人流的積壓,需要再多開幾個刷卡機,增加進站的人流與速度(提升TPS、增大連線數)。
- 場景九:終於到了上班高峰時間了,乘客數量上升太快,現有的進站措施已經無法滿足,越來越多的人開始抱怨、擁擠,情況越來越糟。單單增加刷卡機已經不行了,此時的乘客就相當於“請求”,乘客不是在地鐵進站排隊,就是在站臺排隊等車,已經造成嚴重的“堵塞”,那麼增加發車頻率(加快應用、資料庫的處理速度)、增加車廂數量(增加記憶體、增大吞吐量)、增加線路(增加服務的執行緒)、限流、分流等多種措施便應需而生。
分析到這裡,小白可以熟練地把效能指標與場景結合運用起來了,初步學習成果還是不錯的。