এলিক্সির / এরলং মাইক্রোসার্চেসের পদ্ধতির সাথে কোথায় ফিট হয়? [বন্ধ]


109

ইদানীং আমি একাধিক সহযোগী মাইক্রো সার্ভিসেস স্থাপনের জন্য ডকার রচনা নিয়ে কিছু পরীক্ষা-নিরীক্ষা করছি doing আমি মাইক্রোসার্ভিসেসগুলি সরবরাহ করে এমন অনেকগুলি সুবিধা দেখতে পাচ্ছি, এবং এখন সেগুলি পরিচালনার জন্য একটি ভাল টুলসেট রয়েছে বলে আমি মনে করি যে মাইক্রোসার্কেস ওয়াগনে ঝাঁপিয়ে পড়া খুব কঠিন নয়।

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

উদাহরণস্বরূপ, যদি আমি ডকার ব্যবহার করতে চাই কারণ এটি ডেভ-প্রোড প্যারিটি সরবরাহ করে, তবে এর মধ্যে কীভাবে এলিক্সার ফিট হয়? এই যে ডকারের ধারকগুলি অপরিবর্তনীয়, আমি হট-কোড আপগ্রেড করার ক্ষমতা হারাচ্ছি, তাই না? নীল / সবুজ মোতায়েন বা ক্যানারি রিলিজ সম্পর্কে কী?

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


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

1
এই প্রশ্নটি খুব বিস্তৃত - স্ট্যাকওভারফ্লো সম্পর্কিত প্রশ্নগুলি নির্দিষ্ট সমস্যা অন্তর্ভুক্ত করতে বোঝানো হয়েছে।
পাওয়ে ওব্রোক

4
আমি কি এটিকে অন্য স্ট্যাকেক্সচেঞ্জ সাইটে সরিয়ে নেব? কারণ কুইকিটনটি বৈধ আইএমও।
পাপিপো

2
আমি মনে করি এটি একটি আকর্ষণীয় প্রশ্ন, তবে প্রোগ্রামার স্ট্যাকেক্সচেঞ্জের সাথে থাকতে পারে? বলা হচ্ছে, বন্ধ করতে ভোট দিচ্ছেন না
জর্জ মাউয়ার

1
এটি দুর্দান্ত, এবং পুরোপুরি কাজের জন্য তৈরি।
ব্রায়ান হান্ট

উত্তর:


138

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

প্রথমে কিছু পটভূমি দিয়ে শুরু করা যাক। এরলং ভিএম এবং এর স্ট্যান্ডার্ড লাইব্রেরি বিতরণ সিস্টেম তৈরির জন্য সামনে নকশা করা হয়েছিল এবং এটি সত্যই প্রদর্শিত হয়। যতদূর আমি জানি, এটি একমাত্র রানটাইম এবং ভিএম এই উত্পাদনের ক্ষেত্রে প্রযোজনায় ব্যাপকভাবে ব্যবহৃত হয় ব্যবহারের ক্ষেত্রে up

অ্যাপ্লিকেশন

উদাহরণস্বরূপ, আপনি ইতিমধ্যে "অ্যাপ্লিকেশনগুলিতে" ইঙ্গিত দিয়েছেন। এরলং / এলিক্সিতে, কোডগুলি অ্যাপ্লিকেশনগুলির মধ্যে প্যাকেজ করা থাকে যা:

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

এই নকশার প্রভাব বিশাল। এর অর্থ এই যে এলিক্সির বিকাশকারীরা, অ্যাপ্লিকেশনগুলি লেখার সময় আরও স্পষ্ট পদ্ধতিতে থাকে:

  1. কিভাবে তাদের কোড শুরু এবং বন্ধ করা হয়
  2. কী কী প্রক্রিয়াগুলি একটি আবেদনের অংশ তৈরি করে এবং তাই অ্যাপ্লিকেশনের অবস্থা
  3. ক্র্যাশগুলির ক্ষেত্রে বা কিছু ভুল হয়ে গেলে সেই প্রক্রিয়াগুলি কীভাবে প্রতিক্রিয়া জানাবে এবং প্রভাবিত করবে

শুধু তাই নয়, এই বিমূর্তনের চারপাশে সরঞ্জামদান দুর্দান্ত। আপনি Elixir ইনস্টল করা থাকে, খুলুন "iex" এবং টাইপ: :observer.start()। আপনার লাইভ সিস্টেম সম্পর্কে তথ্য এবং গ্রাফ প্রদর্শন করার পাশাপাশি, আপনি এলোমেলো প্রক্রিয়াগুলি মেরে ফেলতে পারেন, তাদের মেমরির ব্যবহার, রাষ্ট্র এবং আরও অনেক কিছু দেখতে পারেন। এখানে ফিনিক্স অ্যাপ্লিকেশনটিতে এটি চালনার উদাহরণ রয়েছে:

ফিনিক্স অ্যাপ্লিকেশন নিয়ে পর্যবেক্ষক চলছে

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

যদি আপনি কাউকে বিতরণ করা সিস্টেম চালাওয়ার বিষয়ে জিজ্ঞাসা করেন, তবে তারা যে ধরণের অন্তর্দৃষ্টি চান, এবং এরলং / এলিক্সিরের সাথে আপনার এটি বিল্ডিং ব্লক হিসাবে রয়েছে।

যোগাযোগ

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

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

জেমি এরলং ফ্যাক্টরি ২০১৫ এ এই বিষয়ে কথা বলেছিল এবং তারা কীভাবে একটি গেম প্ল্যাটফর্ম তৈরি করতে এই সুবিধা অর্জন করতে সক্ষম হয়েছিল: https://www.youtube.com/watch?v=_i6n-eWiVn4

আপনি যদি এইচটিটিপি এবং জেএসএন ব্যবহার করতে চান তবে তাও ঠিক আছে এবং ফিনিক্সের মতো প্লাগ এবং ফ্রেমওয়ার্কগুলির মতো লাইব্রেরি আপনাকে এখানেও উত্পাদনশীল গ্যারান্টি দেবে।

Microservices

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

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

এবং, দিনের শেষে, আপনি যদি এরলং বিতরণকারী প্রোটোকলটি ব্যবহার করে এই সমস্ত কিছু চালিয়ে যাচ্ছেন তবে আপনি এগুলি বিভিন্ন নোডে চালাতে পারেন এবং আপনি যতক্ষণ না তাদের {:node@network, :name}পরিবর্তে উল্লেখ করেন ততক্ষণ তারা অন্যগুলিতে পৌঁছাতে সক্ষম হবেন :name

আমি আরও যেতে পারে তবে আমি আশা করি যে এই মুহুর্তে আমি আপনাকে বোঝাতে পেরেছি। :)


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

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

5
আমি যে আলোচনার কথা উল্লেখ করেছি তাতে একটি রাউটিং স্তর রয়েছে যা নীল / সবুজ বা ক্যানারি ব্যবহার করা যেতে পারে। আবার এটি পছন্দের প্রোটোকলের উপর নির্ভর করে তবে আপনি বিতরণ করা এড়লংয়ে কোনও বিশ্বব্যাপী প্রবেশ থেকে যেতে পারেন, কনসুল ব্যবহার করে এমন কিছু বা এইচটিটিপি ভিত্তিক কোনও কিছুর জন্য হ্যাপ্রোক্সি।
জোসে ভালিম

পরিষেবা আবিষ্কার পদ্ধতির অর্থ উপলব্ধি করে। আমি অনুমান করি যে আমি সর্বদা লোড ব্যালেন্সিং শর্তাবলী নিয়ে ভাবছিলাম।
পাপিপো

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