অ্যাসিনক্রোনাস আন্তঃ যোগাযোগ পরিচালনা করার জন্য সেরা অনুশীলন?


10

ক্রেডিট কার্ড প্রসেসিং পরিচালনার জন্য সম্প্রতি একটি প্রকল্প শেষ করেছেন। আমি যে সমস্যার মুখোমুখি হয়েছিল তার মধ্যে একটি হ'ল নোটিফিকেশন বার্তাগুলির বিলম্ব / সম্ভাব্য ব্যর্থতা পরিচালনা করা। সবচেয়ে জটিল উদাহরণটি হ'ল:

  • একটি বহিরাগত সিস্টেম অর্থ প্রদানের জন্য অনুরোধ প্রেরণ করে
  • আমার সিস্টেম সেই অনুরোধটিকে পেমেন্ট গেটওয়েতে অনুরোধে রূপান্তরিত করে
  • গেটওয়েতে ব্যবহারকারী পাঠানো
  • ব্যবহারকারী অর্থ প্রদানের জন্য অপেক্ষা করছে
  • ব্যবহারকারী আমার সিস্টেমে ফিরে আসছেন তবে সিস্টেম সাফল্য / ব্যর্থতার বিজ্ঞপ্তি না পাওয়া পর্যন্ত রাখা হচ্ছে
  • ব্যর্থতার উপর নির্ভর করে ব্যবহারকারীকে বাহ্যিক সিস্টেমে ফেরত পাঠানো

আরও কঠিন বিষয়টি ছিল যে প্রজ্ঞাপনটি প্রেরণে ব্যর্থ হওয়ার পরে গেটওয়ে প্রতি 15 মিনিটের মধ্যে কয়েক ঘন্টা ধরে বিজ্ঞপ্তি প্রেরণের চেষ্টা করে।

মুলতুবি লেনদেনের একটি ডাটাবেস রেকর্ড ব্যবহার করে এবং এরপরে রিটার্ন থেকে সাফল্য এবং ব্যর্থতা এবং এর সাথে সাথে বিজ্ঞপ্তি এবং লেনদেন পরিচালনার জন্য সময়সীমা বিলম্ব শ্রোতা সনাক্ত করে এটি সমাধান করেছি ...

সত্যিই কঠিন!

তবে এর আগে অবশ্যই এটি একটি গাজিলিয়ন বার সমাধান করা হয়েছে তাই সর্বোত্তম অনুশীলনটি কী?

আমি দেখতে পাচ্ছি যে আমার ভবিষ্যত এই সমস্ত সিস্টেমে হ্যান্ডলিং লিখতে চলেছে এবং সময় বিলম্ব এবং সম্ভাব্য নেটওয়ার্ক ব্যর্থতা পরিচালনা করে যাতে আমি সেরা অনুশীলনগুলি অনুসরণ করতে চাই।

বই / নিবন্ধের সুপারিশগুলি দুর্দান্ত হবে।

আগাম ধন্যবাদ!

উত্তর:


13

