加入Talkhouse家庭? |基於WEBRTC的同行,使用MERN堆棧構建peer語音,視頻通話和消息傳遞網絡應用程序
基於事件驅動的異步通信的微服務構建了使用Express,TypeScript,Nats-streaming和Next.js創建的電子商務應用
這是一個基於電子商務的Web應用程序,用於購買和銷售基於微服務架構在城市周圍發生的不同實時和有趣活動的門票。該應用程序分為多個單獨的服務,這些服務通過事件總線通過發布事件相互交談。每項服務都負責處理和實施應用程序的特定功能,例如Auth Service處理身份驗證,訂單處理訂單,付款服務實施用戶付款,所有這些服務都可以正常運行,並通過事件總線(NATS-Streaming)運行整個應用程序,並通過事件總線(NATS-Streaming)運行整個應用程序
使用微服務體系結構,而不依賴單片模式,使應用程序更耐用,容錯,高度可用,並增加了應用程序的UP時間。因此,如果其中一項服務崩潰,則應用程序的其他部分仍將起作用並可用於用戶。微服務和分佈式系統是現代軟件和後端工程的核心。
Next.js用於服務器端渲染和構建前端Express.js用於建造後端Mongodb作為數據庫Mongoose作為ORMTypescript ,後端完全寫在打字稿中,以防止在沒有提示的情況下流動的事件數量時,您會遇到頭痛StripeJest and Supertest測試DockerKubernetes用於Conatiner編排Skaffold命令行工具,可促進Kubernetes本地應用的持續開發。使使用和管理Kubernetes和不同的Kubernetes服務和部署變得更加容易。NATS Streaming被用作事件總線或消息隊列,用於公開和處理不同服務發出的事件。Bull.js是一個快速且強大的隊列系統。它用於實施付款到期計時器。該應用程序分為7個服務,可處理和實施應用程序的特定功能和功能:
auth處理整個應用程序身份驗證和授權。使用基於JWT和Cookie的身份驗證。expiration處理付款到期計時器,以確保用戶在指定的時間範圍內付款。orderspaymentstickets (創建,更新,獲取)。該電子商務應用程序沒有出售產品,而是出售城市周圍發生的不同現場活動的門票。common所有常見功能,例如要求,錯誤處理以及其他服務共享的其他中間件和功能都將分組在一起。該服務作為NPM軟件包發布,並安裝在其他服務中。client處理和實現應用程序的前端。infra管理運行該應用程序的所有Kubernetes部署和服務(.YAML)文件每個服務,MogongoDB數據庫和NATS-STREAMING SERVER都被停靠為Docker容器。 Docker Conatiners由各自的Kubernetes部署管理和精心策劃。不同Kuberentes部署之間的通信受服務Objecttype的約束。最終,使用Ingress-Service,它使用Ingress-nginx(使用NGINX的Ingress Controller)作為反向代理,而負載平衡器將代理或直接輸入請求在ticketing.dev hostname下向其各自的服務。 Skaffold用於通過使用Skaffold.yaml文件的單個命令skaffold dev啟動和運行所有Kubernetes部署和服務。
在本地計算機上啟動並運行該項目是一項眾所周知的任務。它需要對Docker和Kubernetes生態系統的知識。如果您仍在應對挑戰,或者沒有生命,請嘗試使它起作用。確保已安裝了Docker,Kubernetes和Skaffold。設置所需的環境變量並運行以下命令:
skaffold dev
Boom應用程序將啟動並運行,無需額外的設置和依賴項。
刪除Skaffold部署的任何資源並停止運行所有部署,服務和容器
skaffold delete
只有在沒有生命的情況下,嘗試在本地進行跑步和測試。否則,我不是責怪你撓頭的人嗎?在試圖理解這些服務驅動的交流中的微服務時,服務在服務中?