Roham 2 دیدگاه

Redis vs. Memcached for caching

Memcached  یا Redis؟ این سوالیه که تقریبا همیشه در مورد فشرده سازی و پرفورمنس سایت های مدرن مطرح شده بخصوص سایت هایی که نیاز به پاسخگویی حجم بالای درخواست دارند و لازم است بعضی نتایج کوئری ها را هر چند دقیقه یا چند ساعت یکبار ذخیره کنند تا از اجرای مکرر آنها جلوگیری شود، ذخیره سازی یا کش کردن این کوئری های تکراری اغلب اولین گام است و Memcached یا Redis معمولا اولین انتخاب های معمول هستند.

 

هر دو خیلی پر استفاده و معروف هستند، Memcached توسط Brad Fitzpatrick  در سال ۲۰۰۳ برای سایت LiveJournal نوشته شد. Memcached توسط زبان C نوشته شده (نسخه اصلی آن توسط Perl نوشته شده بود).

و Redis توسط Salvatore Sanfilippo در سال ۲۰۰۹ نوشته شد.

 

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

 

بهتر است اینطور بگویم که چه زمانی مناسب است از Redis و چه زمانی از Memcached استفاده کنید

 

چه زمانی از Memcached استفاده کنیم ؟

 

Memcached می تواند برای ذخیره اطلاعات نسبتا کوچک و استاتیک، مانند صفحه هات HTML مناسب باشد.Memcached یک مدیریت حافظه داخلی است و به اندازه Redis پیچیده نیست ، Memcached در موارد استفاده ساده بهترین کارایی را دارد زیرا منابع کمتر حافظه را برای متادیتا مصرف میکند. رشته ها (تنها نوع داده پشتیبانی شده توسط Memcached) ایده آل برای ذخیره سازی داده هایی هستند که فقط خواندنی هستند، زیرا رشته ها نیازی به پردازش بیشتری ندارند درحالی که Redis خیلی بیشتر از این حرفا است .

 

Memcached نسبت به Redis در scaling مزیت بیشتری دارد از آنجا Memcached به صورت multithreaded اجرا میشود شما میتوانید با دادن منابع محاسباتی بیشتر آن را گسترش بدید، البته با این کار در زمان کار ممکنه بخشی از داده های ذخیره شده رو از دست بدین (بسته به این که آيا از هش کردن سازگار استفاده کردین) ولی خوب Redis از انجا که single-threaded اجرا میشود میتواند به صورت افقی از طریق خوشه بندی بدون از دست رفتن داده های گسترش پیدا کند. Clustering یک راه حل موثر برای scaling است.

 

چه زمانی از Redis استفاده کنیم ؟

 

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

 

برتری Redis تقریبا در هر جنبه ای از مدیریت حافظه پنهان مشهود است. حافظه های کش، یک مکانیزم به نام اخراج داده ها (حذف داده ها) دارند تا جای بیشتری برای داده های جدید باز شود. مکانیزم حذف اطلاعات Memcached، از یک الگوریتم به اسم Least Recently  استفاده می کند و به نوعی به طور خودسرانه داده هایی را که با اندازه های جدید مشابه هستند، تخریب می کند.

 

Redis در مقابل اجازه می دهد تا کنترل دقیق بر اخراج یا حذف داده ها داشته باشید، برای مثال به شما اجازه می دهد تا ۶ روش سیاست گزاری مختلف را برای این عملیات انجام بدید. Redis  هم چنین روش های پیشرفته ای را برای مدیریت حافظه ارایه می کند.

 

بهتر است بگویم Redis به شما امکان انعطاف پذیری بیشتری در مورد اشیائی که می توانید ذخیره کنید می دهد.

 

در حالی که Memcached نام های کلید را به 250 بایت محدود می کند و فقط با رشته های ساده کار می کند، Redis اجازه می دهد تا اسامی و مقادیر کلیدی به اندازه 512 مگابایت باشد و آنها می توانند حتی باینری باشند.

 

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

 

در مقاله بعدی درباره نحوه کار Redis و کانفیگ آن صحیت خواهیم کرد.

Roham 2 دیدگاه

معرفی Memcached

داشتن یه کش سرور چه مزیتی میتواند داشته باشد! اگر ما کش سرور نداشته باشیم چه اتفاقی ممکن است بیافتد تو این مقاله در مورد کش سرور و مزیت های آن  صحبت خواهیم کرد.

 

داشتن مکانیزم های مناسب ذخیره سازی یکی از مهم ترین مواردی است که می توانید برای سرعت بخشیدن به delivery دارایی های وب سایت خود انجام دهید. ذخیره سازی تضمین می کند که assets ها در جایی نزدیک به کاربر ذخیره می شوند تا تأخیر ناشی از راه دور به حداقل برسد.