বিতরণ সিস্টেমগুলি তৈরি করার সময়, একটি 'সিঙ্ক্রোনাস' সিস্টেম এবং একটি 'অ্যাসিনক্রোনাস' সিস্টেমের মধ্যে পার্থক্য হ'ল: একটি সিঙ্ক্রোনাস সিস্টেম গণনা এবং বার্তা বিতরণের সময়গুলির উপরের সীমাগুলি জানত। সুতরাং: আপনার একটি অ্যাসিনক্রোনাস সিস্টেম রয়েছে যেখানে নির্দিষ্ট ইভেন্টগুলির এই পরিচিত উপরের সীমানা থাকে না। তুমি কেমনে এটি পরিচালনা কর?

  1. যদি এই অ্যাসিনক্রোনাস প্রক্রিয়াগুলির সম্ভাব্য উপরের সীমানা থাকে তবে আপনি নিজের সিস্টেমটিকে আংশিক সিঙ্ক্রোনাস সিস্টেমের মতো কাজ করতে টাইমআউটগুলি ব্যবহার করতে পারেন । যদি পেমেন্ট গেটওয়ের 98 তম পার্সেন্টাইল প্রতিক্রিয়া সময়টি 5 সেকেন্ড হয় তবে 5 সেকেন্ডের সময়সীমা আপনার 98% অনুরোধকে সফল করবে এবং অন্য 2% কেবল ব্যর্থ হবে। এর অর্থ হ'ল এই প্রক্রিয়াটি সফল বা ব্যর্থ হতে কত দিন সময় নেবে সে সম্পর্কে আপনার কাছে এখন একটি উচ্চতর আবদ্ধ। এই সম্ভাব্য ব্যর্থতা সনাক্তকরণটি অ্যাসিক্রোনাস সিস্টেমগুলিকে সিঙ্ক্রোনাস সিস্টেমে রূপান্তর করার জন্য একটি গুরুত্বপূর্ণ সরঞ্জাম।

  2. এই ইভেন্টগুলির একটি টেকসই রেকর্ড রাখুন যাতে আপনি সিস্টেমের ব্যর্থতার ক্ষেত্রে আপনার সিস্টেমের অবস্থা পুনরুদ্ধার করতে পারেন। যদি আপনার পেমেন্ট গেটওয়ে হ্যান্ডলার এই ইভেন্টগুলিকে অস্থির মেমরিতে রাখে এবং এটি ক্র্যাশ হয়ে যায় তবে আপনার ক্ষতি হবে।

  3. প্রতিটি জটিল লেনদেনটি মূলত সিস্টেমের মধ্যে বার্তা প্রেরণ এবং প্রাপ্তির (ইভেন্ট) ভিত্তিতে রাষ্ট্রীয় রূপান্তরগুলির একটি সিরিজ। মনে হচ্ছে আপনি আপনার "মুলতুবি লেনদেনের রেকর্ড" ব্যবহার করে এটি অনানুষ্ঠানিকভাবে মডেলিং করছেন তবে আমি আপনাকে আরও এগিয়ে যেতে পরামর্শ দেব: প্রতিটি লেনদেনের জন্য আপনাকে একটি আনুষ্ঠানিক রাষ্ট্রীয় মেশিন তৈরি করতে হবে যা এটি বর্ণনা করে এবং এর বর্তমান অবস্থার একটি টেকসই রেকর্ড রাখে । আপনি দেখতে পাবেন যে এই রাষ্ট্রীয় মেশিনগুলি বোঝার জন্য সহজ, পরীক্ষা করা সহজ এবং আপনার এবং আপনার ব্যবহারকারী উভয়ের জন্যই এই প্রক্রিয়াগুলিতে খুব প্রয়োজনীয় দৃশ্যমানতা দেয়।

আপনার জটিল সিস্টেমটি যতটা অ্যাসিঙ্ক্রোনাস, তত বেশি আনুষ্ঠানিক এবং স্পষ্ট হওয়া দরকার যখন এই জটিল সমতুল্য রাষ্ট্রের রূপান্তরগুলি পরিচালনা করে। সময়সীমা, টেকসই ইভেন্ট লগিং এবং স্টেট মেশিনগুলি এখানে সেরা অনুশীলন। এই কারণেই এরলং ওটিপি তার প্রয়োগ আচরণের অনেকটাই স্টেট মেশিন মডেলের উপর ভিত্তি করে।

রেফারেন্সের জন্য, আমি নির্ভরযোগ্য এবং সুরক্ষিত বিতরণ প্রোগ্রামিংয়ের পরিচিতির চেয়ে ভাল কিছু পাই না । এটি আপনাকে প্রথম নীতিগুলি থেকে সিঙ্ক্রোনাস এবং অ্যাসিনক্রোনাস উভয় ব্যবস্থা বোঝার জন্য একটি শক্তিশালী অ্যালগরিদমিক ভিত্তি দেবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.