برنامه نویسی

طراحی سیستم تسلط: 25 مفهوم کلیدی که باید یاد بگیرید

طراحی سیستم می تواند بسیار دشوار باشد-تا زمانی که شما بنشینید و به مفاهیم اصلی که برنامه های دنیای واقعی را هدایت می کنند تسلط داشته باشید. این 25 ایده بنیادی 20 ٪ دانش را تشکیل می دهند که در 80 ٪ مصاحبه های طراحی سیستم ظاهر می شود. هنگامی که آنها را درک کردید ، همه چیز شروع به کلیک می کند.


1. معماری مشتری-سرور

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

2. آدرس IP و DNS

چگونه مشتری ها سرورها را پیدا می کنند. DNS (سیستم نام دامنه) نام دامنه دوستانه انسان را به آدرس های IP که ماشین آلات استفاده می کنند ، ترجمه می کند.

3. پروکسی و پروکسی معکوس

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

4. تأخیر

تأخیر در سفر داده ، بر سرعت برنامه. تأخیر به ویژه برای برنامه هایی که به کاربران در مکانهای مختلف جغرافیایی خدمت می کنند بسیار مهم است.

5. http vs https

زبان اینترنت. HTTPS با افزودن رمزگذاری از طریق TLS/SSL ، امنیت را افزایش می دهد.

6. APIS & REST

API ارتباط بین مشتری و سرور را تسهیل می کند. استراحت (انتقال حالت بازنمایی) پرکاربردترین معماری API است.

7. همزمانی

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

8. SQL در مقابل NOSQL

بانکهای اطلاعاتی SQL ذخیره سازی ساختاری و سازگار را ارائه می دهند (ایده آل برای برنامه های مالی). بانکهای اطلاعاتی NOSQL انعطاف پذیری و مقیاس پذیری را ارائه می دهند (برای داده های بزرگ و برنامه های زمان واقعی ترجیح داده می شود).

9 مقیاس عمودی

به روزرسانی یک دستگاه واحد با منابع بیشتر (CPU ، RAM) برای بهبود عملکرد.

10. مقیاس افقی

اضافه کردن چندین دستگاه برای توزیع بار کار ، افزایش قابلیت اطمینان و مقیاس پذیری.

11. متعادل بار

درخواست های دریافتی را به سرور مناسب هدایت می کند ، از اضافه بار جلوگیری می کند و از عملیات صاف اطمینان می دهد.

12. نمایه سازی

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

13. تکثیر

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

14. Sharding

داده ها را در چندین سرور بر اساس کلیدهای خاص (به عنوان مثال ، شناسه کاربر) توزیع می کند ، عملکرد و مقیاس پذیری را بهبود می بخشد.

15. پارتیشن بندی عمودی

جداول پایگاه داده را بر اساس ستون ها تقسیم می کند تا اسکن داده های غیر ضروری را کاهش داده و باعث افزایش کارایی شود.

16. ذخیره سازی

فروشگاه ها اغلب به داده ها در حافظه دسترسی پیدا می کنند ، نمایش داده های پایگاه داده و بهبود زمان پاسخ را کاهش می دهند.

17. denormalization

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

18. قضیه کلاه

یک سیستم توزیع شده فقط می تواند دو از سه را تضمین کند: ثبات ، در دسترس بودن یا تحمل پارتیشنبشر

19. ذخیره سازی حباب (به عنوان مثال ، S3)

برای ذخیره پرونده های بزرگ بدون ساختار مانند تصاویر ، فیلم ها و پشتیبان گیری بهینه شده است.

20. CDN (شبکه تحویل محتوا)

محتوای ذخیره شده را به سرورها در سراسر جهان توزیع می کند ، تأخیر را کاهش می دهد و سرعت بخشیدن به محتوای جهانی را افزایش می دهد.

21. WebSockets

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

22.

اجازه دهید به روزرسانی های فوری بین خدمات ، که معمولاً برای تعامل رویداد محور مانند تأیید پرداخت استفاده می شود.

23 خدمات میکروسرویس

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

24. دم پیام

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

25. محدودیت نرخ و API Gateway

با کنترل فرکانس درخواست و مدیریت کارآمد ترافیک API از سوء استفاده جلوگیری می کند.


افکار نهایی

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

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا