আমি বুঝতে পারলাম উপরোক্ত প্রশ্নটি সম্ভবত কয়েকটি 'কি ??' উত্থাপন করেছে, তবে আমাকে ব্যাখ্যা করার চেষ্টা করুন:
আমি মূলত সাগা-প্যাটার্নের ( http://www.rgoarchitects.com/Files/SOAPatterns/Saga.pdf ) ইভেন্ট-সোর্সিংয়ের (ADDD- ধারণাটির সাথে) মিশ্রণ নিয়ে বেশ কয়েকটি সম্পর্কিত ধারণাটিতে মাথা জড়ানোর চেষ্টা করছি : http://en.wikedia.org/wiki/Domain-driven_design )
এটি একটি ভাল পোস্ট যা এটি একসাথে জড়িয়ে দেয়: https://blog.jonathanoliver.com/cqrs-sagas-with-event-sourcing-part-ii-of-ii/
আমি এক মিনিটের মধ্যে প্রশ্নটি পেয়ে যাচ্ছি, তবে আমি মনে করি যে এটি সম্পর্কে আমি প্রথমে যা বুঝি তার সংক্ষিপ্ত করার চেষ্টা করতে হবে (যা ভালই হতে পারে, তাই দয়া করে যদি ঠিক হয় তবে) কেননা এটি আমার পক্ষে কেন প্রভাব ফেলবে প্রশ্ন জিজ্ঞাসা দিয়ে শুরু:
- সাগা প্যাটার্ন হ'ল এক ধরণের ব্রোকার যা কোনও অ্যাকশন দেয় (শেষ ব্যবহারকারী, স্বয়ংক্রিয় ইত্যাদি etc. মূলত যে কোনও কিছু যা ডেটা পরিবর্তন করতে চলেছে) সেই ক্রিয়াটি ব্যবসায়ের ক্রিয়াকলাপে ভাগ করে দেয় এবং এই ক্রিয়াকলাপের প্রতিটি বার্তা বার্তায় বার্তা হিসাবে প্রেরণ করে যা পরিবর্তে যত্ন নেওয়ার জন্য এটি সংশ্লিষ্ট সামগ্রিক শিকড়গুলিতে প্রেরণ করে।
- এই সামগ্রিক শিকড়গুলি সম্পূর্ণ স্বায়ত্তশাসিতভাবে পরিচালনা করতে পারে (উদ্বেগগুলির দুর্দান্ত বিভাজন, দুর্দান্ত স্কেলাবিলিটি ইত্যাদি)
- একটি সাগা-দৃষ্টান্তে কোনও ব্যবসায়িক যুক্তি নেই, এটি সামগ্রিক শিকড়গুলিতে এতে কার্যকলাপ প্রেরণ করে। সাগায় থাকা কেবলমাত্র 'যুক্তি' হ'ল 'প্রক্রিয়া'-যুক্তি, (প্রায়শই স্টেটম্যাচাইন হিসাবে প্রয়োগ করা হয়), যা প্রাপ্ত ক্রিয়াকলাপগুলির (পাশাপাশি ফলো-আপ ইভেন্টগুলি) কী করণীয় (যেমন: কী ক্রিয়াকলাপগুলি প্রেরণ করতে হবে) এর উপর ভিত্তি করে নির্ধারণ করে
- সাগা-নিদর্শনগুলি এক ধরণের বিতরণ লেনদেনের ধরণ প্রয়োগ করে। উদাহরণস্বরূপ: যখন সামগ্রিক শিকড়গুলির মধ্যে একটি (যা স্বতঃস্ফূর্তভাবে কাজ করে, প্রত্যেকের অস্তিত্বের কথা না জেনে) ব্যর্থ হয়, তখন পুরো ক্রিয়াটি আবার ঘুরিয়ে দিতে হতে পারে।
- এটি সাগরে তাদের ক্রিয়াকলাপের রিপোর্টটি সম্পূর্ণ করার পরে, সমস্ত সামগ্রিক শিকড় থাকার মাধ্যমে প্রয়োগ করা হয়। (সাফল্যের পাশাপাশি ত্রুটির ক্ষেত্রে)
- সমস্ত সমষ্টিগত শিকড় যদি সাফল্য ফিরে পায় তবে সাগা পরবর্তী সিদ্ধান্ত নেওয়ার সিদ্ধান্ত নিলে (বা সিদ্ধান্ত নিয়েছে)
- ব্যর্থতার ক্ষেত্রে, সাগা সমস্ত সামগ্রিক শিকড়কে ইস্যু করে যা শেষ কর্মে একটি তথাকথিত ক্ষতিপূরণ ক্রিয়াতে অংশ নিয়েছিল, যেমন: সর্বমোট শিকড়গুলির প্রতিটিই শেষ ক্রিয়াটিকে পূর্বাবস্থায়িত করার একটি ক্রিয়া।
- ক্রিয়াটি "প্লাস 1 ভোট" হলে এটি কেবল একটি 'বিয়োগ 1 ভোট' করছে তবে এটি আগের সংস্করণে ব্লগপোস্ট পুনরুদ্ধার করার মতো জটিল হতে পারে।
- ইভেন্ট-সোর্সিং (ব্লগপোস্ট দুটির সংমিশ্রণ দেখুন) লক্ষ্য করে যে প্রতিটি সামগ্রিক শিকড় একটি কেন্দ্রীভূত ইভেন্ট স্টোরের দ্বারা পরিচালিত প্রতিটি ক্রিয়াকলাপের ফলাফলগুলি সংরক্ষণ করে (পরিবর্তনগুলিকে এই প্রসঙ্গে "ইভেন্টগুলি বলা হয়)"
- এই ইভেন্ট স্টোরটি 'সত্যের একক সংস্করণ' এবং সঞ্চিত ইভেন্টগুলি পুনরাবৃত্তি করে (মূলত কোনও ইভেন্ট লগের মতো) সমস্ত সত্তার স্থিতি পুনরায় খেলতে ব্যবহার করা যেতে পারে This
- দুটির সংমিশ্রণ (যেমন: সামগ্রিক শিকড়গুলিকে সাগায় ফেরত রিপোর্ট করার আগে তাদের পরিবর্তনগুলি সংরক্ষণের জন্য ইভেন্ট-সোর্সিং ব্যবহার করতে দেওয়া) প্রচুর চমৎকার সম্ভাবনা সক্ষম করে, যার মধ্যে একটি আমার প্রশ্নের উদ্বেগ ...
আমি অনুভব করেছি যে এটি আমার কাঁধ থেকে নামিয়ে নেওয়া দরকার, যেহেতু এটি একবারে উপলব্ধি করা অনেক বেশি। এই প্রসঙ্গে / মানসিকতা দেওয়া (আবার, দয়া করে ভুল হলে সঠিক করুন)
প্রশ্ন: যখন একটি সামগ্রিক মূল কোনও ক্ষতিপূরণমূলক ক্রিয়া গ্রহণ করে এবং যদি সেই সামগ্রিক রুট ইভেন্ট-সোর্সিং ব্যবহার করে এটি রাষ্ট্র-পরিবর্তনগুলিকে আউটসোর্স করে দেয়, তবে সমস্ত পরিস্থিতিতে ক্ষতিপূরণ ক্রিয়াটি কেবল ইভেন্ট স্টোরের শেষ ইভেন্টটিকে মুছে ফেলবে না? সমষ্টিগত রুট দেওয়া হয়েছে? (অবিরাম-প্রয়োগটি মুছে ফেলার অনুমতি দেয়)
এটি আমার কাছে প্রচুর পরিমাণে উপলব্ধি করবে (এবং এই সংমিশ্রণের আরও একটি দুর্দান্ত উপকার হবে) তবে যেমনটি আমি বলেছিলাম আমি এই ধারণাগুলির একটি ভুল / অসম্পূর্ণ বোঝার ভিত্তিতে এই অনুমানগুলি করছি।
আমি আশা করি এটি খুব দীর্ঘায়িত হবে না।
ধন্যবাদ।