1. 概括
第一章主要介紹了什么是API網(wǎng)關,不同架構場景下網(wǎng)關的功能钝诚,API的生命周期颖御,網(wǎng)關的理論基石“泛化調用”,網(wǎng)關中的管道概念凝颇,介紹了管道的概念潘拱,管道的實現(xiàn),管道的優(yōu)缺點拧略,又引申介紹了責任鏈模式芦岂,介紹了網(wǎng)關宕機的三種情況:cpu滿載、磁盤滿載垫蛆、網(wǎng)路異常禽最,又引申介紹了servlet3中異步從而實現(xiàn)全異步的網(wǎng)關腺怯,最后介紹了網(wǎng)關的脫庫與緩存,概括了網(wǎng)關的七大功能:降級川无、限流呛占、熔斷、線程池隔離懦趋、管道技術晾虑,配置熱更新和異步。
2. 什么是網(wǎng)關
網(wǎng)關是將所有的API的調用統(tǒng)一接入API網(wǎng)關層仅叫,由網(wǎng)關負責接入和輸出帜篇。
網(wǎng)關與代理的區(qū)別:代理是純粹的數(shù)據(jù)透傳,協(xié)議不會發(fā)生變化诫咱;網(wǎng)關在數(shù)據(jù)透傳的背景下笙隙,還會涉及協(xié)議的轉換。
API網(wǎng)關的核心功能包括:統(tǒng)一接入坎缭、協(xié)議適配竟痰、流量管控與容錯、以及安全防護掏呼。
3. API的生命周期
設計→構建→文檔→測試→分析→運行→下線
4. 泛化調用
這里的泛化指的是一個動作凯亮,不使用具體的POJO,直接使用Map這個集合對象來裝配對象哄尔。使用泛化調用以后,我們不需要接口提供方的Jar包即可實現(xiàn)遠程調用柠并。
5. 管道技術
這里的管道不是指操作系統(tǒng)的管道岭接,而是一個抽象的概念,就是把在API網(wǎng)關內的線性的功能(如:參數(shù)校驗臼予、黑白名單鸣戴、流量限制、接口調用等)都等封裝成一個管道粘拾,按照順序組織起來窄锅,消息按照管道池里的排列順序進行。
使用管道的優(yōu)點在于:代碼層次更加清晰缰雇,省去了大量的if-else邏輯判斷入偷;同時可以對這些管道進行熱插拔。
管道的實現(xiàn)思想和責任鏈模式類似械哟。
6. 責任鏈模式
責任鏈模式(Chain of Responsibility Pattern)為請求創(chuàng)建了一個接收者對象的鏈疏之。這種模式給予請求的類型,對請求的發(fā)送者和接收者進行解耦暇咆。這種類型的設計模式屬于行為型模式锋爪。
在這種模式中丙曙,通常每個接收者都包含對另一個接收者的引用。如果一個對象不能處理該請求其骄,那么它會把相同的請求傳給下一個接收者亏镰,依此類推。
責任鏈模式與管道技術的區(qū)別在于:管道技術更加靈活拯爽,它是我們自定義的一種方式索抓,責任鏈的使用相對受限。
7. 傳統(tǒng)網(wǎng)關宕機的三種情況
7.1 CPU滿載
●cpu利用率:程序運行時期間實時占用的cpu百分比某抓。
●cpu負載:一段時間內正在使用和正在等待使用的cpu平均任務數(shù)(top命令)
API網(wǎng)關的訪問量大且依賴系統(tǒng)多纸兔,如果調用的API性能突然變差,在大訪問量的情況下否副,線程數(shù)會逐漸升高汉矿,直至將cpu的資源耗盡,蔓延至整個網(wǎng)關集群备禀,這就是雪崩效應洲拇。
7.2 磁盤滿載
當網(wǎng)關API中日志打印不合理的情況下,一旦API出錯曲尸,就會有大量的error日志寫入磁盤赋续,導致磁盤資源耗盡。
7.3 網(wǎng)絡異常
網(wǎng)絡異常將導致API網(wǎng)關返回給用戶時間變長另患,調用時間變長纽乱,這會導致網(wǎng)關系統(tǒng)的線程數(shù)增多,如果短時間內不能恢復昆箕,則整個網(wǎng)關集群內的cpu都將資源耗盡鸦列。
8. 全異步網(wǎng)關
對于一個API網(wǎng)關來說,它屬于I/O密集型場景鹏倘,我們使用全異步網(wǎng)關使我們無需再關注CPU和網(wǎng)絡薯嗤,全異步網(wǎng)關下線程數(shù)不再會成為網(wǎng)關性能的瓶頸。
9.脫庫和緩存
這里指的脫庫實際上是指的脫離傳統(tǒng)數(shù)據(jù)庫如MySQL纤泵,使用緩存如Redis骆姐,并且利用Redis的過期失效功能實現(xiàn)多級緩存或者使用緩存持久化實現(xiàn)多級緩存。