前陣子學習了java里面的微服務框架,無奈。新接手的項目是python寫的。所以又只能切換回python
其實Python也有自己的微服務框架,其中用的最多的就是nameko,nameko框架輕便,使用簡單,易上手,是一個很不錯的微服務框架
參考博客
https://blog.csdn.net/eagleuniversityeye/article/details/102722741
一:微服務架構原理
微服務架構的實現方式:
微服務架構最重要的就是使用什么方式進行服務間通信(也稱作服務調用),按照通信方式的不同,主要可以分為同步通信和異步通信兩種方式。
同步通信:
同步調用比較簡單,一致性強,但是容易出調用問題,性能體驗上也會差些。同步通信最常用的兩種協議是RESTful和RPC,而目前使用最廣泛,最有名的兩種微服務框架Spring Cloud和Dubbo分別使用了RESTful和RPC協議。RESTful和RPC兩種協議各有優勢,具體使用要看業務場景。
Dubbo框架是一個非常流行的采用同步通信的分布式微服務框架,下圖就是Dubbo框架的工作原理圖:
首先一個微服務應用程序需要有服務的生產者和服務的消費者,另外還需要一個注冊中心(常見的有zookeeper和rabbitmq等)來管理和調度服務。微服務架構的程序運行的一般步驟為:
- 服務提供方,即生產者啟動服務,並將服務提交到注冊中心注冊服務
- 服務需求方,即消費者連接到注冊中心,向注冊中心發出請求,申請需要的服務
- 注冊中心根據消費者發出的請求來調度服務,將對應的服務提供者(生產者)的信息發送給消費者
- 消費者和生產者之間建立連接,消費者調用服務
- 記錄服務調用過程中的信息
異步通信:
異步通信一般通過消息中間件來進行服務間通信,消息中間件能為調用之間提供的緩沖,確保消息積壓不會沖垮被調用方,同時能保證調用方的服務體驗,繼續干自己該干的活,不至於被后台性能拖慢。不過需要付出的代價是一致性的減弱。
nameko框架就是一個采用異步通信方式的微服務框架,采用RabbitMQ消息隊列作為消息中間件,原理非常簡單,使用起來也很方便。