موتور جستجوی آی‌سی سریعتر از همیشه

0
14
موتور جستجوی آی‌سی سریعتر از همیشه

دقیقا ۲۹ مهر ماه بود که رسما از موتور جستجوی قطعات الکترونیک به نام آی‌سی رونمایی کردیم، نزدیک به سه ماه از معرفی رسمی آن می‌گذرد، ممکن است به نظر نیاید ولی در این سه ماه مدام در حال دست و پنجه نرم کردن با مشکلات و معضلات گوناگون بوده‌ایم و البته مدام به قابلیت‌ها و امکانات جدید فکر کرده‌ایم و خیال‌پردازی کردیم!  تمام ممکن‌ها و ناممکن‌ها را در نظر گرفته‌ایم که تجربه کاربر بهتری را در اختیار شما دوستان و همراهان عزیز قرار دهیم.

این نوشته صرفا مرور کوتاهی از مشکلات فنی و قابلیت‌های جدیدی است که از آن رونمایی خواهیم کرد. همانطور که در انتهای مقاله قبلی گفتم تازه اول راهِ اتفاق‌های جالب و هیچان‌انگیز هستیم و این تازه شروع ماجراست. اجازه بدهید بیش از این پر حرفی نکنم و مقدمه را کوتاه کنم و برویم سر اصل ماجرا.

 

صبح روز رونمایی

همونطور که می‌دونید ما در موتور جستجوی آی‌سی، به این شکل عمل می‌کنیم که در بازه زمانی مشخص (بسته به اهمیت سایت) وارد سایت می‌شویم و محصولات آن سایت را ایندکس می‌کنیم در نتیجه این عمل جستجو را با سرعت و کیفیت هرچه بهتر می‌توانیم عملی کنیم.

اما قرار نبود که همه چیز به همین خوشمزگی پیش برود، و درست در بدترین شکل ممکن آیپی خزنده (نرم‌افزاری که اطلاعات محصولات را از سایت‌ها جمع آوری می‌کند) توسط چند فروشگاه مسدود شد. با مسدود شدن آی‌پی خزنده دیگر قادر به بروز رسانی اطلاعات محصول‌ آن فروشگاه ها نبودیم و نمی‌شد به وضعیت موجودی آن محصول اعتماد کرد.

صبح روز رونمایی

اما راه چاره چیست؟ با عوض کردن آی‌پی هم باز ممکن بود چنین اتفاقی بیفته، باید یه راه‌حل اساسی پیدا می‌کردیم راه‌حلی که نیاز نباشه نگران کار نکردنش باشیم. چیزی که بدیهی است این بود که ما باید تعداد آی‌پی زیادی برای خزش‌های همزمان داشته باشیم مثلا ده تا ۲۰ تا آی‌پی با توجه به تعداد سایت‌ها لازم داشتیم. فرض رو گذاشتیم روی این قضیه که با توجه به توسعه‌های آینده و ریت آپدیت مد نظرمون نیاز به ۵۰ آدرس آی‌پی خواهیم داشت.

 

بریم آی‌پی بخریم

قرار شد که ۵۰ عدد آی‌پی اجاره کنیم و خیال خودمون را راحت کنیم، اما این تازه اول استرس‌های بعدی بود. هیچ شرکت ایرانی ۵۰ عدد آیپی به یک سرور ارائه نمی‌کرد (حداقل ما نتونستیم پیدا کنیم) یا باید کلی سرور اجاره میکردیم یا هیچ!‌ خب گفتیم بریم سراغ دیتاسنترهای خارجی شاید اونجا شانس بیشتری داشته باشیم.

دیتاسنتر کونتابو که آپ پاکی رو ریخت رو دستمون و گفت اگه ایرانی هستی این طرفا نیا که تحریمی (حیف شد چون قیمت‌های خوبی داشت) و دو تا انتخاب ماند هتزنر یا ovh! بعد از مکاتبات اولیه معلوم شد که با ایرانی بودنمان زیاد مشکل ندارند و می‌توانند به ما سرویس بدهند، اما وای از هزینه ها. هر عدد آی‌پی یک یورو!

