微API設(shè)計(jì)模式
推薦 + 挑錯(cuò) + 收藏(0) + 用戶評(píng)論(0)
摘要:本文介紹了微API設(shè)計(jì)模式的基本概念、組網(wǎng)及其優(yōu)勢(shì)。以下是譯文
互聯(lián)網(wǎng)上的軟件部署始于服務(wù)器。然后,有了虛擬化。 IaaS(infrastructure-as-a-service, 基礎(chǔ)設(shè)施即服務(wù))是云計(jì)算的第一步,它使得人們可以在一小時(shí)內(nèi)配置好虛擬服務(wù)器。 PaaS(platform-as-a-service, 平臺(tái)即服務(wù))是在物理機(jī)器和開(kāi)發(fā)人員的代碼之間增加了一個(gè)抽象層。最后,構(gòu)建微服務(wù)(而不是單體、集成API和遠(yuǎn)程托管服務(wù))的趨勢(shì)導(dǎo)致了當(dāng)前階段無(wú)服務(wù)器平臺(tái)云計(jì)算或FaaS(功能即服務(wù))的出現(xiàn),在此平臺(tái)上部署了小單元的代碼,以及由托管服務(wù)提供商自動(dòng)管理的整個(gè)基礎(chǔ)設(shè)施。
基于無(wú)服務(wù)器和FaaS的思想,我在這里要介紹一個(gè)我個(gè)人稱之為微API的概念。我將其定義為描述一段軟件的設(shè)計(jì)模式,這個(gè)軟件:
向其消費(fèi)者公開(kāi)Web API(REST或RPC風(fēng)格),
在單個(gè)文件中實(shí)現(xiàn),具有合理的低LOC(lines of code,代碼行),
依賴于一個(gè)標(biāo)準(zhǔn)化的框架和一系列的依賴關(guān)系
無(wú)需關(guān)心本地狀態(tài)。
微API在“執(zhí)行引擎”中運(yùn)行,執(zhí)行引擎提供了標(biāo)準(zhǔn)化的框架和依賴關(guān)系。由于自定義邏輯非常小,因此微API可能是按需部署的,這意味著每當(dāng)需要由特定的微API處理的請(qǐng)求出現(xiàn)時(shí),可以從存儲(chǔ)庫(kù)中下載代碼,然后緩存到引擎內(nèi)并立即執(zhí)行。執(zhí)行引擎被設(shè)計(jì)成多租戶的模式。它將自定義代碼放在沙箱中,這樣,不同的微API之間就不會(huì)相互影響。
由于其按需部署和多租戶的設(shè)計(jì),分布在世界各地服務(wù)器上的托管微API執(zhí)行引擎網(wǎng)絡(luò)可以像CDN(Content Delivery Network, 內(nèi)容傳送網(wǎng)絡(luò))那樣工作。如果代碼在檢索到之后并沒(méi)有完成緩存,那么就會(huì)在距離最近的消費(fèi)者處接收并執(zhí)行API請(qǐng)求。有了這樣一個(gè)邊緣服務(wù)器網(wǎng)絡(luò),服務(wù)器端邏輯的分發(fā)和擴(kuò)展可以像分發(fā)靜態(tài)Web內(nèi)容一樣簡(jiǎn)單!在前期,不需要準(zhǔn)備任何資源,這意味著托管一個(gè)微API端的成本幾乎為零。每秒數(shù)千個(gè)請(qǐng)求的高可擴(kuò)展性可以通過(guò)水平或垂直的方式擴(kuò)展執(zhí)行引擎來(lái)實(shí)現(xiàn)。另一方面,在部署了引擎服務(wù)器之后,微API也可以在單租戶環(huán)境中使用。引擎服務(wù)器可部署在私有和混合云中,甚至部署在網(wǎng)絡(luò)邊緣的設(shè)備中。
與其他無(wú)服務(wù)器環(huán)境不同,由于框架和依賴關(guān)系的選擇,以及執(zhí)行引擎的影響,微API可能看起來(lái)限制很大。這是故意這么設(shè)計(jì)的,因?yàn)檫@樣使得開(kāi)發(fā)人員能夠?qū)W⒂跇I(yè)務(wù)邏輯,可以快速啟動(dòng)大量獨(dú)立的微API,而無(wú)需進(jìn)行架構(gòu)決策并管理每個(gè)微API的依賴關(guān)系。另外,還可以針對(duì)特定要求設(shè)計(jì)不同的執(zhí)行引擎。
微API是完成以下任務(wù)的完美選擇:
一個(gè)API是另一個(gè)API的代理或外觀,用于橋接不同的身份驗(yàn)證協(xié)議或轉(zhuǎn)換數(shù)據(jù)格式(例如,將XML轉(zhuǎn)換為JSON)。
在調(diào)用其他API或Webhook之前修改或檢查數(shù)據(jù)的webhook接收器。(譯者注:Webhook是用戶通過(guò)自定義回調(diào)函數(shù)的方式來(lái)改變Web應(yīng)用的一種行為)
在通過(guò)另一個(gè)API或基于云的存儲(chǔ)系統(tǒng)在存儲(chǔ)數(shù)據(jù)之前,需要一個(gè)簡(jiǎn)單的數(shù)據(jù)驗(yàn)證層。
將來(lái)自多個(gè)API的數(shù)據(jù)組合成單個(gè)響應(yīng)。
具有靜態(tài)或半靜態(tài)響應(yīng)的模型。
微服務(wù)架構(gòu)中的路由組件。
總而言之,微API就像膠水一樣非常有用,它可以通過(guò)易于創(chuàng)建和部署的自定義代碼來(lái)連接任何東西,使它們比可視化集成和聚合服務(wù)更具通用性。
在CloudObjects公司,我們正在構(gòu)建一個(gè)基于PHP和Silex 微框架的微API執(zhí)行引擎,它利用PHPSandbox來(lái)提供一個(gè)安全的運(yùn)行時(shí)環(huán)境。我們給它起了個(gè)名字叫phpMAE。phpMAE是圍繞著CloudObjects Core和其他即將到來(lái)的CloudObjects產(chǎn)品的集成而設(shè)計(jì)的,它為開(kāi)發(fā)和混合部署以托管服務(wù)和完全開(kāi)源的形式來(lái)分發(fā)提供。 微API的配置和源代碼存儲(chǔ)在CloudObjects Core中,并通過(guò)CloudObjects Core來(lái)部署。
非常好我支持^.^
(0) 0%
不好我反對(duì)
(0) 0%
下載地址
微API設(shè)計(jì)模式下載
相關(guān)電子資料下載
- Pipeline中throwIt的用法 62
- Python怎么使用漫威庫(kù) 62
- 如何實(shí)現(xiàn)RTOS、中間件和芯片廠商API的跟蹤可觀察性? 178
- 深入探討Granite Rapids和Sierra Forest處理器架構(gòu)技術(shù) 20
- 基于OpenVINO Python API部署RT-DETR模型 107
- MaaS,云廠商在打一場(chǎng)“翻身仗” 525
- Nginx常用配置與命令 20
- 愛(ài)立信消費(fèi)者實(shí)驗(yàn)室報(bào)告:差異化的5G連接為運(yùn)營(yíng)商帶來(lái)商機(jī) 230
- 緩存的好處和類型 84
- 工程師分享的7個(gè)編程習(xí)慣 103