如果Netflix是家注重效率的大型餐廳
- CDN: 各地都有分店, 世界各地都能服務
- 自動擴展: 餐廳能依客流量自動增減人手
- 微服務架構: 就像餐廳中廚房, 收銀…各司其職
- 混沌工程: 定期消防演習增加災難復原魯棒性
- 自動化測試和部署: 自動測試餐點品質, 機器自動製作(CI), 自動送餐(CD)
- 彈性設計: 有多家食材供應商
- 用戶體驗: 好裝潢與服務
- 數據驅動決策: 依餐後問卷與銷售數據調整菜單與食材存量
- 開源技術: 開源菜單, 並在社團供群眾檢視
- 全球化: 依顧客文化背景提供差異化服務
Netflix API 架構的演變
- 單體式架構隨著公司成長成為瓶頸
- 遷移到微服務架構後管理成為瓶頸
- 引入Hystrix 防止一個服務的故障導致整個系統崩潰
- 引入Simian Army混沌工程主動引發故障,以測試系統的容錯能力
- 引入 Zuul API Gateway 作為微服務架構的入口點,提供負載均衡、路由、過濾和安全後又成為瓶頸
- GraphQL + Federated Gateway為架構設計最終解方
GraphQL
- 構建 REST API:GraphQL 可以用於構建 REST API,以提供對數據的訪問。
- 構建前端應用程序:GraphQL 可以用於構建前端應用程序,以從 REST API 中獲取數據。
- 構建後端服務:GraphQL 可以用於構建後端服務,以處理數據請求。
- 構建微服務架構:GraphQL 可以用於構建微服務架構,以將應用程序分解為更小的、可管理的組件。
上述架構可能存在於AWS EC2
- AWS S3 儲存影音資料
- AWS Kinesis串流影片
- 最後用 Open Connect CDN,傳遞靠近用戶資料中心資料,以提高傳輸速度和降低網路負擔
GraphQL 讓客戶端可以按需獲取資料,減少了網路流量,並提高了 API 的效率與靈活性,適合程式需要高度靈活的資料查詢和優異的性能,傳統RESTful API適合簡單的 CRUD 操作
Federated Gateway 讓你可以將多個 GraphQL 服務組合成一個更大的 GraphQL 服務,提供更全面的資料查詢能力
如果你覺得這篇文章很棒,請你不吝點讚 (゚∀゚)