Memcached چیست ؟

Memcached یک منبع باز توزیع شده سیستم ذخیره حافظه است. Memcached برای افزایش سرعت برنامه های dynamic web یا کاهش بار پایگاه داده مورد استفاده قرار می گیرد.تصور کنید که اگر ما کش سروری مانندMemcached نداشته باشیم اتفاقی که میافته اینه که هر بار که یک درخواست پایگاه داده ایجاد می شود بار اضافی به سرور اضافه می شود و هر query که توسط هر درخواست باید ایجاد شود باید توسط سرور پردازشی رو اون انجام شود.

Memcached این بار را با ذخیره اشیاء داده در dynamic memory کاهش می دهد (به عنوان حافظه کوتاه مدت برای برنامه ها فکر کنید).

به تصویر زیر دقت کنید تا فرق زمانی که از کش سرور استفاده میکنید با زمانی که استفاده نمیکنید و ببینید. البته شاید اینطور به نظر برسه که هر دو سناریو دارند مموری یکسان مصرف میکنند، اما اگر متوجه شده باشید زمانی که از Memcached استفاده کردیم و Memcached دنبال یک محتوایی بگرده از یک pool حافظه استفاده میکنه که باعث میشه که داده ای که ذخیره کرده را از همان آدرس در کلاستر وب شما لود کند.

Memcached ساده اما قدرتمند است. طراحی ساده آن باعث شده تا API های زیادی برای زبان محتلف داشته باشد.

 

نحوه نصب آن به روی Centos

بعد از نصب کردن memcached با editor آن را ویرایش میکنیم.

قرار است استفاده کنه که رو تعین کنید..Memcached به شما اجازه میده تا مقداری مموری که  (-m)

برای سایت های کوچک مقدار 128MB یا 64MB میتواند عالی باشد اما برای سایت های در اندازه بزگ این عدد رو تا میزان 64GB میتوانید افزایش دهید البته بستگی به منابع شما دارد.

در قسمت p- شما میتوانید پورتی که Memcached قرار است listen کنه رو تعین کنید که میتونید تغیر بدین اما اکثر برنامه و cms ها مانند wordpress روی 11211  گوش میکند.

قسمت -l ادرسی است که Memcached ارتباط برقرار میکنه و روی این ادرس listen میکنه اگر شما یه سرور Memcached برای چندین وب سایت دارین که این ادرس و باید تغیر بدین،اگر نه که همان 127.0.0.1 بگذارید بماند.

با -u میتونید تعین کنید daemon سرویس Memcached تحت چه یوزری اجرا بشه، اگر این قسمت و مانت کنید به صورت پیش فرض از کاربر روت استفاده خواهد کرد.

بعد از تمام شدن کانفیگ باید سرویس ران کنید

امیدوارم به کارتون بیاد، مقاله بعدی در همین رابطه درباره Redis و هم حتما دنبال کنید و اگر اطلاعات دیگه ای لازم داشتین به سایت خود Memcached سر بزنید .

 

Roham 3 دیدگاه

معرفی ابزار ELK

خیلی وقت بود دلم میخواست درباره ELK مطلب بنویسم، اما به دلیل مشغله کاری و … فرصت نمیکردم مطلب بنویسم. در این مقاله کوتاه قصد دارم اندکی درباره ELK بنویسم تا شاید مدیران IT که با این ابزار آشنا نیستن آشنا بشن.یکی از کاربرد های ELK در صنعت IT ،استفاده به عنوان یک log management هست.

تعاریف:

Elasticsearch یک موتور جستجوی open source و قابل توزیع می باشد که برای انتقال اطلاعات از json استفاده میکند یعنی درواقع وقتی میگیم Full text search یعنی با json کار میکند. و به وسیله جاوا توسعه داده شده است و دیتابسش NoSQL هست

اما logstash چیه ؟ این یک ابزار Log Pipeline هست که به شما کمک میکنه تا لاگ های سیستم و سرور های خودتونو به هر آدرسی که میخواین ارسال کنید که در اینجا ما برای متمرکز کردن های لاگ های تمام node هامون اونا رو به سمت Elastic ارسال میکنیم.

نکته : معمولا کایبانا و Elasticsearch رو در کنار هم نصب میکنند.

کیبانا (KIBANA) این برنامه کمک میکند تا بتونید داده هایی که توسط logstash به سمت elasticsearch ارسال کردید و به شکل های گوناگون به صورت داینامیک مصور سازی کنید، این به این معنی هست تغیرات صورت گرفته در داده ها هر ۱۵ دقیقه یک بار یا بیشتر در کیبانا refresh شده و تنایج جدیدی به شما نمایش میشود.

