360私有云容器服務團隊和人工智能研究院團隊一起配合,在云端提升機器學習的效能方面進行了深入的研究和實踐,為業務提供了“人臉檢測”、“花屏檢測”、“色情檢測”、“寵物檢測”、“圖片風格化”、“文字識別”、“智能裁圖”等多種深度學習服務。
下面主要介紹實踐中涉及的“微服務網關與容器服務”技術。
一、什么是微服務架構
微服務是一種構建軟件的架構和方法。在微服務中將以前的單體應用拆分成多個小的組件,并彼此獨立。不同于將所有組件內置于一個架構中的傳統單體式應用的構建方法,在微服務架構中,所有的部分都是相互獨立的(可以使用不同的語言,不同團隊來開發不同的服務模塊)。通過合作來完成相同的任務。其中的每一個組件或流程都是微服務??偨Y微服務的特點就是:更小,更快,更強。
可能通過上面對微服務的描述還是不是特別的直觀,將傳統的單體應用架構和微服務架構進行下比較,就比較直觀了。
1. 單體應用架構
最早對于web程序的開發(比如JAVA),通常將整個程序打包到一個WAR文件中,然后直接部署到服務器即可。
單體應用架構易于測試和部署,但是在服務的可伸縮性,可靠性, 系統迭代, 跨語言程序, 團隊協作等方便沒有微服務方便。
2. 微服務架構
為了解決單體應用架構的這些諸多弊端(不是說單體應用架構不好,需要根據不同的業務場景選擇不同的服務架構),可以將單體應用架構拆分成多個獨立的小的組件。 這樣就可以每個團隊使用自己的技術棧來實現自己的組件,并在系統迭代的時候獨立地進行迭代而不影響整個應用的整體使用。
二、為什么需要微服務網關
首先介紹下什么是API網關,API網關可以提供一個單獨且統一的API入口用于訪問內部一個或多個API服務。API網關常會提供負載均衡,訪問頻率限制,認證授權,監控,緩存等功能。
通過API網關,可以將內部服務對外部用戶隱藏,而暴露給外部用戶真實需要的API,并可以對外部訪問進行訪問頻率的限制同時還可以對外部的用戶設置認證授權。來保證應用整體的穩定及安全等等。而網關內部的服務則可以根據自己的需求通過相關的協議(REST API, GRPC)進行通信。
三、微服務網關(kong)介紹
kong是一款基于nginx_lua模塊寫的高可用,易擴展的API網關。由于kong是基于nginx的,所以可以水平的擴展多個kong服務實例,通過前置的負載均衡配置把請求均勻地分到各個server,來應對大批量的網絡請求。
kong網關組成:
Kong server: 基于nginx的服務器,接收外部的api請求。 PostgreSQL: 用來存儲操作的數據。
并且kong采用插件機制進行功能的定制,插件集在API請求響應循環的生命周期中被執行。插件使用lua編寫。
四、微服務網關與容器服務結合使用
通過一個具體的例子來描述部署到容器上的服務是如何與微服務網關結合使用的。比如我們現在有人臉檢測, 寵物檢測, 鑒黃服務等將這個單獨的服務組成一個完成的應用實體來對外提供多功能的服務。
首先在容器服務平臺上部署我的三個服務實例(人臉檢測,寵物檢測,鑒黃服務)。并為這些服務實例申請vip。
服務注冊完成之后,管理端將這三個服務注冊到微服務網關(kong),kong會將注冊的信息持久化到PostgreSQL數據庫。并可以根據不同的業務為各個服務已插件的形式注冊認證授權,訪問頻率限制,CORS等插件。
當服務注冊完成之后,用戶端可以基于被授權的用戶token去訪問他們想要使用的服務。
本文只是簡單地介紹了下整體的流程。但是每一個部分都需要用戶自己去深入了解了~~