بریم آی‌پی بخریم
IPV4addresses

 

یعنی ماهی ۵۰ یورو فقط برای اجاره آی‌پی، آن هم با این وضع دلار و یورو! باید تدبیر دیگری اندیشید.

 

بریم پراکسی پیدا کنیم

بریم پراکسی پیدا کنیم

 

وقتی که کلا اجاره آی‌پی منتفی شد، بعد از اندک مدتی فکر کردن گزینه استفاده از پراکسی به ذهمنون رسید. این همه سایت رایگان توی اینترنت هست که پراکسی لیست قرار میدن تنها نیاز بود لیست پراکسی‌ها رو استخراج کنیم و از آن‌ها استفاده کنیم. به نظر ایده خوبی میآد و شدنی بود.

اولین کاری که لازم بود انجام بدم پیدا کردن لیست سایت‌های پراکسی بود که کار زیاد سختی نبود به سادگی با یک جستجوی ساده بیش از ده سایت پراکسی پیدا کردم و یکی دو تا پراکسی رو دستی تست کردم که کار کرد. اما قرار نبود همه چیز به خوبی پیش بره! همون مثل عشق آسان نمود اول ولی افتاد مشکل‌ها.

قضیه از این قرار بود که خیلی از این پراکسی ها کار نمی‌کردند و اصلا نمی‌شد به آن‌ها وصل شد (احتمالا خیلی شانس آوردم که همون یکی دوتا اول پراکسی کار می‌کرد) تعداد کمی هم که کار می‌کردند خیلی کند بودند، به عنوان نمونه برای باز کردن یک صفحه باید تا ۱۵ ثانیه منتظر می‌شدی که چنین صبر کردن اصلا غیر منطقی است. فرض کنید برای استخراج یک سایت نیاز است که به شکل میانگین ۲۰۰۰ صفحه از آن سایت پردازش شود.

این گزینه هم از روی میز حذف شد.

 

بریم تور ران کنیم

بریم تور ران کنیم
TOR

وقتی پاراکسی‌های رایگان راه به جایی نبرد، یهو به ذهنم خورد که تور کلاینت ران کنیم روی سرور و به عنوان ساکس پراکسی (امیدوارم این پست با این همه کلمه پراکسی فیلتر نشه!) ازش استفاده کنیم. این ایده هم به نظر شدنی می‌آد دیگه – مثلا ۵۰ تا تور ران میکنی و ۵۰ تا پراکسی ازش میگیری!‌ حالا ممکنه یه مقداری هم رم مصرف بشه که خوب می‌ارزه.

در واقع تور(Tor) نرم افزاری است که ترافیک شما رو از شبکه تور رد می‌کند و اینطور می‌توانید در اینترنت ناشناس بمانید این کار کمک می‌کند که آی‌پی شما هنگام بازدید از یک وب‌سایت تغییر کند و آی‌پی واقعی شما نباشد. این قابلیت دقیقا همان چیزی است که ما دنبال آن بودیم یعنی طیف وسیعی از آی‌پی‌های مختلف.

بعد از کلی کلنجار رفتن با بش اسکریپت و انواع نرم‌افزارهای لودبالانسینگ برای ساخت یک روتاری پراکسی هوشمند که قادر باشد هر درخواست را از یک تور در حال اجرا رد کند موفق شدم که سیستم را پیاده‌سازی کنم. تست‌های اولیه به خوبی پاس شد. درخواست‌ها به شکل چرخشی بین تورهایی که اجرا کرده بودم تقسیم می‌شد و همه چیز برای اجرای نهایی آماده بود.

۵۰ عدد تور ران کردم که مصرف حدود ۱٫۵ گیگابایت رم داشت و حدود ۱۰ درصد پردازنده سرور را مشغول کرد. این اعداد زیاد هم بد نبودند! سرور تست ۲ گیگ رم داشت و می‌شد تست‌های اولیه را کامل کرد.