اتفاقی که در تمام فرآید میافته رو میتونید در تصویر زیر ببینید

برای نصب این برنامه و داشتن یک Centerlize log میتونید تمام مراحل و دستی خودتون نصب و کانفیگ کنید یا اینکه داکر آن را نصب کنید.

نکته : برای نصب تمام بسته های ELK حتما از VPN یا پراکسی استفاده کنید.

نکته : برای نصب حتما باید بسته jdk ۸ به بالا به روی هاست خود نصب کرده باشید.

تمام اطلاعات لازم برای نصب این بسته در سایت خود elastic موجود میباشد بنابراین نیازی به نوشتن اون به زبان فارسی نیست.

 

شرکت elastic‌ در پلت فرم ELK خود امکانات زیادی نهفته است، بیشتر آنها رایگان هست شما میتونید از این روش برای مانیتورینگ node های خودتون استفاده کنید علاوه بر ابزار logstash که کمک میکرد تا شما لاگ های خودتونو به سمت elastic ارسال کنید، یه سری ابزار دیگه در اختیار شما قرار میده برای مانیتورینگ مانند meatricbeat که با جمع کردن یه سری متریک از سرور هاتون، مثل: اطاعات CPU یا RAM یا پهنای یاند NIC تون به شما اجازه میده تا در کیبانا این اطلاعات را مصورسازی و زیبا ببینید.

مانند تصویر زیر:

Roham بدون دیدگاه

What is Ansible

بلخره یه زمانی میرسه که شما سرور یا سرور های خودتون رو کانفیگ کنید : سرورهایی را که نیاز دارید  اونهارو کانفیگ کنید در شرایط عادی باید  به هر کدوم SSH بزنید و دستی کانفیگش کنید ممکنه 100 دستور و هرکدوم و دستی توی ترمینال وارد کنید مثال :  نصب کردن بسته ها، ویرایش فایل های پیکربندی و غیره، اما این داستان میتونه خیلی زمان شما رو بگیره و اعصاب شما رو خورد کنه ممکنه بعد از مدتی کارایی شما کم شه ، اینجاست که خطاهای انسانی وارد میشه و کل داستان و خراب میکنه !!!  یا حتی  میتونه برای ادمین خسته کننده باشه که یه سری کار های روتین و تکراری و روی چندین سرور انجام بده، تصور کنید یک سری Task های پیچیده دارید مثل داشتن یک OpenStack cloud در برنامه خودتون ، انجام این کارها به صورت دستی دیوانگی بیش نیست .اگر شما در یک شرکت درست و حسابی کار کنید ،مدیر ارشد سیستم اگر متوجه شه شما دارید کل دستورها رو دستی خودتون وارد میکنید ممکنه عصبانی شه و شمارو اخراج کنه ، بله این کاملا درسته در بیزنس های واقعی کسی با شما شوخی نداره 🙂
حتما متوجه این شدید که برای حل این مشکل شما نیاز به ابزار های مثل configuration management دارید یه چیزی مثل Asnible یا Pupet  ، ایت ابزار های configuration management tool میتونه راه حل مناسبی برای شما باشه، اگر شما Developer هستین یا SysAdmin و دنبال یه ابزار خوب Automate میگردین به نظر من بهترین ابزار برای شما Ansible خواهد بود. اینکه فرقش با بقیه ابزار ها چیه بمونه برا بعد، اما Ansible چیه ؟
Ansible چیست ؟
این اسم یه اسم علمی تخیلیه گرفته شده از یک کتاب هست. ansible یک دستگاه ارتباطی تخیلی است که می تواند اطلاعات را سریعتر از سرعت نور انتقال بده که نویسنده Ursula K. Le Guin این مفهوم را در کتابش  به اسم Rocannon’s World اختراع کرد، و نویسندگان دیگه داستان های علمی تخیلی این ایده رو از Le Guin گرفتند.
دقیقتر بخوام بگم ، Michael DeHaan خالق  Ansible این اسم رو از نام کتاب “Ender’s Game” که توسط Orson Scott Card نوشته شده گرفته (در سال 2013 نیز فیلمی با این نام توسط Gavin Hood ساخته شد). در” کتاب Ender’s Game” اسم ansible برای کنترل تعداد زیادی از کشتی های راه دور در یک زمان، در فواصل خیلی وسیع استفاده میشده.
حال به عنوان یک استعاره از این اسم برای کنترل سرورها از راه دور استفاده میشود.

ابزار Ansible چطور کار میکند ؟

