আক্কা সমঝোতার পক্ষে কেন ভাল?


9

আমি আক্কা এবং অভিনেতার কাঠামোর জন্য নতুন - আমি নিশ্চিত যে আমি স্পষ্টত কিছু মিস করছি, দয়া করে আগেই আমার ক্ষমা প্রার্থনা করুন।

আমি পড়তে থাকি যে আক্কাকে বেছে নেওয়ার প্রধান পয়েন্টগুলির মধ্যে একটি হ'ল এটি সাময়িকভাবে পরিচালনা করে।

আক্কা কেন এত বিশেষ তা আমার কাছে স্পষ্ট নয়; আমি বুঝতে পারি যে অনেক ছোট্ট অভিনেতা রয়েছেন যা খুব হালকা এবং দ্রুত; তবে, দু'জন ব্যবহারকারী একই সাথে একটি ফর্ম সংরক্ষণ করলে এটি কীভাবে আমাকে সহায়তা করবে?

আমার কি এখনও একরকম একযোগী লক (হতাশাবাদী / আশাবাদী / ইত্যাদি) দরকার নেই?


আপনি কি জিজ্ঞাসা করছেন অভিনেতা সম্মতি বা বিশেষত আককার পক্ষে কেন ভাল?
স্ক্রিপ্টিন

Wouldn't I still need some sort of concurrency lock (pessimistic/optimistic/etc..)?- হ্যাঁ, তবে এটি অন্তর্নিহিত আরডিবিএমএসের দায়িত্ব, অভিনেতার নয়। খুব সম্ভবত আক্কা অভিনেতা আপনার ব্যবহারকারীর সাথে সরাসরি কথা বলছেন না। পরিবর্তে, আক্কা অভিনেতা এবং ব্যবহারকারী (অন্য অভিনেতা, মূলত) উভয়ই সরাসরি ডাটাবেসের সাথে ইন্টারঅ্যাক্ট করেন।
রবার্ট হার্ভে

উত্তর:


7

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

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

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

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

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

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


9

আমি অভিনেতা মডেল সম্পর্কে সাধারণভাবে লিখতে যাচ্ছি (কেবল আক্কা নয়) অন্যান্য সহনশীল মডেলগুলির সাথে তুলনায় তুলনামূলকভাবে শাস্ত্রীয় লক-ভিত্তিক সম্মতি এবং ঝরঝরে লেনদেনের স্মৃতি।

সুবিধাদি

  1. বুঝতে এবং ব্যবহার করা সহজ ধারণা

    • লক ভিত্তিক চুক্তিটি কঠিন; বিশেষত এটি সঠিকভাবে পাওয়া খুব কঠিন কারণ সঠিক এবং দক্ষ হওয়ার জন্য বোঝার জন্য এবং ব্যবহার করার জন্য অনেকগুলি ধারণা রয়েছে: লকস, সেমফোরস, থ্রেড, সিঙ্ক্রোনাইজেশন, পারস্পরিক বর্জন, স্মৃতি বাধা ইত্যাদি etc.

    • অন্যদিকে অভিনেতারা আরও বিমূর্ত ধারণা; আপনার অভিনেতা যা বার্তা প্রেরণ এবং গ্রহণ করে। মেমরি বাধা যেমন নিম্ন-স্তরের ধারণাগুলি উপলব্ধি করতে এবং ব্যবহার করার দরকার নেই।

  2. অপরিবর্তনশীলতা প্রয়োগ করে

    • মিউটেবিলিটি প্রোগ্রামিং, বিশেষত মাল্টি-থ্রেড অ্যাপ্লিকেশনগুলিতে অনেক ত্রুটি এবং বাগের উত্স। অভিনেতা মডেল অপরিবর্তনীয়তা প্রয়োগ করে এই সমস্যাটি সমাধান করে।
  3. কম ত্রুটিযুক্ত

    • উপরোক্ত দুটি কারণে
  4. দক্ষ

    • ভাল লিখিত লক-ভিত্তিক হিসাবে দক্ষ না তবে সাধারণভাবে সফ্টওয়্যার লেনদেনের মেমরির চেয়ে বেশি দক্ষ।
  5. সহজেই স্কেলেবল

    • তাত্ত্বিকভাবে কমপক্ষে, অ্যাপ্লিকেশনটি আপনার কাজ সম্পাদন করতে আরও অভিনেতা যুক্ত করে বেশ ভাল স্কেল করা উচিত। লক-ভিত্তিক সাথে স্কেল করা বেশ কঠিন।

অসুবিধেও

  1. সমস্ত ভাষা সহজেই অপরিবর্তনীয়তা প্রয়োগ করে না;

    • এরলং, প্রথমে অভিনেতাদের জনপ্রিয় করে তোলার ভাষাটির মূল অংশে অপরিবর্তনীয়তা রয়েছে তবে জাভা এবং স্কাল (আসলে জেভিএম) অপরিবর্তনীয়তা প্রয়োগ করে না।
  2. এখনও বেশ জটিল

    • অভিনেতা প্রোগ্রামিংয়ের একটি অ্যাসিনক্রোনাস মডেলের উপর ভিত্তি করে তৈরি হয় যা এতটা সোজাসুজি এবং সমস্ত পরিস্থিতিতে মডেল করা সহজ নয়; ত্রুটিগুলি এবং ব্যর্থতার পরিস্থিতিগুলি পরিচালনা করা বিশেষত কঠিন।
  3. অচলাবস্থা বা অনাহার প্রতিরোধ করে না

    • দুজন অভিনেতা সেই রাজ্যে থাকতে পারেন যা অপর পক্ষ থেকে অপেক্ষার বার্তা দেয়; ডিবাগ করা খুব সহজ যদিও এইভাবে আপনার কাছে লকগুলির মতো একটি অচলাবস্থা রয়েছে। লেনদেনের মেমরির সাথে তবে আপনার গ্যারান্টিযুক্ত ডেডলক মুক্ত।
  4. এত দক্ষ নয়

    • বাধ্যতামূলক অপরিবর্তনীয়তার কারণে এবং অনেক অভিনেতাকে একই থ্রেড অভিনেতাদের ব্যবহার করতে হবে কারণ লক-ভিত্তিক চুক্তির মতো দক্ষ হবে না।

উপসংহার

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


আপনার নম্বর 2 সুবিধা জন্য, যে করা উচিত হবে না " পরিবর্তনশীলতা অনেক ত্রুটি উৎস ..." এবং "... বাধা দিত দ্বারা এই সমস্যা solves পরিবর্তনশীলতা " বরং "চেয়ে অপরিবর্তনীয়তা "? এছাড়াও, দ্বিতীয় বাক্যে দুটি সমস্যা সমাধান করার অপ্রয়োজনীয় উল্লেখ রয়েছে।
বিট্রি

@ 8 বিট্রি ইয়ে, আপনি সঠিক; আমি ভুল বানান। আপনি জানেন না এমন ক্ষেত্রে আপনি এই জাতীয় সমস্যাগুলি সংশোধন করার জন্য উত্তরগুলি সম্পাদনা করতে পারেন।
m3th0dman

আমি এটি সম্পর্কে সচেতন, আমি কেবল এমন পরিবর্তন করতে নারাজ যা আমার পক্ষ থেকে ভুল বোঝাবুঝির ক্ষেত্রে কোনও কিছুর অর্থকে উল্টে বা মারাত্মকভাবে পরিবর্তন করতে পারে।
বিট্রি

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

1
@ ডেনিথ আমি সম্মত হই যে অভিনেতাদের সাথে অচলাবস্থা অর্জনের জন্য আপনাকে একটি অদ্ভুত নির্মাণ ব্যবহার করতে হবে; তবে একই রকমের দৃষ্টিকোণ থেকে আপনাকে লক-ভিত্তিক সম্মতি দিয়ে অচলাবস্থা অর্জনের জন্য একটি অদ্ভুত গঠন ব্যবহার করতে হবে (যদিও আমি একমত যে কোনও অভিনেতার চেয়ে মূটেক্সের সাথে একটি অচলাবস্থা তৈরি করা আরও সহজ)। যাইহোক, ধারণাটি হ'ল কেবলমাত্র লেনদেনের মেমরির গ্যারান্টি দেয় যে আপনি বাস্তবায়ন করার জন্য যা অদ্ভুত রচনা তৈরি করেছেন তা বিবেচনা না করে আপনার কোনও অচলাবস্থা থাকতে পারে না।
m3th0dman
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.