نوشتن اداین برای Node با ++c


#21

به نظر من . این مشکل صرفا با زبان حل نمیشه … مسائل زیادی از جمله i/o … دیتابیس … نت ورک … منابع … و… دخیلن …
شاید با همون زبانی ک دارید … با لود بالانسر ها و کش ها بتونید اوکیش کنید . .

استک آور فلو دات نتی هست … ۳ تا نود CentOS بعنوان لود بالانسر و کش جلوی دیتابیس و دات نت گذاشته …

آقا سمیر حرفه ای تر هستن … راهنمایی تون میکنن


#22

تقریبا روزی 3 ملیون رکورد


#23

با این سه ملیون چه جوری برخورد می کنین؟ یعنی مثلا برای هر ریکوست باید روی این سه ملیون کاری انجام بدید ؟‌


#24

تکذیب می کنم :smile:


#25

اینم تصویر معماری هیولای پشت استک :))
https://nickcraver.com/blog/content/SO-Architecture-Overview-Logical.svg

یکی از core developer هاش تو بلاگش توضیحش داده و گذاشته …

https://nickcraver.com/blog/2016/02/17/stack-overflow-the-architecture-2016-edition/

فقط اعداد و ارقام و تعداد ریکوئست و حجم DB رو نگاه کنید:) مال سال 2016 هست


#26

ببینین با فیلتر هایی که کاربر داره میتونه این حجم رو کم کنه ولی خوب در بعضی موارد احتیاج به همه داده ها داره

یه نکته بگم خارج بحث : اینجا چقدر خوبه آدم احساس خیلی خوبه داره ممنون از همه دوستان و مدیران


#27

راه فرار ندارید اقا سمیر :rofl:


#28

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


#29

ببینین سیستم بیشتر مانیتورینگ هست دیتا ایی که از سمت سخت افزار ها ارسال میشن به سرور و توی دیتابیس می شینن
کاربر - کاربران از این اطلاعات یکسری گزارش میخوان داشته باشن که بعضی هاشون ریل تایم باید باشه ولی بعضی ها روی کل اطلاعات جستجو دارد ، و یکسری پترن هایی هم در سیستم باتوجه به داده ها هست که باید پیدا بشه
نمی دونم منظورم رو رسوندم از سیستم یا نه؟


#30

با این حساب شما هموجور که بقیه دوستان هم فرمودن مشکل با زبان و فریمورک حل نمی شه. شما ساختار و معماری سیستم براتون باید مهم تر باشه. مثلا دیتابیسی باید انتخاب کنید که به کارتون بیاد و توضیع شده باشه. مدل دیتا تون رو طوری باید طراحی کنید که کمترین زمان رو برای query زدن داشته باشه. در مورد کارهایی که قرار هست رو دیتا انجام بدین و نیاز نیست در موردش به کاربر چیزی برگردونین استفاده از background job می تونه براتون مناسب باشه. اگر به صورت real time می خواین چیزی رو یه کاربر نشون بدین حتما باید از فن آوری ای مثلا websocket و یا SSE استفاده کنین. در بهترین حالت باید یه کلاستر از ورکر ها دشاته باشین که کارهای سنگین رو براتون انجام بدن. حالا ساختارش بستگی به دیتا و عملیات داره ولی مثلا map/reduce به نظر برای اینکار مناسب میاد.


#31

بله همون جوری که فرمودین مشکل معماری در این سیستم ها بیشتر خودش رو نشون میده ،
غیر از موردی که اشاره کردین برای کارهایی مانند این چه معماری توصیه میشه ، البته بیشتر معماری نرم افزاری مد نظرم هست؟


#32

اگر بد دنبال نکرده باشم توصیه میکنم روی federated data و data virtualisation تکیه دارید


#33

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

http://hellhound.io
http://docs.hellhound.io/guides/#_the_unix_philosophy

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


#34

Do one thing, do it well