۱۰۰۰لینک تست از یک وب‌سایت را برای دانلود به خزنده تزریق کردم که با سرعت نسبتا خوب (حدود ۱ ثانیه) دانلود شدند! تا اینجا لبخند رضایت روی لبم نقش بسته بود و حالا سراغ تست اصلی بود. ولی متاسفانه باز مشکلی وجود داشت.

هعی امان از کلودفیلر! برخی از سایت‌ها که روی کلودفیلر بودند درخواست‌های ارسال شده از سمت تور را بلاک می کرد و اعتبار سنجی لازم داشت که راه ساده را به راه سخت تبدیل می‌کرد.

البته همیشه این مشکل وجود نداشت فقط به شکل شانسی اتفاق می افتاد وقتی که آی‌پی خروجی تور در بلک لیست قرار گرفته باشه ولی خب مساله اصلی قابل اعتماد بودن سلوشن بود که این بار هم زیر سوال رفته بود.

این گزینه هم از روی میز حذف شد.

 

بریم پراکسی بخریم

خب ظاهرا تمام راه‌حل های رایگان دچار یه مشکل اساسی هستند برای همین رفتم دنبال این که پراکسی لیست خریداری کنم! راه‌حل داخلی برای این مساله هم پیدا نشد! و باز مجبور شدم در بین سرویس‌های خارجی دنبال راه‌حل بگردم! اما وای از قیمت‌ها! کمترین قیمتی که می‌شد پیدا کرد برای ۲۰ عدد پراکسی حدود ۳۶ دلار بود. واقعا دلسرد‌کننده بود وضعیتی که پیش آمده بود.

هر روز تعداد سایت‌هایی که دچار مشکل می‌شدند بیشتر می‌شد و نیاز به راه‌حل اساسی داشتیم! از آن طرف قیمت‌ها ناامید‌کننده‌تر بود. بعد از حدود یکی دو روز گشت و گذار توی اینترنت در حین ناباوری سایتی پیدا کردم که ۱۰۰ عدد پراکسی را با قیمت باور نکردنی ۳ دلار عرضه می کرد.

اول فکر کردم شوخیه ولی گفتم تست کنم، ثبت نام کردم و پنل دمو گرفتم و ده عدد پراکسی تست با ۱ گیگ ترافیک گرفتم که به خوبی کار می‌کرد. باورکردنی نبود قیمت در مقایسه با چیزی که ارائه می‌شد. رفتم که اکانت یک ساله خریداری کنم ولی باز …

تنها پرداخت از طریق کارت اعتباری انجام می‌شد نه درگاه پی‌پل داشت و نه هیچ گزینه دیگری فقط و فقط کردیت کارت. تا قبل از این اتفاق تاثیر تحریم‌ها رو اینقدر با پوست و خون درک نکرده بودم. هیچ وب‌سایت داخلی نبود که این پرداخت را انجام دهد (همه پرداخت‌های پی‌پل انجام دادند یا فقط چند سایت معتبر را پرداخت می کردند) شاید باور نکنید یک هفته به دنبال راهی برای پرداخت ۳۰ دلاری بودم.

واقعا هیچ راهی نبود تا این که بالاخره از یکی از دوستان مقیم خارج خواهش کردم تا این پرداخت را انجام دادند. و اینطور شد که این گره باز شد.

 

خزنده رم‌ها رو خورده

خزنده رم‌ها رو خورده

حالا که خیالمون از بابت بسته شدن آی‌پی راحت شده مشکل دیگه‌ای هست، برای این که بتونیم در زمان مناسبی سایت‌ها را خزش کنیم نیازه که تعداد خزنده‌هایی که اجرا می‌شن رو ارتقاء بدیم اما مساله رم هست.

خزنده با استفاده از کروم داره کار می‌کنه و برای هر خزش از کروم استفاده میشه به این شکل که دستورات لازم برای رفتن به یک صفحه و استخراج محتوا لازم به کروم داده میشه و کروم این کار رو انجام می‌ده. ولی کیه که ندونه کروم هرچی رم دم دستش هست رو نوش جان می‌کنه! هر روز هم داره تعداد سایت‌های جدیدی که به سیستم اضافه می‌شن بیشتر و بیشتر می‌شه! به همون شکل داریم منابع کم می‌آریم.

