Python 對微服務架構有效嗎?
在選擇適合微服務架構的編程語言時,Python是其中一種選擇。它具有活躍的社區、更好的原型設計以及在開發人員中受歡迎等好處。它有一些限制,因此可以使用其他語言來避免它們。
快速開發架構風格回顧與統計
兩種主要的開發架構風格是單體架構和微服務架構。Monolithic 具有一體化的原則,并作為一個整體結構發揮作用,最適合小型開發項目或初創企業。當一個平臺增長并且業務需要復雜的應用程序時,將其拆分為微服務架構是合理的。
一些語言和框架更適合構建微服務架構。Java、Javascript 和 Python被列為微服務開發最流行的語言。根據這篇 DZone帖子,Java 是大多數人 (82%) 的首選,其次是 Node.js (40%),以及 Python 和客戶端 JavaScript (31%)。根據JetBrains,微服務架構中最受歡迎的 3 種編程語言是 Java(41%)、Javascript(37%)和 Python(25%)。
有些更適合單體架構。事實上,許多企業選擇構建單體應用程序,因為直到幾十年前單體方法才更為普遍。正如我們所看到的,Python 中的微服務并不是首選,而是經常被開發人員選擇,所以讓我們詳細討論一下。
Python 中的微服務
沒有靜態類型系統的動態語言將適合微服務架構。編程語言和這種架構的結合提供了在軟件中創建獨特解決方案和復雜應用程序的機會。
從技術上講,可以在微服務之間建立通信的每種語言都可以工作。在 Python 中創建微服務允許使用在其他地方可能不可用的某些功能/庫/工具。此外,如果您需要快速迭代并且團隊可以使用 Python 做到最好,這將是正確的選擇。在 Python 中尋求功能,因為它是一種面向對象的語言,因此添加特定功能是有益的。
Python中微服務架構的主要類型
為了理解 Python 中微服務的本質,讓我們看一下它們的兩種不同類型:all-to-all 服務和事件驅動類型。
All-to-all 服務看起來類似于通常的開發過程。Python中的微服務之間的關系部分是垂直的,所以它們構成了一個鏈條,并且被一個一個地激活。這里的微服務之間的通信更加嚴格。all-to-all 服務類似于單體方法,但分為單獨的塊。
在事件驅動類型的微服務架構中,通信更快更復雜。這里的原則是微服務在特定條件后被觸發。換句話說,當用戶和應用程序交互(請求)時,軟件會執行某些動作(事件)。
微服務之間的通信
基于微服務的應用程序不像單體應用程序那么簡單,因此它們之間的通信更加混亂。在這里,進程不會相互激活,而是對事件或請求做出反應。
單獨的服務需要稱為消息代理的特定軟件來創建連接。它們具有不同的功能和細節。Amazon Web Services 提供現成的解決方案,但開發團隊可以自己選擇消息代理。最流行的是 RabbitMQ、ZeroMQ、Apache ActiveMQ、Apache Kafka、IBM MQ 等。
Python 在微服務架構中的優勢
- 使用正確的 API 格式,原型制作比其他語言更容易和更快。原型設計有助于糾正設計問題和識別改進。
- Python 允許開發人員自動化微服務的系統供應和配置。單個代碼更改會在整個代碼庫中復制。
- 它與 ASP 和PHP等傳統語言兼容,有助于創建 Web 服務前端來托管微服務。
- 當您查找某些信息時,活躍的 Python 開發人員社區會提供強大的支持和資源。這并不意味著其他語言沒有,但 Python 通常非常流行。
Python在微服務架構中的劣勢
- 執行速度可能會受到影響。Python 是一種解釋型語言,因此它在執行時會生成非機器代碼。之后,CPython、Jython、PyPy 或 PyCharm 等解釋器在運行時將其轉換為在 CPU 虛擬環境中執行的字節碼指令。一些語言編譯為本機代碼,執行速度更快(C 和 C++)。
- 動態類型可能會導致許多錯誤和崩潰。一些在編譯期間被忽略的錯誤可能會在運行時出現。這是有風險的,可能會導致延誤或崩潰。開發人員需要專注并不斷測試應用程序流程。這似乎很明顯,但這增加了額外的工作。
我對 Python 微服務的見解
我們在微服務架構上擁有相當多的基于 Python 的應用程序。兩個最流行的項目框架是 Flask 和 Django。我們與他們合作的原因是:
- Django有各種可在項目中使用的工具。它也更快,但是為您做出了一些選擇,因此如果您不同意或不想要獨特的應用程序要求,請使用其他框架,如 Flask 或 Fast API。
- Python 適合任何規模和經驗水平的團隊。為什么?由于該語言在開發人員中很受歡迎,即使它在表現力和自由度方面都可以很好地擴展,它也可能是結構化和可控的。
- 對于微服務架構,有比 Python 更好的替代品,比如 Javascript,但有些客戶只是更喜歡它。龐大的社區、許多現成的解決方案和快速的開發使其熟悉且值得信賴。
結論
如果您有應用創意并希望使用微服務架構進行開發,請調查最流行的框架和語言,并根據您需要的功能、團隊的專業知識和您擁有的資源選擇一種。業務邏輯和業務能力在這里至關重要,因此當您擁有復雜的系統、想要持續交付并需要異步通信等功能時,請考慮微服務應用程序。在其他情況下,使用 Python 實現微服務可能很昂貴且不合理。