تصویر زیر نمونه مورد استفاده Ansible را در عمل نشان می دهد.
یه یوزر به اسم Stacy از Ansible برای کانفیگ کردن 3 سرور مبتنی بر Ubuntu استفاده میکنه تا بتونه Nginx رو روی اونها اجرا کنه. Stacy یک اسکریپت Ansible نوشته به اسم webservers.yml ، در Ansible به یک اسکریپت playbook گفته میشود.یک playbook تعریف میکنه که کدوم هاست (دوراقع در Ansible به اسم remote servers شناخته میشه) باید برای کانفیگ استفاده بشه. و یک فهرست مرتب شده از وظایف برای انجام در آن سرورها را شامل میشود. در این مثال هاست های ما web1، web2 و web3 هستند و کارای که در آنها باید انجام بشه اینا هستند :
1 – نصب nginx
2- ایجاد فایل کانفیگ nginx
3- استارت کردن سرویس nginx
در مقالات بعدی صحبت خواهیم کرد که Stacy چطور این playbook را اجرا میکنه ، فعلا در این مثال playbook با نام webservers.yml ذخیره شده که میشه با دستور زیر اون رو اجرا کرد

 

 

.

Ansible درواقع یک  ارتباطات SSH را به صورت موازی با web1, web2, and web3 ایجاد میکن، درنهایت اولین دستور در لیست هر سه سرور را به صورت همزمان اجرا خواهد کرد در این مثال اولین دستور نصب  پکیج nginx توسط دستور apt میباشد  (درواقع Ubuntu از این پکیج منیجر برای نصب بسته ها استفاده میکند) بنابراین دستور playbook برای این کار چیزی مانند دستور زیر است.

همچنین Ansible  بعد از اجرای یه سری کارای دیگه هم میکنه:

  1. یک اسکریپت پایتون ایجاد میکنه که بسته nginx را نصب می کنه.
  2. اسکریپت را به web1، web2 و web3 کپی میکند.
  3. اسکریپت را در web1، web2، web3 اجرا میکند.
  4. صبر میکنه تا اسکریپت برای تمام موارد اجرا شود.

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

Ansible  هر کار را به طور موازی در تمام میزبان اجرا می کند.

Asnible   منتظر می ماند تا تمام هاست ها قبل از رفتن به کار بعدی کار قبلی را تمام کنند.

Ansible  وظایف را به ترتیبی که آنها را مشخص می کنید اجرا می کند.

امیدوارم براتون مفید باشه، هر سوالی داشتن میتونید در گر.ه قبیله در تلگرام مطرح کنید.

Roham بدون دیدگاه

چطور برای اسکریپت های پایتون امکان نصب ایجاد کنیم!

نحوه package کردن یک برنامه پایتون برای قابلیت نصب بسته توسط pip
اسکریپتهای Python برای بسیاری از کارها قابل استفاده هستند، به هر حال شما بعد از اینکه اسکریپت خودتون رو نوشتین باید هر بار به مسیر اسکریپت برید و اون رو اجرا کنید، مانند زیر:

چقدر خوبه که هز زمان که خواستین بتونید اون اسکریپت و در هر کامپیوتر و هرکجا که خواستین داشته باشین، برای این کار فقط کافیه 3 مرحله لازمه زیر رو انجام بدین، تا شما یه برنامه pip-installable داشته باشید. یا اینکه دوست دارید یک کتابخونه بنویسید که بعدا با دستور pip بتونید نصبش کنید.

بیشتر بدانید

Roham بدون دیدگاه

آموزش جنگو (قسمت اول) – Introduction

با سلام خدمت تمام گیک های عزیز

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

 

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

 

تهیه شده توسط آرون در قبیله گیک ها

Youtube / Telegram / Torrent / Aparat

Roham 3 دیدگاه

یک سوپ خوش مزه با دستور پایتونی

یکی از کتابخونه های باحال پایتون Beautiful Soup هست که به شما اجازه میده تا دیتای مورد نظرتون رو از سایت های HTML یا XML خارج کنید. خوب به چه دردی میخوره این ؟ اصلا به درد میخوره ؟ کاربردش چیه ؟
اما قبلش بزارید بگم که چند راه مختلف برای Web scraping از سایت ها وجود داره یکی از اون ها استفاده از API های خود سایت ها هست سایت های بزرگی مانند توئیتر ، فیسبوک ، … اما متاسفانه خیلی از سایت ها برای این کار که شما بتونید یک موتور استخراج دیتا بنوسید API های مورد نیاز شما را ندارند . یا همچین سرویسی رو ارائه نمیکنند.

بیشتر بدانید