আমার চ্যালেঞ্জ
আমাদের বিভিন্ন সাইটে এক্সচেঞ্জ সার্ভার রয়েছে তবে জাহাজের উপরেও রয়েছে। জাহাজগুলি যখন সমুদ্রের সাথে থাকে তখন উপগ্রহ লিঙ্কগুলির মাধ্যমে আমাদের নেটওয়ার্কের সাথে সংযুক্ত থাকে তবে বন্দরে থাকাকালীন ওয়াইফাই সেতুগুলিতে স্যুইচ করে।
উচ্চ বিলম্বিত (500+ এমএস) এবং অ-অস্বাভাবিক ড্রপ-আউটগুলির কারণে (যেমন জাহাজগুলি ঘুরছে), সমুদ্রের সময় কয়েকটি মেগাবাইটের উপরে কোনও ইমেল প্রেরণের চেষ্টা করা ব্যর্থ হতে পারে এবং সীমা পর্যন্ত পুনরায় চেষ্টা করা হতে পারে পৌছে গেছে. ফলাফল: ইমেলটি বিতরণ হয় না এবং প্রতিটি চেষ্টা স্যাট লিঙ্কে মূল্যবান ব্যান্ডউইথ গ্রহণ করে।
একটি "সমাধান" হ'ল 5 এমবি বলার জন্য সর্বাধিক ই-মেইল আকার সীমাবদ্ধ করা, তবে এটি সম্ভবত ব্যবহারকারী বান্ধব এবং বন্দরে থাকাকালীন একটি অপ্রয়োজনীয় বাধা।
আনুমানিক ধারনা
আমি যা করব তা হ'ল সমুদ্রের পরে যখন সমস্ত ছোট ছোট ই-মেইল প্রেরণ করা হয় তখন সমুদ্রের পরে প্রসবের জন্য নির্ধারিত সীমা চেয়ে বড় সমস্ত ই-মেইল সারি করা। আমি তখন ভাবছিলাম যে আমি নিয়মিত আমাদের ডেটাসেন্টারে হাব ট্রান্সপোর্ট সার্ভারটি পিন করব, যখন বিলম্বিততা ms 400 এমএসের নিচে নেমে আসবে, আমি বড় ই-মেইল সারিটি প্রক্রিয়াজাতকরণ শুরু করব। বিলম্বিতা যখন 400 এমএসের বেশি চলে যায়, আমি গর্তটি প্লাগ করতাম এবং আবার ইমেলগুলি সারি করতাম।
এখন, আমি ২০০৩ সাল থেকে এক্সচেঞ্জের সাথে আমার হাতটি সত্যিই নোংরা করতে পারিনি then তারপরে, আপনি পরে প্রসবের জন্য বড় ই-মেইলগুলি শিডিউল করতে পারতেন, তাই আমার ধারণাটি এক্সচেঞ্জ ২০১০-তেও তেমন কিছু করেছিল, তারপরে ডেলিভারিটি স্যুইচ করার কোনও উপায় স্ক্রিপ্ট করুন 'সর্বদা' এবং 'কখনই নয়' এর মধ্যে বৃহত্তর ই-মেইলের জন্য শিডিউল।
বাধা
এটির মতো স্ক্রিপ্ট তৈরি করা খুব জটিল হওয়া উচিত নয় তবে আমি পড়েছিলাম যে এক্সচেঞ্জ 2007 এর মাধ্যমে আমি যে বৈশিষ্ট্যটির উপর নির্ভর করব সেটিকে মুছে ফেলা হয়েছিল:
এটি এক্সচেঞ্জ 2003 এ উপস্থিত একটি বৈশিষ্ট্য ছিল তবে এক্সচেঞ্জ 2007 এর জন্য সরানো হয়েছে It এটি 'এসএমপি সংযোগকারীকে' বড় আকারের বার্তাগুলির জন্য বিভিন্ন প্রসবের সময় ব্যবহার করুন 'দিয়ে সেট করা হয়েছিল।
টেক সেন্টার: এক্সচেঞ্জের আকারের উপর ভিত্তি করে ইমেল বিতরণের সময়সূচী করা কি সম্ভব?
প্রশ্নাবলি
এটা সত্যি? - এই বৈশিষ্ট্যটি কি এক্সচেঞ্জ ২০১০-তে আর উপস্থিত নেই, বা এটি কি কেবল এই জাতীয় কিছুতে রূপান্তরিত হয়েছে, আমি আমার লক্ষ্য অর্জনে ব্যবহার করতে পারি? তা হলে কী?
নির্দিষ্ট এক্সচেঞ্জ সার্ভারগুলিতে বড় ই-মেইল বিতরণ স্থগিত করার অন্য কোনও উপায় আছে কি? এটি একটি তফসিলের উপর ভিত্তি করে হতে পারে বা এমনকি নির্দিষ্ট পদক্ষেপের প্রয়োজন হতে পারে - আমি মোটামুটিভাবে নিশ্চিত যে স্ক্রিপ্টের মাধ্যমে ডেলিভারিটি ট্রিগার করার কিছু উপায় থাকবে, আমার কেবল জাহাজগুলিতে আলাদা কাতারে বড় ই-মেইল প্রয়োজন।
এ সম্পর্কে আপনার চিন্তাভাবনা অত্যন্ত প্রশংসা করা হবে! :-)
সম্পাদনা # 1: সংশোধিত রাফ আইডিয়া
আমি দুটি পাওয়ারশেল সিএমডিলেটসকে ধাক্কা দিয়েছি বলে আমি মনে করি যে আমাকে আমার লক্ষ্যের খুব কাছাকাছি নিয়ে আসতে পারে:
উপরের আদেশগুলি কী ধরণের বার্তাগুলি মোকাবেলা করবে তা দেখার জন্য আমি কিছুক্ষণের জন্য গেট-মেসেজ দিয়ে এদিক ওদিক খেলাম।
সবচেয়ে গুরুত্বপূর্ণ, এই কমান্ডগুলি একটি বার্তা আকার ফিল্টার গ্রহণ করে। এই কমান্ডটি বর্তমান সার্ভারে 5 এমবি (৫,২২২,৮৮০ বাইট) এর চেয়ে বড় সারিবদ্ধ বার্তা তালিকাভুক্ত করবে:
get-message -Filter {Size -gt 5242880}
দেখে মনে হচ্ছে এটি Get-Message
কেবলমাত্র বিভিন্ন দূরবর্তী বিতরণ সারি থেকে বার্তা দেয়। তবে সার্ভারের মধ্যে প্রবাহিত বার্তাগুলি কি সংক্ষেপে একটি সারিতে প্রদর্শিত হবে যা পান / সাসপেন্ড / পুনঃসূচনা-বার্তাটি গোলমাল করবে?
যদি তা না হয় তবে সমাধানটি সিউডি স্ক্রিপ্টের মতো প্রতি কয়েক মিনিটের মধ্যে (সিউডো কোডে) লাইনগুলি সহ সহজ হতে পারে:
if ping_rtt > 400 Then
Suspend-Message -Filter {Size -gt 5242880}
Else
Resume-Message
EndIf
উদ্বেগ / অনুসরণ প্রশ্ন:
বেশিরভাগ ক্ষেত্রে এখন অপ্রত্যাশিত - সম্পাদনা # 2 দেখুন।
হবে Get-Message
ভিতরে-সার্ভার প্রসবের জন্য কখনোই বার্তা - শুধুমাত্র দূরবর্তী বিতরণ সারিগুলি থেকে বার্তা আসতে? যদি তা না হয় তবে দূরবর্তী বিতরণ সারির পরিচয় নামটি কি নির্দিষ্ট প্যাটার্ন অনুসরণ করে, যা আমি ফিল্টারিংয়ের জন্য ব্যবহার করতে পারি?
এটি কি কাস্টম ট্রান্সপোর্ট এজেন্টের মাধ্যমে করা যেতে পারে (@ লংগনেকের পরামর্শ অনুসারে) বা ইভেন্ট সিঙ্কের মাধ্যমে (যদি এই ধারণাটি এক্সচেঞ্জ 2010 এ এখনও বিদ্যমান থাকে)?
বলুন আমি প্রতি 5 মিনিটে স্ক্রিপ্টটি চালাচ্ছি, তার অর্থ এখনও বড় বার্তা প্রেরণ করা হচ্ছে, সাসপেন্ড হওয়ার আগে 5 মিনিট পর্যন্ত সম্ভাব্য সমস্যা তৈরি করতে পারে। আমরা এখনকার চেয়ে আরও ভাল হতে চাই, তবে এটি অনুকূল নয়। আমি প্রতি মিনিটে ফ্রিকোয়েন্সি বাড়িয়ে দিতে পারি, তবে এটি সবচেয়ে মার্জিত সমাধান হবে না।
এমনকি আমি যদি প্রতি 5 মিনিটে কেবল রাউন্ড-ট্রিপ সময় পরীক্ষা করি (স্যাট ট্র্যাফিক বাঁচাতে), সর্বশেষ রেকর্ড করা আরটিটির বিপরীতে পরীক্ষা করার জন্য আমার কী এক্সচেঞ্জ ব্যবস্থা প্রয়োজন হবে, প্রতিবার একটি বার্তা প্রেরণ করা হবে যা রিমোট ডেলিভারীতে যায়? সারি, এবং তারপরে কীভাবে পদক্ষেপ নেওয়া হবে?
সম্পাদনা # 2: প্রস্তাবিত সমাধান
প্রস্তাবিত সমাধানগুলি, এবং আমি যেমন দেখি তেমনি তাদের উপকারিতা ও বিপরীতে সংক্ষিপ্ত বিবরণ দেওয়ার অনুমতি দিন:
কাস্টম পরিবহন এজেন্ট
ধারণা
- পর্যায়ক্রমে বিলম্বকে নিরীক্ষণ করুন, উচ্চ বা নিম্ন হিসাবে শ্রেণিবদ্ধ করুন (প্রান্তিক: 400 এমএস?)
- একটি কাস্টম ট্রান্সপোর্ট এজেন্টের মাধ্যমে, বিলম্বতার শ্রেণিবিন্যাস পরিবর্তিত হলে কোনও সেট প্রান্তিকের চেয়ে বড় সমস্ত ই-মেইল স্থগিত / পুনরায় চালু করুন
- কাস্টম টিএ এর মাধ্যমে, তত্ক্ষণাত্ প্রেরণ করা বড় বার্তাগুলি "স্থগিত" মোডে রাখুন, যদি বিলম্ব হয় বেশি
শক্তি
- বৃহত্তর ই-মেলগুলি বিতরণ করার চেষ্টা করা হয় না যখন বিলম্ব হয় বেশি
দুর্বলতা
- এটিকে ঘরে তুলতে কোনও বিকাশের দক্ষতা নেই (স্বতঃ দ্রষ্টব্য: বাহ্যিক বিকাশকারীর সাথে চুক্তির অংশ হিসাবে সোর্স কোডটি আমার সংস্থার অন্তর্ভুক্ত হওয়া উচিত)
- এক্সচেঞ্জের সাথে সম্পর্কযুক্ত তৃতীয় পক্ষের সফ্টওয়্যার প্যাচিং বা আপডেট করার সময় সমস্যা তৈরি করতে পারে
- কোনওরকম সহায়তার চুক্তি প্রয়োজনীয়, যদি কিছু ভুল হয়ে যায় (উপরে দেখুন)
মাঝারি বড় বার্তা
ধারণা
- পর্যায়ক্রমে বিলম্বকে নিরীক্ষণ করুন, উচ্চ বা নিম্ন হিসাবে শ্রেণিবদ্ধ করুন (প্রান্তিক: 400 এমএস?)
- বিলম্বিত শ্রেণিবিন্যাসের উপর ভিত্তি করে, স্ক্রিপ্টিংয়ের মাধ্যমে এক্সচেঞ্জ ট্রান্সপোর্ট বিধিগুলি কনফিগার করুন, যাতে সমস্ত বার্তা প্রবাহিত হয় বা বড় বার্তাগুলিকে মডারেটরে ফরোয়ার্ড করতে দেয়
- জাহাজটি বন্দরে থাকলে সম্ভবত কোনও মানুষের দ্বারা মডারেটরের কাতারে বার্তা অনুমোদন করুন
শক্তি
- বৃহত্তর ই-মেলগুলি বিতরণ করার চেষ্টা করা হয় না যখন বিলম্ব হয় বেশি
- নেটিভ নেটিভ এক্সচেঞ্জ ট্রান্সপোর্ট বিধি ব্যবহার করে বার্তা স্থগিত করা হয়
দুর্বলতা
- এটির দ্বারা, বার্তাগুলি প্রচ্ছন্নতা কম থাকলে প্রোগ্রামিকভাবে অনুমোদিত হতে পারে না, সুতরাং প্রতিটি সময় জাহাজের বন্দরে মানুষের হস্তক্ষেপ প্রয়োজন
- সম্ভাব্যতা গোপনীয়তার সমস্যাগুলি, যদি সংযতিকে প্রোগ্রামিকভাবে পরিচালনা করা না হয়
প্রশ্নাবলি
- পারি বার্তা মডারেটরের মেলবাক্স থেকে প্রোগ্রামেটিক্যালি অনুমোদিত হতে? কিভাবে?
নির্ধারিত পাওয়ারশেল কমান্ড
ধারণা
- পর্যায়ক্রমে বিলম্বকে নিরীক্ষণ করুন, উচ্চ বা নিম্ন হিসাবে শ্রেণিবদ্ধ করুন (প্রান্তিক: 400 এমএস?)
- যতক্ষণ বিলম্ব হবে ততক্ষণ ঘন ঘন (প্রতি মিনিটে?) কোনও বড় বার্তা স্থগিত করুন (
Suspend-Message -Filter {Size -gt 5242880}
) - লেটেন্সি কম এলে, সমস্ত বার্তা আবার শুরু করুন (
Resume-Message
)
শক্তি
- বাস্তবায়ন খুব সহজ
দুর্বলতা
- সর্বাধিক মার্জিত সমাধান নয়
- প্রতিটি নতুন বৃহত্তর বার্তা সরবরাহের চেষ্টা করা যেতে পারে যতক্ষণ না
Suspend-Message
কমান্ডগুলির মধ্যে ব্যবধান থাকে , সম্ভবত এখনও কিছু ব্যান্ডউইথ নষ্ট করে এবং কনজেশন তৈরি করে (যদিও কিছু না করার সাথে তুলনায় খুব সংক্ষেপে)
প্রশ্নাবলি
- ইন-মধ্যবর্তী
Suspend-Message
কমান্ডগুলি কীভাবে বড় বার্তাগুলি সরবরাহ করার প্রচেষ্টা রোধ করতে পারে সে সম্পর্কে কোনও ধারণা ? - হবে
Get-Message
ভিতরে-সার্ভার প্রসবের জন্য কখনোই বার্তা - শুধুমাত্র দূরবর্তী বিতরণ সারিগুলি থেকে বার্তা আসতে? যদি তা না হয় তবে দূরবর্তী বিতরণ সারির পরিচয় নামটি কি নির্দিষ্ট প্যাটার্ন অনুসরণ করে, যা আমি ফিল্টারিংয়ের জন্য ব্যবহার করতে পারি?
সম্পাদনা # 3: পথ এগিয়ে
প্রস্তাবিত সমাধানগুলি আমার দলে আনার পরে (এসএমটিপি প্রক্সি সহ, যা আমি # 2 সম্পাদনায় অন্তর্ভুক্ত করতে ব্যর্থ হয়েছি) এবং আমার নিজের অন্ত্র অনুভূতির উপর ভিত্তি করে আমরা কাস্টম এক্সচেঞ্জ ট্রান্সপোর্ট এজেন্টের পক্ষে যাওয়ার সিদ্ধান্ত নিয়েছি।
আমি বেশ কয়েকটি পরামর্শদাতা সংস্থার সংস্পর্শে আছি, যারা সমস্যাটি কীভাবে আক্রমণ করবে এবং কী কী ক্ষতিগ্রস্থ হবে তা নিয়ে আমার কাছে ফিরে আসবে।
আউটসোর্সিং প্রোগ্রামিং কার্যগুলির সাথে যদি আপনার কোনও অভিজ্ঞতা থাকে তবে স্ট্যাক ওভারফ্লোতে আমার সম্পর্কিত প্রশ্নে বিনা দ্বিধায় পড়ুন , কারণ আমি তা করি না।