Skip to content
GitHub

အသေးစိတ် Design နှင့် အဓိကဆုံးဖြတ်ချက်များ

အဆင့် ၆: ဆက်သွယ်မှုပုံစံများကို ရွေးချယ်ခြင်း

Section titled “အဆင့် ၆: ဆက်သွယ်မှုပုံစံများကို ရွေးချယ်ခြင်း”

ကျွန်တော်တို့ service တွေက မတူညီတဲ့အလုပ်တွေအတွက် တစ်ခုနဲ့တစ်ခု ဘယ်လိုဆက်သွယ်ကြမလဲဆိုတာ ဆုံးဖြတ်ကြရအောင်။

  • ကားငှားသူမှ ခရီးစဉ်စတင်ခြင်း - ကားငှားသူဆီက အတည်ပြုချက် (confirmation) လိုအပ်ပါတယ်။ ဒါကြောင့် Rider’s App (ကျွန်တော်တို့ တည်ဆောက်နေသော App) ကနေ Trip Service ကို Synchronous REST API call တစ်ခုပို့ပေးတာ အဓိပ္ပာယ်ရှိပါတယ်။

  • ကားသမား၏ Location Update များ - ဒါတွေက မကြာခဏ update လုပ်ဖို့လိုအပ်ပြီး၊ real-time ဖြစ်ကာ၊ များသောအားဖြင့် တစ်လမ်းသွားဆက်သွယ်ခြင်း (ကားသမားဆီက server သို့) ဖြစ်ပါတယ်။ ဒါကြောင့် Location Service ကို WebSockets သို့မဟုတ် gRPC လိုမျိုး high-performance, low-latency protocol တစ်ခုသုံးတာက ရွေးချယ်မှုကောင်းတစ်ခုပါ။

  • ကားသမားတစ်ဦးအား ခရီးစဉ်အသစ်အကြောင်း အကြောင်းကြားခြင်း - Trip Service က ကားသမားရဲ့ Response ကို စောင့်မနေသင့်ပါဘူး။ ဒါက Asynchronous events တွေသုံးဖို့ အကောင်းဆုံးအချိန်ပါပဲ။ Trip Service က RideRequested event တစ်ခုကို ထုတ်လွှင့် (publish) ပြီး၊ Notification Service က အဲဒီ event ကို subscribe ကာ အနီးအနားက ကားသမားတွေဆီကို notification ပို့ပေးနိုင်ပါတယ်။

အဆင့် ၇: Database အမျိုးအစားများ ရွေးချယ်ခြင်း (Polyglot Persistence)

Section titled “အဆင့် ၇: Database အမျိုးအစားများ ရွေးချယ်ခြင်း (Polyglot Persistence)”

Service တစ်ခုချင်းစီရဲ့ အလုပ်အတွက် မှန်ကန်တဲ့ database ကို ရွေးချယ်ကြပါမယ်။

  • Rider & Driver Services - ဒါက ဖွဲ့စည်းပုံကျနပြီး၊ အမြဲတမ်းမှန်ကန်နေဖို့လိုအပ်တဲ့ user profile data တွေပါ။ ဒါကြောင့် SQL database (PostgreSQL လိုမျိုး) က ရွေးချယ်မှုကောင်းတစ်ခုပါ။

  • Trip Service - ခရီးစဉ်တစ်ခုမှာ အဆင့်တွေအများကြီးနဲ့ မှတ်တမ်းအပြည့်အစုံရှိပါတယ်။ ခရီးစဉ်တစ်ခုချင်းစီကို ပြောင်းလွယ်ပြင်လွယ်ရှိတဲ့ document တစ်ခုအနေနဲ့ သိမ်းဆည်းတာက အဓိပ္ပာယ်ရှိပါတယ်။ ဒါကြောင့် Document Database (MongoDB လိုမျိုး) က သင့်တော်ပါတယ်။

  • Location Service - ဒီ service က location data တွေကို အလွန်မြန်မြန်ရေးနိုင်ဖို့၊ ပြီးတော့ “nearest drivers” ဆိုတဲ့ query တွေကို မြန်မြန်ဖတ်နိုင်ဖို့ လိုအပ်ပါတယ်။ ဒါကြောင့် Key-Value သို့မဟုတ် Geospatial Database (Redis (သို့) အထူးပြု DB လိုမျိုး) က အကောင်းဆုံးပါပဲ။

အဆင့် ၈: အဓိကဆုံးဖြတ်ချက်တစ်ခုကို ADR ဖြင့် မှတ်တမ်းတင်ခြင်း

Section titled “အဆင့် ၈: အဓိကဆုံးဖြတ်ချက်တစ်ခုကို ADR ဖြင့် မှတ်တမ်းတင်ခြင်း”

ကျွန်တော်တို့ရဲ့ အရေးကြီးတဲ့ ရွေးချယ်မှုတစ်ခုကို မှတ်တမ်းတင်ကြည့်ကြရအောင်။

ADR for Asynchronous events for Ride Request