作者:個推應用平臺基礎架構高級研發工程師 阿飛
在微服務架構中,不同的微服務可以有不同的網路地址,各個微服務之間通過互相調用完成用戶請求,客戶端可能通過調用N個微服務的介面完成一個用戶請求。因此,在客戶端和服務端之間增加一個API網關成為多數微服務架構的必然選擇。
在個推的微服務實踐中,API網關也起著至關重要的作用。一方面,API網關是個推微服務體系對外的唯一入口;另一方面,API網關中實現了很多後端服務的共性需求,避免了重複建設。
個推微服務網關的設計與實現
個推微服務主要是基於Docker和Kubernetes進行實踐的。在整個微服務架構中,最底層的是個推私有部署的Kubernetes集羣,在集羣之上,部署了應用服務。
個推的應用服務體系共分為三層,最上一層是網關層,接著是業務層,最下面是基礎層服務。在部署應用服務時,我們使用了Kubernetes的命名空間對不同產品線的產品進行隔離。除了應用服務外, Kubernetes集羣上還部署了Consul來實現配置的管理、Kube-DNS實現服務註冊與發現,以及一些輔助系統來進行應用和集羣的管理。
下圖是個推微服務體系的架構圖。