Ex Snapp! Senior Software Engineer
فوق لیسانس هوش مصنوعی از دانشگاه تهران
اشتراک محتوا در مورد مهندسی نرم افزار، ایجنت های هوش مصنوعی
https://gocasts.ir
پروفایل
https://www.linkedin.com/in/gohossein
ارتباط
@lifography
Ai for Software
@aicasts_ir
Post #516
4.72K
سلام، یه مطلب جدید دارم با کلی ارجاع به مقالات خفن دیگه
امیدوارم مطلبی که میخوام بگم هم براتون کاربردی باشه و هم لذتبخش.
شایدم به شیوه های مختلف در حال استفاده ش هستید ولی بد نیست ابعاد دیگه ش رو ببنید.
کاربردش وقتیه که میخواید یه کار مشابه رو چندبار انجام بدید، در حالیکه یکبار انجام دادنش کافیه. تو نگاه اول کش کردن به ذهنتون میاد که خب اوکیه، ولی باز برای خود کش کردن هم این موضوع کاربردیه.
ضمنا کش کردن هم اگه multi instance باشید مساله invalidate کردن و sync کردن بین podها رو خواهید داشت و یا اینکه third-party service مثل redis استفاده کنید که مساله latency رو خواهید داشت که خودش یه چالش جدید میشه، پس همیشه کش کردن راه حل نیست…
ضمنا برای کوئری های دیتابیسی که به هر دلیلی قابل کش کردن هم نیستن ولی hotpath هستن و در یه لحظات خاصی concurrent query میخورن هم خیلی کاربردیه.
من بار اول تو مقاله discord باهاش آشنا شدم
how discord stores trillions of messages
https://discord.com/blog/how-discord-stores-trillions-of-messages
که همون موقع خیلی بهم ایده داد که این الگو میتونه کاربردهای مختلفی داشته باشه ولی تو مقاله keyword خاصی رو ندیدم که بتونم بیشتر بررسیش کنم.
گذشت و گذشت تا اینکه چند روز پیش این مقاله ای که جدیدا منتشر شده رو دیدم و فهمیدم گولنگ هم یه پکیج داره به اسم singleflight
Go Singleflight Melts in Your Code, Not in Your DB
https://victoriametrics.com/blog/go-singleflight/
بهش میگن duplicate function call suppression mechanism که حتی در سطح سیستم عامل هم برای استفاده میشه و مشکل معروفیه به اسم Thundering herd problem که در این دو لینک پایین میتونید در موردش بخونید
https://en.wikipedia.org/wiki/Thundering_herd_problem
https://xania.org/200807/iocp
حتی بلاگ instagram engineering هم یه مقاله در همین مورد داره
Thundering Herds & Promises
https://instagram-engineering.com/thundering-herds-promises-82191c8af57d
و محمد حسینی راد عزیز هم یه مقاله در همین مورد نوشته قبلا
Avoid duplicate requests while filling cache!
https://medium.com/@mhrlife/avoid-duplicate-requests-while-filling-cache-98c687879f59
مقالاتی که فرستادم، مخصوصا مقاله victoriametrics مفصل در موردش توضیح داده.
اینم یه مقاله دیگه
Understanding Singleflight in Go: A Solution for Eliminating Redundant Work
https://www.codingexplorations.com/blog/understanding-singleflight-in-golang-a-solution-for-eliminating-redundant-work
اینم یه پکیج که context support رو اضافه کرده، هر چند من پکیج اصلی رو بیشتر ترجیح میدم
https://github.com/janos/singleflight
اینم لینک پکیج اصلی
https://pkg.go.dev/golang.org/x/sync/singleflight
توضیحات «دوره + تیمسازی بکند و گولنگ Go Casts» و تخفیف ۵۰ درصدی رو در این پست میتونید بخونید 👇
https://t.me/gocasts/515
@gocasts
#singleflight
امیدوارم مطلبی که میخوام بگم هم براتون کاربردی باشه و هم لذتبخش.
شایدم به شیوه های مختلف در حال استفاده ش هستید ولی بد نیست ابعاد دیگه ش رو ببنید.
کاربردش وقتیه که میخواید یه کار مشابه رو چندبار انجام بدید، در حالیکه یکبار انجام دادنش کافیه. تو نگاه اول کش کردن به ذهنتون میاد که خب اوکیه، ولی باز برای خود کش کردن هم این موضوع کاربردیه.
ضمنا کش کردن هم اگه multi instance باشید مساله invalidate کردن و sync کردن بین podها رو خواهید داشت و یا اینکه third-party service مثل redis استفاده کنید که مساله latency رو خواهید داشت که خودش یه چالش جدید میشه، پس همیشه کش کردن راه حل نیست…
ضمنا برای کوئری های دیتابیسی که به هر دلیلی قابل کش کردن هم نیستن ولی hotpath هستن و در یه لحظات خاصی concurrent query میخورن هم خیلی کاربردیه.
من بار اول تو مقاله discord باهاش آشنا شدم
how discord stores trillions of messages
https://discord.com/blog/how-discord-stores-trillions-of-messages
که همون موقع خیلی بهم ایده داد که این الگو میتونه کاربردهای مختلفی داشته باشه ولی تو مقاله keyword خاصی رو ندیدم که بتونم بیشتر بررسیش کنم.
گذشت و گذشت تا اینکه چند روز پیش این مقاله ای که جدیدا منتشر شده رو دیدم و فهمیدم گولنگ هم یه پکیج داره به اسم singleflight
Go Singleflight Melts in Your Code, Not in Your DB
https://victoriametrics.com/blog/go-singleflight/
بهش میگن duplicate function call suppression mechanism که حتی در سطح سیستم عامل هم برای استفاده میشه و مشکل معروفیه به اسم Thundering herd problem که در این دو لینک پایین میتونید در موردش بخونید
https://en.wikipedia.org/wiki/Thundering_herd_problem
https://xania.org/200807/iocp
حتی بلاگ instagram engineering هم یه مقاله در همین مورد داره
Thundering Herds & Promises
https://instagram-engineering.com/thundering-herds-promises-82191c8af57d
و محمد حسینی راد عزیز هم یه مقاله در همین مورد نوشته قبلا
Avoid duplicate requests while filling cache!
https://medium.com/@mhrlife/avoid-duplicate-requests-while-filling-cache-98c687879f59
مقالاتی که فرستادم، مخصوصا مقاله victoriametrics مفصل در موردش توضیح داده.
اینم یه مقاله دیگه
Understanding Singleflight in Go: A Solution for Eliminating Redundant Work
https://www.codingexplorations.com/blog/understanding-singleflight-in-golang-a-solution-for-eliminating-redundant-work
اینم یه پکیج که context support رو اضافه کرده، هر چند من پکیج اصلی رو بیشتر ترجیح میدم
https://github.com/janos/singleflight
اینم لینک پکیج اصلی
https://pkg.go.dev/golang.org/x/sync/singleflight
توضیحات «دوره + تیمسازی بکند و گولنگ Go Casts» و تخفیف ۵۰ درصدی رو در این پست میتونید بخونید 👇
https://t.me/gocasts/515
@gocasts
#singleflight
- 🔥 18
- ❤ 5
- 👍 5





