當你構建一個微服務時,你最看重什么?一個完全管理和可擴展的系統?因為托管代碼的選擇有很多,例如EC2,ECS,Elastic Beanstalk,Lambda,所以很多人不知道該如何下手。雖然每個人部署微服務模式都有自己的方式,但是下面這個模式為可擴展微服務架構提供了很好的結構。
Elastic Beanstalk
首先第一個,也是很重要的一部分是Elastic Beanstalk。這是部署自動擴展微服務的好方法,你只需通過命令行工具或管理控制臺將代碼上傳到Elastic Beanstalk即可。一旦進入到Elastic Beanstalk中,部署,容量調配,負載平衡,自動擴展就由AWS處理。
S3
S3也是很重要的一個服務,它是一個用于存儲和檢索數據的對象存儲器。S3有很多用途,例如存儲圖像、備份。特殊用例是存儲敏感文件,如私鑰,環境變量文件,這些文件將被多個實例或服務訪問和使用。最后,將S3用于較不敏感的公共訪問文件,如配置文件,Dockerfiles和鏡像。
Kinesis
Kinesis是一個允許微服務彼此溝通的工具,也可以用于類似Lambda這樣的項目進行溝通。Kinesis通過實時持久的數據流來使微服務發送事件。在持久性和批處理時,數據可以持續長達7天。
RDS
Amazon RDS是一個由AWS完全托管的、優秀的關系數據庫。在你自己的數據庫服務器上使用RDS是有益的,因為AWS會管理一切,設置、操作和擴展關系數據庫都會變得非常容易。
LAMBDA
最后,AWS Lambda允許你在不調配或管理服務器的情況下運行代碼。Lambda有很多用途,你甚至可以用它來創建整個API。它在微服務架構中的重要用途是cron jobs和image manipulation。Crons可以使用CloudWatch預定。
結論
這些AWS產品可以創建fully scalable, stateless和相互可通信的微服務。使用Elastic Beanstalk運行微服務,使用S3來存儲文件,使用Kinesis來發送事件,使用Lambda來訂閱它們并運行其他任務。最后,RDS用于輕松管理和擴展關系數據庫。