發(fā)布時間:2022-02-19作者來源:優(yōu)智互聯(lián)瀏覽:1068
分布式服務(wù)架構(gòu)、微服務(wù)架構(gòu)與 API 網(wǎng)關(guān)
1. 什么是API網(wǎng)關(guān)(API Gateway)
其實,網(wǎng)關(guān)跟面向服務(wù)架構(gòu)(SOA)和微服務(wù)架構(gòu)(MSA)有很深的淵源。
十多年以前,銀行等金融機構(gòu)完成全國業(yè)務(wù)系統(tǒng)大集中以后,分散的系統(tǒng)都變得集中,也帶來了各種問題:業(yè)務(wù)發(fā)展過快如何應(yīng)對,對接系統(tǒng)過多如何集成和管理。為了解決這些問題,業(yè)界實現(xiàn)了作用于渠道與業(yè)務(wù)系統(tǒng)之間的中間層網(wǎng)關(guān),即綜合前置系統(tǒng),由其適配各類渠道和業(yè)務(wù),處理各種協(xié)議接入、路由與報文轉(zhuǎn)換、同步異步調(diào)用等操作。
人們基于SOA的理念,在綜合前置的基礎(chǔ)上,進一步增加了服務(wù)的元數(shù)據(jù)管理、注冊、中介、編排、治理等功能,逐漸形成了企業(yè)服務(wù)總線(ESB)。
面向服務(wù)架構(gòu)(SOA)是一種建設(shè)企業(yè)IT生態(tài)系統(tǒng)的架構(gòu)指導(dǎo)思想。SOA的關(guān)注點是服務(wù),服務(wù)最基本的業(yè)務(wù)功能單元由平臺中立性的接口契約來定義。通過將業(yè)務(wù)系統(tǒng)服務(wù)化,可以將不同模塊解耦,各種異構(gòu)系統(tǒng)間可以輕松實現(xiàn)服務(wù)調(diào)用、消息交換和資源共享。不同于以往的孤立業(yè)務(wù)系統(tǒng),SOA強調(diào)整個企業(yè)IT生態(tài)環(huán)境是一個大的整體。整個IT生態(tài)中的所有業(yè)務(wù)服務(wù)構(gòu)成了企業(yè)的核心IT資源。各個系統(tǒng)的業(yè)務(wù)拆解為不同粒度和層次的模塊和服務(wù),服務(wù)可以組裝到更大的粒度,不同來源的服務(wù)可以編排到同一個處理流程中,實現(xiàn)非常復(fù)雜的集成場景和更加豐富的業(yè)務(wù)功能。
SOA從更高的層次對整個企業(yè)IT生態(tài)進行統(tǒng)一的設(shè)計與管理,應(yīng)用軟件被劃分為具有不同功能的服務(wù)單元,并通過標準的軟件接口把這些服務(wù)聯(lián)系起來,以SOA架構(gòu)實現(xiàn)的企業(yè)應(yīng)用可以更靈活快速地響應(yīng)企業(yè)的業(yè)務(wù)變化,實現(xiàn)新舊軟件資產(chǎn)的整合和復(fù)用,降低軟件整體擁有成本。
當然基于ESB這種集中式管理的SOA方案也存在種種問題,特別是在面向互聯(lián)網(wǎng)技術(shù)領(lǐng)域的爆發(fā)式發(fā)展的情況下。
2. 分布式服務(wù)架構(gòu)、微服務(wù)架構(gòu)與API網(wǎng)關(guān)
近年來,隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,為了解決以ESB為代表的集中式管理的SOA方案的種種問題,以Apache Dubbo(2011年開源后)與Spring Cloud為代表的分布式服務(wù)化技術(shù)的出現(xiàn),給了SOA實現(xiàn)的另外一個選擇:去中心化的分布式服務(wù)架構(gòu)(DSA)。分布式服務(wù)架構(gòu)技術(shù)不再依賴于具體的服務(wù)中心容器技術(shù)(比如ESB),而是將服務(wù)尋址和調(diào)用完全分開,這樣就不需要通過容器作為服務(wù)代理。
之后又在此基礎(chǔ)上隨著REST、Docker容器化、領(lǐng)域建模、自動化測試運維等領(lǐng)域的發(fā)展,逐漸形成了微服務(wù)架構(gòu)(MSA)。在微服務(wù)架構(gòu)里,服務(wù)的粒度被進一步細分,各個業(yè)務(wù)服務(wù)可以被獨立地設(shè)計、開發(fā)、測試、部署和管理。這時,各個獨立部署單元可以選擇不同的開發(fā)測試團隊維護,可以使用不同的編程語言和技術(shù)平臺進行設(shè)計,但是要求必須使用一種語言和平臺無關(guān)的服務(wù)協(xié)議作為各個單元之間的通信方式。