یک راه‌حل دم دستی دو برابر کردن سرورهای خزنده است که این راه‌حل رو کنار راه‌حل افزایش رم و پردازنده قرار دادم. یعنی تعداد سرورهای خزنده رو دوبرابر کردم، رم را روی هر سرور دو برابر کردم تا سیستم بتونه به کار خودش ادامه بده! اما وای از هزینه‌ها …

نمی‌شد اینطوری ادامه داد و باید فکری می‌کردیم.

 

طراحی مجدد خزنده

چیزی که واضح بود باید کروم از توی خزنده حذف می‌شد! و اما با چی جایگزین می‌شد؟ خوشبختانه با تجربه‌ای که دوست و همراه خوبمون تیم یابکو در این خصوص داشتند پیشنهادی دادند که راهبردی و کاربردی بود.

پیشنهاد رندر استاتیک صفحات بود در این صورت نیازی به کروم و امثالهم وجود نداشت مقداری برنامه‌نویسی و کار بیشتر لازم بود اما واقعا نتیجه خیره‌کننده بود. سایتی که خزش آن یک ساعت طول می‌کشید تنها در ده دقیقه به شکل کامل خزش شد. مصرف رم به یک دهم رسید. یعنی روی یک سرور که در حال حاظر ۶ خزنده در حال فعالیت هستند می شود به سادگی ۳۰ خزنده اجرا کرد و به این شکل سرور دوم را می‌توان حذف کرد.

ممکنه فکر کنید که چرا اصلا همون اول رفتیم و از کروم استفاده کردیم. باید بگم برخی سایت‌ها به شکل داینامیک ساخته شدن یعنی برای این که کاربر قادر باشه محتویات سایت رو ببینه باید اول توسط جاوا اسکریپت سمت کاربر رندر بشه بعد محتوا نمایش داده بشه و همین مهم‌ترین دلیل برای استفاده از کروم بود. که با راهکار جدید دیگه نیازی به اون نبود و می شد حذف بشه.

 

طراحی مجدد خزنده

 

همانطور که مشاهده می‌کنید تعداد صفحاتی که خزنده جدید در روز رندر می‌کند تقریبا دوبرابر صفحات خزنده قدیمی است. البته هنوز برای پایدار شدن خزنده جدید زمان لازم است ولی فکر می‌کنیم راه درست را پیدا کرده‌ایم و بعد از اطمینان خاطر از عملکرد آن می‌توانیم تمرکز خود را بر روی موارد جدید بگذاریم.

 

سنگ‌هایی که برداشته نشدند

وقتی تازه شروع کرده بودیم فکر می‌کردیم که حداقل فروشگاه‌ها با ما همکاری خواهند کرد ولی واقعا اینطور نبود حتی برخی فروشگاه‌ها جلوی راهی که داشتیم می‌رفتیم سنگی که برنداشتند هیچ تازه سنگ‌اندازی هم کردند! (البته بودند فروشگاه‌هایی که همکاری کردند که همینجا ازشان تشکر می‌کنم.)

برخی هم سعی می‌کردند از این نمد برای خود کلاهی بسازند ولی غافل از این بودند که ما شفافیت را فدای هیچ چیز نخواهیم کرد.

 

قابلیت‌ها جدید چی شد پس

قابلیت‌های جدید زیادی به سایت اضافه شده و در یکی دو روز آینده طی یک رپورتاژ از آن‌ها رونمایی خواهیم کرد. همونطور که قبلا هم گفتم این تازه شروع ماجراست منتظر اتفاق‌های جذاب باشید.

 

 

 

منبع:سیسوگ

 

 

 

 

 

 

 

برای این مقاله نظر بگذارید:

لطفا دیدگاه خود را بنویسید
لطفا نام خود را وارد کنید