দ্বিমুখী সিঙ্কের জন্য দ্বন্দ্বের সমাধান


24

কোনও সংযোগ সবসময় পাওয়া যায় না বলে ধরে নিয়ে আপনি কোনও বিশেষ দ্বন্দ্বের সমাধানে 'মেইন' ডাটাবেস সার্ভার এবং অনেকগুলি 'মাধ্যমিক' সার্ভারের মধ্যে দ্বি-দ্বি সমন্বয়কে কীভাবে পরিচালনা করবেন?

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

এই ধরণের সমস্যাটি মোকাবেলার জন্য কি কোনও সাধারণ কৌশল আছে? এই বিকল্পগুলির বিষয়ে আমি ভাবতে পারি:
১. সর্বদা ক্লায়েন্ট-সাইড ডেটাটিকে উচ্চ-অগ্রাধিকার হিসাবে ব্যবহার করুন
২. সার্ভার-সাইডের জন্য একই
3.. প্রতিটি ক্ষেত্রের সম্পাদনার টাইমস্ট্যাম্প চিহ্নিত করে এবং সর্বশেষ সম্পাদনাটি নিয়ে দ্বন্দ্ব সমাধানের চেষ্টা করুন

যদিও আমি নিশ্চিত যে তৃতীয় বিকল্পটি কিছু বিধ্বংসী ডেটা দুর্নীতির জন্য জায়গা খুলবে।

আমি সচেতন যে সিএপি উপপাদ্যটি এটি নিয়ে উদ্বেগ প্রকাশ করেছে, তবে আমি কেবল চূড়ান্ত ধারাবাহিকতা চাই তাই এটি একে পুরোপুরি রায় দেয় না, তাই না?

সম্পর্কিত প্রশ্ন: দ্বিমুখী ডেটা সিঙ্ক্রোনাইজেশনের জন্য সেরা অনুশীলনের নিদর্শন । এই প্রশ্নের দ্বিতীয় উত্তর বলছে সম্ভবত এটি করা যায় না।


উত্তর:


14

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

আপনার যে বড় প্রশ্নের উত্তর দিতে হবে তা হ'ল আপনি কীভাবে প্রত্যাখ্যাত সেভগুলি সমাধান করবেন। এর অর্থ সাধারণত একরকম একত্রীকরণ অপারেশন।

নোট করুন যে ভেক্টর ঘড়িগুলি রিয়েল-টাইম টাইমস্ট্যাম্প ব্যবহার করে না । রিয়েল-টাইম ঘড়িগুলি সিঙ্ক্রোনাইজ করার সাথে জড়িত সমস্যাগুলি ডেটা সিঙ্ক্রোনাইজ করার মতো কমপক্ষে কঠিন।


1
ভাল
লাগল,

10

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


ঠিক আছে তবে এই ছেলেরা কীভাবে একইরকম প্রভাব ফেলবে: সিঙ্কপয়েন্টের বিকাশ
কে.স্টেফ

3
তারা সহজেই ধরে নেয় যে ভবিষ্যতে আপনার কোনও সময় পর্যাপ্ত ব্যান্ডউইথের একটি নির্ভরযোগ্য সংযোগ থাকবে।
মৃত এমএমজি

1

আমার ধারণা, এটি করার কোনও মানক উপায় নেই, প্রতিটি সিস্টেম দ্বন্দ্বের সমাধানের জন্য তাদের নিজস্ব নীতিগুলি ব্যবহার করে।

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

মামলা 1

  1. কম্পিউটার এবং ফোন অফলাইন
  2. 'কম্পিউটার' এর সাথে কম্পিউটার সম্পাদনা সেল এবং 'ফোন' এর সাথে ফোন সম্পাদনা করার পরে সেল
  3. কম্পিউটার অনলাইনে পরিণত হয়
  4. ফোন অনলাইন হয়ে যায় এবং কম্পিউটার এবং ফোন উভয়ই 'ফোন' প্রদর্শন করে।

মামলা 2

  1. কম্পিউটার এবং ফোন অফলাইন
  2. 'কম্পিউটার' এর সাথে কম্পিউটার সম্পাদনা সেল এবং 'ফোন' এর সাথে ফোন সম্পাদনা করার পরে সেল
  3. ফোন অনলাইনে পরিণত হয়
  4. কম্পিউটার অনলাইনে পরিণত হয় এবং কম্পিউটার এবং ফোন উভয়ই 'কম্পিউটার' প্রদর্শন করে।

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

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

ব্যবহারকারী যদি ডেটা ভিজ্যুয়ালাইজ করে এটি ঠিক হয় তবে কেবলমাত্র অগ্রভাগে সিঙ্ক করা হলে আমি গুগল ডক্স পদ্ধতির দিকে যাব। অন্যথায় একজন ব্যবহারকারী অবাক হতে পারে যে তার ফোনটি একটি ওয়াইফাইয়ের সাথে স্বয়ংক্রিয়ভাবে সংযুক্ত হওয়ার সময় একটি মিটিংয়ে একটি নন সিঙ্ক পরিবর্তিত হয় যা তিনি তার পিসিতে পুনরায় সম্পাদনার পরে লাইভ হয়ে যান।

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

আমি অন্যথায় জিআইটি পদ্ধতির জন্য যাব, পূর্ববর্তী ক্লায়েন্টের একটি পপআপ দেখিয়ে ব্যবহারকারীকে কোন সংস্করণটি রাখতে হবে তা নির্বাচন করতে বা মার্জটিকে ফেরত দেওয়ার সুযোগ দেওয়ার মাধ্যমে জিজ্ঞাসা করে।


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