Brief #04 · Backend

Nearest Rider Finder (Geo Search)

Medium⏱ 10-14 ঘণ্টাশীঘ্রই

৫০,০০০ চলন্ত bike এর মধ্য থেকে customer এর সবচেয়ে কাছের খালি rider কে millisecond এ খুঁজে বের করো।

Outline free · tracking সহ বানাতে Pro লাগবে

NBriefTeam এর পক্ষ থেকে

আমরা একটা delivery startup। Rider রা প্রতি ৫ সেকেন্ডে নিজের location পাঠায়, আর order এলে আমরা সবচেয়ে কাছেরটা খুঁজতে প্রতিটা rider দেখি। ৩০০ rider এ চলতো। ৫০,০০০ এ কয়েক সেকেন্ড লাগে আর dispatch screen আটকে যায়। 'সবচেয়ে কাছে কে?' প্রশ্নটা দ্রুত করো।

যা বানাবে

  1. 1একটা simulator, যেটা একটা শহরে ৫০,০০০ rider ঘোরায় আর তাদের location পাঠায়।
  2. 2Redis GEO বা PostGIS এ location রাখো, আর সবসময় তাজা রাখো।
  3. 3GET /riders/nearby?lat&lng&radius, যেটা আসল দূরত্ব অনুযায়ী সাজিয়ে সবচেয়ে কাছের খালি rider দেয়।
  4. 4Rider কে atomic ভাবে busy করো, যাতে দুইটা order একই rider কে না নেয়।
  5. 5৩০ সেকেন্ড ধরে খবর না দেওয়া rider দের বাদ দাও।

ধাপে ধাপে walkthrough

Walkthrough শীঘ্রই আসছে

এই project এর ধাপে ধাপে walkthrough, প্রতিটা ধাপে আসল output সহ, এখনো লেখা হচ্ছে। ততক্ষণ brief পড়ে নিজে চেষ্টা করতে পারো; walkthrough তৈরি হলে tracking চালু হবে।

শেষ হবে যখন

  • ৫০,০০০ rider নিয়ে nearby query ১০ ms এর নিচে উত্তর দেয়।
  • ফলাফল brute-force Haversine হিসাবের সাথে মেলে।
  • Concurrency test এ কোনো rider কখনো দুইটা order এ যায় না।
  • একটা diagram এ দেখানো, spatial index কীভাবে map কে ভাগ করে।

আরো এগোতে চাইলে

  • সরল রেখার বদলে রাস্তার দূরত্ব দিয়ে pickup এর সময় আন্দাজ করো।
  • শহর অনুযায়ী shard করো, যাতে একটা ব্যস্ত শহর বাকিদের ধীর না করে।

দেখিয়ে দাও