How a team of just two engineers tackled real-time persisted events for hundreds of millions of players শুধুমাত্র দুটি ইঞ্জিনিয়ারের সাথে, সুপারসেল তাদের মৌলিক অ্যাকাউন্ট সিস্টেমকে এক সামাজিক প্ল্যাটফর্মে পরিণত করার কঠিন কাজটি নিয়েছিল যা শত শত মিলিয়ন গেমারকে সংযুক্ত করে। অ্যাকাউন্ট ম্যানেজমেন্ট, বন্ধু অনুরোধ, ক্রস গেম প্রচার, চ্যাট, খেলোয়াড় উপস্থিতি ট্র্যাকিং, এবং টিম গঠন - এই সবগুলি তাদের পাঁচটি প্রধান গেমগুলিতে কাজ করতে হয়েছিল। সুপারসেলের সার্ভার ইঞ্জিনিয়ার এডওয়ার্ড ফেগারহোলম সম্প্রতি শেয়ার করেছেন যে তাদের শক্তিশালী দুটি দল এই কাজটি কীভাবে সমাধান করেছে. পড়ুন কিভাবে তারা একটি সহজ অ্যাকাউন্ট ম্যানেজমেন্ট টুলকে একটি ব্যাপক ক্রস-গেম সামাজিক নেটওয়ার্ক অবকাঠামোতে রূপান্তর করেছে যা অপারেটিং সহজতা এবং উচ্চ কর্মক্ষমতা উভয়ই অগ্রাধিকার দেয়। নোট: যদি আপনি এই ধরনের প্রকৌশল অর্জন সম্পর্কে শুনতে পছন্দ করেন তবে আমাদের সাথে যোগ দিন Monster Scale Summit (ফ্রি + ভার্চুয়াল)। ডিজনি + / Hulu, Slack, Canva, Uber, Salesforce, Atlassian এবং আরো ইঞ্জিনিয়াররা কৌশল এবং ক্ষেত্রে গবেষণা শেয়ার করবে। নোট: যদি আপনি এই ধরনের প্রকৌশল অর্জন সম্পর্কে শুনতে পছন্দ করেন তবে আমাদের সাথে যোগ দিন Monster Scale Summit (ফ্রি + ভার্চুয়াল)। ডিজনি + / Hulu, Slack, Canva, Uber, Salesforce, Atlassian এবং আরো ইঞ্জিনিয়াররা কৌশল এবং ক্ষেত্রে গবেষণা শেয়ার করবে। নোট Monster Scale সম্মেলন ট্যাগ: সুপারসেল কে? সুপারসেল হল ফিনল্যান্ডের হিট গেমগুলির পিছনে থাকা কোম্পানি হেই ডে, ক্ল্যাশ অফ ক্ল্যানস, বোম বিচ, ক্ল্যাশ রয়্যাল এবং ব্রাউল স্টার। কিছুটা সম্প্রতি পর্যন্ত, শত শত মিলিয়ন মাসিক সক্রিয় ব্যবহারকারীদের সেবা করার জন্য গেমগুলির জন্য সমস্ত অ্যাকাউন্ট ম্যানেজমেন্ট কার্যকারিতা কেবলমাত্র দুটি ইঞ্জিনিয়ার দ্বারা তৈরি এবং পরিচালিত হয়েছিল। সুপারসেল আইডি (Supercell ID) Supercell ID একটি মৌলিক অ্যাকাউন্ট সিস্টেম হিসাবে জন্মগ্রহণ করেছিল - কিছু ব্যবহারকারীদের অ্যাকাউন্ট পুনরুদ্ধার এবং নতুন ডিভাইসগুলিতে তাদের স্থানান্তর করতে সহায়তা করার জন্য। এডওয়ার্ড ব্যাখ্যা করেছিলেন, "ক্লায়েন্ট অ্যাকাউন্ট এপিআই-এ HTTP চাহিদা পরিচালনা করতে পারে, যা মূলত স্বাক্ষরিত টোকেন ফেরত দেয় যা ক্লায়েন্ট তাদের পরিচয় প্রমাণ করার জন্য গেম সার্ভারে প্রদর্শন করতে পারে। কিছু অপারেশন, যেমন বন্ধু অনুরোধ করা, অ্যাকাউন্ট এপিআইকে অন্য খেলোয়াড়কে একটি বিজ্ঞপ্তি পাঠাতে প্রয়োজন। দুই পথের যোগাযোগ 2020 সালের শেষে সুপারসেল আইডি প্রকল্পে যোগদান করার পরে, এডওয়ার্ড নোটিশ ব্যাকেন্ডে কাজ শুরু করেন - প্রধানত তাদের পাঁচটি গেমের মধ্যে ক্রস-প্রচারের জন্য। ক্লায়েন্টগুলি প্রক্সি সার্ভারগুলির একটি ফ্লোরে সংযুক্ত হয়েছিল, তারপর একটি রুটিং মেশিনগুলি ইভেন্টগুলি সরাসরি ক্লায়েন্টগুলিতে (খেলাটি অতিক্রম করে না)। তারা বুঝতে পেরেছিল যে তারা সুপারসেল আইডি সিস্টেমের ক্ষমতাকে উল্লেখযোগ্যভাবে বৃদ্ধি করতে দুই পথের যোগাযোগ ব্যবহার করতে পারে. এডওয়ার্ড ব্যাখ্যা করেছিলেন, "সাধারণত, এটি আমাদের এমন বৈশিষ্ট্যগুলি বাস্তবায়ন করতে দেয় যা পূর্বে গেম সার্ভারের অংশ ছিল। এর সাথে সাথে, সুপারসেল আইডি একটি ক্রস গেম সামাজিক নেটওয়ার্ক হয়ে উঠতে শুরু করে যা বন্ধু গ্রাফ, টিমিং, চ্যাট এবং বন্ধু অবস্থার ট্র্যাকিং এর মতো বৈশিষ্ট্যগুলি সমর্থন করে। সুপারসেল আইডি ক্রস-গেম সামাজিক নেটওয়ার্ক হয়ে উঠছে এই মুহূর্তে, ব্যাকেন্ডের সামাজিক নেটওয়ার্ক দিকটি এখনও একটি একক ব্যক্তি প্রকল্প ছিল, তাই তারা এটি সহজতার সাথে ডিজাইন করেছিলেন। সঠিক abstraction খুঁজে বের করুন "আমরা শুধুমাত্র একটি সহজ ত্রুটি থাকতে চেয়েছিলাম যা আমাদের সমস্ত ব্যবহারগুলি সমর্থন করবে এবং তাই একটি একক প্রকৌশলী দ্বারা ডিজাইন এবং বাস্তবায়ন করা যেতে পারে," এডওয়ার্ড ব্যাখ্যা করেছিলেন। সঠিক ত্রুটি খুঁজে বের করাটি ছিল চাবিকাঠি। Key-value store এর শীর্ষ স্তরের কীগুলি থিমগুলি যা অ্যাকাউন্ট করা যেতে পারে। প্রতিটি শীর্ষ স্তরের চাবির নিচে একটি দুটি স্তরের মানচিত্র রয়েছে - মানচিত্র (স্ট্রিং, মানচিত্র (স্ট্রিং, স্ট্রিং))। সবচেয়ে ভেতরের মানচিত্রের মানগুলিও টাইমস্ট্যাম্প করা হয়। প্রতিটি ডেটা উৎস তার নিজস্ব টাইমস্ট্যাম্প নিয়ন্ত্রণ করে এবং সঠিক অর্ডার সংজ্ঞায়িত করে। মানচিত্র (String, String) ডেটা একটি বৈশিষ্ট্যগত পরিবর্তন হবে, যেমন "মাত্রা 10 সমান" পরিবর্তন "মাত্রা 11 সমান" হবে। সঠিক ডাটাবেস খুঁজুন তাদের একটি ডাটাবেসের দরকার ছিল যা তাদের প্রযুক্তিগত প্রয়োজনীয়তাগুলি সমর্থন করবে এবং তাদের ন্যূনতম দলগুলির কারণে পরিচালিত হতে পারে। কম ল্যাটিনতার সাথে অনেক ছোট স্ক্রিপ্ট পরিচালনা করে একটি হেয়ারাক্টিক ডেটা মডেল সমর্থন একটি পরিষেবা হিসাবে ব্যাকআপ এবং ক্লাস্টার অপারেশন পরিচালনা ScyllaDB ক্লাউড একটি চমৎকার উপযুক্ত ছিল. (ScyllaDB ক্লাউড ScyllaDB এর সম্পূর্ণরূপে পরিচালিত সংস্করণ, একটি ডাটাবেস হিসাবে বিখ্যাত হিসাবে বিস্তৃতভাবে পূর্বাভাসযোগ্য কম দেরি সরবরাহ করে)। কিভাবে সবকিছু খেলবে সুপারসেল গেমগুলিতে এটি কীভাবে প্রযোজ্য তা সম্পর্কে একটি ধারণা পেতে, আমরা দুটি উদাহরণ দেখি। প্রথমত, চ্যাট বার্তা বিবেচনা করুন. একটি সহজ চ্যাট বার্তা তাদের ডেটা মডেলে নিম্নলিখিতভাবে প্রতিনিধিত্ব করা যেতে পারে: এডওয়ার্ড ব্যাখ্যা করেছিলেন, "সাবস্ক্রিপ্ট করা শীর্ষ স্তরের কীটি চ্যাট রুম আইডি। পরবর্তী স্তরের কীটি একটি টাইমস্ট্যাম্প-উইডি, তাই আমরা প্রতিটি বার্তা একটি সারি আছে এবং চ্যাট ইতিহাস অনুরোধ করতে পারেন। এডওয়ার্ডের মতে, উপস্থিতি লক্ষ্য, সুপারসেলের নতুন (এবং খুব প্রত্যাশিত) গেমটিতে ব্যাপকভাবে ব্যবহৃত "প্রস্থিতি" দেখুন: "যখন যুদ্ধের জন্য দলগুলি তৈরি করা হয়, তখন আপনি বাস্তব সময়ে আপনার বন্ধুদের avatar এবং বর্তমান নির্মাণ দেখতে চান - মূলত আপনার বন্ধুদের অস্ত্র এবং সরঞ্জামগুলি, পাশাপাশি তারা কী করছে। Players’ state data is encoded into Supercell’s hierarchical map as follows: Note that: শীর্ষ স্তরটি খেলোয়াড় আইডি, দ্বিতীয় স্তরটি টাইপ এবং অভ্যন্তরীণ মানচিত্রে ডেটা রয়েছে। সুপারসেল আইডি ডেটা বুঝতে হবে না; এটি শুধুমাত্র গেম ক্লায়েন্টদের কাছে প্রেরণ করে। Game clients don’t need to know the friend graph since the routing is handled by Supercell ID. সিস্টেম আর্কিটেকচারে গভীরে এডওয়ার্ড দ্বারা প্রদান করা হিসাবে সিস্টেম আর্কিটেকচারের একটি পরিদর্শন সঙ্গে শেষ করি। "ব্যাঙ্কেন্ডটি এপিআই, প্রক্সিজ এবং ইভেন্ট রুটিং / স্টোরেজ সার্ভারে বিভক্ত। থিমগুলি ইভেন্ট রুটিং সার্ভারে বাস করে এবং তাদের মধ্যে বিভক্ত হয়। একটি ক্লায়েন্ট একটি প্রক্সিজে সংযোগ করে, যা ক্লায়েন্টের থিম সাবস্ক্রিপশন পরিচালনা করে। প্রক্সিজ এই সাবস্ক্রিপশনগুলি উপযুক্ত ইভেন্ট রুটিং সার্ভারে রুট করে। প্রতিটি থিমের একটি প্রাথমিক এবং ব্যাকআপ শার্ড থাকে. যদি প্রাথমিকটি নিচে যায়, তাহলে প্রাথমিক শার্ড প্রতিটি বার্তাটি হারিয়ে যাওয়া বার্তাগুলি সনাক্ত করার জন্য মেমরি সেকেন্ড নম্বরগুলি বজায় রাখে। রুটিং স্তরগুলির জন্য এপিআইটি একটি সহজ পরে ইভেন্টের RPC যা থিম, টাইপ, কী, মূল্য টুপিগুলির একটি ব্যাট অন্তর্ভুক্ত করে। প্রতিটি এপিআই এর কাজটি শুধু উপরের টুপিলে প্রতিনিধিত্বে তাদের ডেটা পুনরায় লিখতে হয়। প্রত্যেকটি ইভেন্টটি সিসিল্লাডিবি-এ লিখিত হয় যাতে সাবস্ক্রাইভারদের প্রেরণ করা হয়। আমাদের এপিআইগুলি সেই মানে সমন্বয়যোগ্য যে যদি একটি এপিআই কল সফল প্রতিক্রিয়া দেয় তবে বার্তাটি সিসিল্লাডিবি-এ স্থায়ী ছিল। একই ইভেন্টটি একাধিকবার পাঠানো কোন ক্ষতি করে না কারণ ক্লায়েন্টের উপর আপডেটটি প্রয়োগ করা সংযোগের সময়, প্রক্সি আপনার সমস্ত বন্ধুদের খুঁজে বের করবে এবং তাদের থিমগুলির জন্য সাবস্ক্রাইব করবে, যার মধ্যে আপনি অন্তর্ভুক্ত চ্যাট গ্রুপগুলির জন্যও একই। একটি রুটার পুনরায় চালু করে প্রক্সি থেকে থিমগুলির জন্য একটি পুনরায় সাবস্ক্রিপশন চালু করে। আমরা প্রোটোকল বাফার ব্যবহার করি ব্যান্ডবাইডের খরচ সংরক্ষণ করার জন্য। সমস্ত লোড ভারসাম্যকরণটি একই HTTP/2 সংযোগের মাধ্যমে অনুরোধগুলি প্রক্সিতে একই TCP সকেট দ্বারা পরিচালিত হয় তা নিশ্চিত করার জন্য TCP স্তরে হয়। এটি আমাদের প্রাথমিক শোনার সময় মেমরিতে কিছু তথ্য ক্যাশ করতে দেয়, তাই আমাদের অন্যান্য অনুরোধগুলিতে পুনরাবৃত্তি করার প্রয়োজন নেই। কিন্তু খেলা শেষ হয়নি আপনি যদি পুরো প্রযুক্তি আলোচনা দেখতে চান, শুধু নিচের খেলা চাপুন: এবং যদি আপনি গেমিং বিশ্বে ScyllaDB এর ভূমিকা সম্পর্কে আরও পড়তে চান, আপনিও পড়তে চান: ইপিক গেমস: কিভাবে ইপিক গেমস NVMe এবং S3 এর সামনে একটি বাইনারি ক্যাশ হিসাবে ScyllaDB ব্যবহার করে Unreal Cloud DDC দ্বারা ব্যবহৃত বড় গেম সম্পদগুলির বিশ্বব্যাপী বিতরণকে গতিশীল করে। টেনসেন্ট গেমস: কিভাবে টেনসেন্ট গেমস Pulsar এবং ScyllaDB এর সাথে CQRS এবং ইভেন্ট সার্ভিসিং প্যাটার্ন উপর ভিত্তি করে পরিষেবা আর্কিটেকচার তৈরি করে। Discord: কিভাবে Discord ScyllaDB ব্যবহার করে তাদের বিশাল বৃদ্ধির জন্য, একটি ন্যাশনাল গেমিং প্ল্যাটফর্ম থেকে বিশ্বের বৃহত্তম যোগাযোগ প্ল্যাটফর্মগুলির মধ্যে একটিে স্থানান্তর। ইপিক গেমস: Tencent গেমস: বিতর্ক :