সিকিউআরএস + ইভেন্ট সোর্সিং: (এটি কি সঠিক) কমান্ডগুলি সাধারণত পয়েন্ট-টু-পয়েন্ট জানানো হয়, যখন ডোমেন ইভেন্টগুলি পাব / সাবের মাধ্যমে যোগাযোগ করা হয়?


12

আমি মূলত সিকিউআরএস এবং সম্পর্কিত ধারণাগুলির চারপাশে আমার মাথা গুটিয়ে দেওয়ার চেষ্টা করছি ।

যদিও সিকিউআরএস অগত্যা মেসেজিং এবং ইভেন্ট সোর্সিংকে অন্তর্ভুক্ত করে না এটি এটি একটি ভাল সংমিশ্রণ বলে মনে হয় (এই ধারণাগুলির সংমিশ্রণে অনেক উদাহরণ / ব্লগপোস্টের সাথে দেখা যায়)

কোনও কিছুর জন্য রাষ্ট্র পরিবর্তনের জন্য ইউজ-কেস দেওয়া হয়েছে (এসও সম্পর্কে একটি প্রশ্ন আপডেট করতে বলুন), আপনি কি নীচের প্রবাহটিকে সঠিক হিসাবে বিবেচনা করবেন (সেরা অনুশীলনের মতো)?

সিস্টেমটি একটি সামগ্রিক আপডেটকুইউশনকমন্ডল ইস্যু করে যা কয়েকটি ছোট কমান্ডের মধ্যে বিভক্ত হতে পারে: আপডেটগ্রন্থটি প্রশ্নোত্তর সমষ্টি মূলকে লক্ষ্য করে এবং আপডেট ইউজারঅ্যাকশন (পয়েন্ট গণনা ইত্যাদিতে) লক্ষ্য করে ইউজার অগ্রিগেট রুটকে লক্ষ্য করে। এগুলি পয়েন্ট-টু-পয়েন্ট বার্তাপ্রেরণটি অ্যাসিঙ্ক্রোনিকভাবে প্রেরণ করা হচ্ছে।

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

এই ইভেন্টগুলি সম্প্রচারের জন্য একটি পাব / সাব কিউতে রাখা হয়। যে কোনও গ্রাহক (যার মধ্যে সম্ভবত এক বা একাধিক প্রজেক্টর যা রিড ভিউ তৈরি করে) এই ইভেন্টগুলিতে সদস্যতা নিতে নিখরচায় রয়েছে।

সাধারণ প্রশ্ন: এটি কি সর্বোত্তম অনুশীলন, কমান্ডগুলি পয়েন্ট-টু-পয়েন্টে যোগাযোগ করা হয় (যেমন: রিসিভারটি জানা যায়) যেখানে ইভেন্টগুলি সম্প্রচারিত হয় (অর্থাত্ রিসিভার (গুলি) অজানা)?

উপরের অংশটি ধরে নিলে, পয়েন্ট / পয়েন্টের পরিবর্তে কমান্ডগুলি পাব / সাবের মাধ্যমে সম্প্রচারিত করার সুবিধা / অসুবিধা কী হবে?

উদাহরণস্বরূপ: সাগা ব্যবহার করার সময় কমান্ড সম্প্রচার করার সময় কোনও সমস্যা হতে পারে, যেহেতু সামগ্রিক শিকড়গুলির মধ্যে একটির ব্যর্থতার ক্ষেত্রে সাগাকে মধ্যস্থতার ভূমিকা পালন করতে হবে, কারণ সাগা জানে না যে কোন সমষ্টিগত শিকড়টি শুরু করতে অংশ নেয়? ।

অন্যদিকে, ব্রডকাস্টিং কমান্ডের অনুমতি দেওয়া হলে আমি সুবিধা (নমনীয়তা) দেখি।


সু-লিখিত প্রশ্ন বিটিডব্লিউ।
ডেভ

উত্তর:


19

দাবি অস্বীকারকারী: আমি কেবল সিকিউআরএস বিশ্বে আমার প্রথম পদক্ষেপ নিচ্ছি, তবে আমি বিষয়টি সম্পর্কে আমার বর্তমান উপলব্ধি দিতে পারি এবং অন্যরা নিশ্চিত করে কিনা তা আমরা দেখতে পাব। আমি নীচে যা লিখি তার সবকিছুর একটি অন্তর্নিহিত "থিম যেমন দেখি" আছে এবং এটি অনুমোদনযোগ্য নয়।

80% কেস

আপনার প্রশ্নের উত্তর দেওয়ার জন্য, আদেশগুলি প্রকৃতপক্ষে একটি পয়েন্ট-টু-পয়েন্ট বিষয়। যখন কোনও কমান্ড একটি নিয়ামককে (এমভিসি ওয়েবআপ) প্রবেশ করে, তখন সেই নিয়ামক একটি কমান্ড প্রেরককে একটি এবং একমাত্র উপযুক্ত কমান্ড হ্যান্ডলার সন্ধান করতে বলেন এবং সেই হ্যান্ডলারের কাছে কাজটি অর্পণ করে।

প্রকাশ করবেন না কেন?

এটি দায়িত্ব নিয়ে প্রশ্ন । যদি কোনও কিছু আদেশ পাঠায় তবে তা পূরণ হবে এমন প্রত্যাশায় তা জড়িত । আপনি যদি সহজভাবে প্রকাশ করেন এবং আশা করেন যে কোনও কিছু এটি এড়িয়ে যায় এবং এটিতে কাজ করে তবে কোনও গ্যারান্টি নেই । এক্সট্রাপোলেশন করে আপনিও জানেন না যে একাধিক হ্যান্ডলাররা কোনও কমান্ডের সাথে কাজ করার সিদ্ধান্ত নেন না, সম্ভবত একই পরিবর্তনটি একাধিকবার প্রয়োগ করা হবে।

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

উদাহরণ

এটি বাস্তব জীবনের সাথে তুলনা করা যেতে পারে। যদি আপনার তিনটি বাচ্চা থাকে তবে কোনও ঘরে andুকে হাঁটুন এবং কেবল "বাথরুমটি পরিষ্কার করুন" বলে চিৎকার করুন, আপনার নিশ্চয়তার কোনও নিশ্চয়তা নেই এবং কেউ যদি এটি দুটিবার না করা হয় তবে পেরেফ করেন (যদি আপনার বাধ্য শিশুরা থাকে তবে ;-) আপনার উচিত আপনি যদি একটি নির্দিষ্ট শিশুকে আপনার কাজটি করতে চান তা করার জন্য আরও ভাল মূল্য নির্ধারণ করুন।

তবে যদি সেই শিশুটি তার কাজ শেষ করে, এটি "বাথরুম পরিষ্কার করে দেওয়া হয়েছে" বলে চিৎকার করে it's


জ্ঞান অনেক। দুর্দান্ত উপমা :)
গিরত-জানু

তুমি আমাকে হারিয়ে ফেললে .. When a command enters a controller (MVC webapp)-? আপনি কি বিশ্রাম ব্যবহার করছেন? বা কিছু সংকর এপিআই শেষ পয়েন্ট? আপনি কি দয়া করে একটি উদাহরণ যুক্ত করতে পারেন
পাইটর কুলা

@ পিপমকিন আমরা একটি ওয়েবএপিআই এর শেষ পয়েন্ট ব্যবহার করেছি যা আমাদের ওয়েব অ্যাপ্লিকেশন দ্বারা কমান্ড কার্যকর করার জন্য যতবার প্রয়োজন তার কল হবে। যেমন। যদি ব্যবহারকারী কোনও পোস্ট মন্তব্য যুক্ত করতে চান তবে ওয়েব অ্যাপ্লিকেশন একটি পোস্টের জন্য অনুরোধ প্রেরণ করবে example.com/api/Post/AddPostComment
ডেভ

1

আমি একমত যে একটি প্রাথমিক ব্যবস্থা সাধারণত কখনই একাধিক টার্গেট সিস্টেম দ্বারা কোনও আদেশের লেনদেনের প্রত্যাশা করে না:

  • কমান্ডগুলি সাধারণত 'প্রেরণ ও প্রার্থনা' হয় না - কমান্ডের প্রবর্তন ব্যবস্থা সাধারণত কমান্ডের অগ্রগতি ও ফলাফল ঘটে বলে অবিচ্ছিন্ন মতামত চায় (উদাহরণস্বরূপ রাষ্ট্র ইভেন্টগুলি acknowledgementসফল, এবং সফল হয় completionবা failureলক্ষ্যবস্তু দ্বারা প্রকাশিত হতে পারে দীক্ষিতকে অবহিত করতে পদ্ধতি).
  • যদি একাধিক টার্গেট সিস্টেমগুলি জড়িত থাকে, তবে সূচনাপ্রক্রিয়াটি কমান্ডের জন্য একাধিক (সম্ভবত দ্বন্দ্বমূলক) ফলাফল গ্রহণ করবে (যেমন লক্ষ্য 1 সফল হয়েছে, তবে লক্ষ্য 2 ব্যর্থ হয়েছে)। মূল কমান্ডের প্রকৃত অবস্থা নির্ধারণে এটির জন্য আরও জটিলতার প্রয়োজন হবে (উদাহরণস্বরূপ, সমস্ত লক্ষ্যমাত্রা সফল হলেই কমান্ডের লেনদেন সফল হবে? যদি লক্ষ্যগুলির মধ্যে একটি ব্যর্থ হয় তবে কমান্ডটি সফল লক্ষ্যগুলিতে ফিরিয়ে দেওয়া বা ক্ষতিপূরণ দেওয়া প্রয়োজন? ইত্যাদি)। এটি সূচনা এবং লক্ষ্য সিস্টেমের মধ্যে অনাকাঙ্ক্ষিত মিলন এবং জটিলতার পরিচয় দেবে।

সিস্টেমের মধ্যে জারি করা কমান্ডগুলিতে অতিরিক্ত '(লেনদেনহীন এবং সাধারণত' প্রচলিত ') গ্রাহকরা সাবস্ক্রাইব করতে সক্ষম হবেন এমন যোগ্যতা এখনও রয়েছে

  • নিরীক্ষণের উদ্দেশ্যে
  • ইনস্ট্রুমেন্টেশন এবং অপারেশনাল মেট্রিক্স (যেমন লোড, ব্যবসায়িক বিশ্লেষণ ইত্যাদি)
  • কমপ্লেক্স ইভেন্ট প্রসেসিং বা স্ট্রিম ইভেন্ট প্রসেসিং 'ইভাসড্রপ্পারস' - এই সিস্টেমগুলি কমান্ডগুলির মধ্যে ত্রুটি বা অনিয়ম সনাক্ত করতে পারে (উদাহরণস্বরূপ আদেশের ফ্রিকোয়েন্সি, বা কমান্ড এবং ইভেন্টগুলির বিভিন্ন সংমিশ্রণের মধ্যে পারস্পরিক সম্পর্ক) এবং সতর্কতা বা সংশোধনমূলক ক্রিয়াকে ট্রিগার করতে পারে (প্রায়শই আরও কমান্ড বিভিন্ন ধরণের ফর্ম)।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.