📥 دریافت شده از: Alex Xu
-------------
How does Netflix scale push messaging for millions of devices?
.
.
This post draws from an article published on Netflix’s engineering blog. Here’s my understanding of how the online streaming giant’s system works.
𝐑𝐞𝐪𝐮𝐢𝐫𝐞𝐦𝐞𝐧𝐭𝐬 & 𝐬𝐜𝐚𝐥𝐞
- 220 million users
- Near real-time
- Backend systems need to send notifications to various clients
- Supported clients: iOS, Android, smart TVs, Roku, Amazon FireStick, web browser
𝐓𝐡𝐞 𝐥𝐢𝐟𝐞 𝐨𝐟 𝐚 𝐩𝐮𝐬𝐡 𝐧𝐨𝐭𝐢𝐟𝐢𝐜𝐚𝐭𝐢𝐨𝐧
1. Push notification events are triggered by the clock, user actions, or by systems.
2. Events are sent to the event management engine.
3. The event management engine listens to specific events and forward events to different queues. The queues are populated by priority-based event forwarding rules.
4. The “event priority-based processing cluster” processes events and generates push notifications data for devices.
5. A Cassandra database is used to store the notification data.
6. A push notification is sent to outbound messaging systems.
7. For Android, FCM is used to send push notifications. For Apple devices, APNs are used. For web, TV, and other streaming devices, Netflix’s homegrown solution called ‘Zuul Push’ is used.
Over to you: if you wanted to support every kind of device, which delivery model would work better, push or pull-based notifications?
–
Subscribe to our weekly newsletter to learn something new every week ⇩:
https://bit.ly/3FEGliw
#systemdesign #coding #interviewtips
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
-------------
How does Netflix scale push messaging for millions of devices?
.
.
This post draws from an article published on Netflix’s engineering blog. Here’s my understanding of how the online streaming giant’s system works.
𝐑𝐞𝐪𝐮𝐢𝐫𝐞𝐦𝐞𝐧𝐭𝐬 & 𝐬𝐜𝐚𝐥𝐞
- 220 million users
- Near real-time
- Backend systems need to send notifications to various clients
- Supported clients: iOS, Android, smart TVs, Roku, Amazon FireStick, web browser
𝐓𝐡𝐞 𝐥𝐢𝐟𝐞 𝐨𝐟 𝐚 𝐩𝐮𝐬𝐡 𝐧𝐨𝐭𝐢𝐟𝐢𝐜𝐚𝐭𝐢𝐨𝐧
1. Push notification events are triggered by the clock, user actions, or by systems.
2. Events are sent to the event management engine.
3. The event management engine listens to specific events and forward events to different queues. The queues are populated by priority-based event forwarding rules.
4. The “event priority-based processing cluster” processes events and generates push notifications data for devices.
5. A Cassandra database is used to store the notification data.
6. A push notification is sent to outbound messaging systems.
7. For Android, FCM is used to send push notifications. For Apple devices, APNs are used. For web, TV, and other streaming devices, Netflix’s homegrown solution called ‘Zuul Push’ is used.
Over to you: if you wanted to support every kind of device, which delivery model would work better, push or pull-based notifications?
–
Subscribe to our weekly newsletter to learn something new every week ⇩:
https://bit.ly/3FEGliw
#systemdesign #coding #interviewtips
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔥2
📥 دریافت شده از:
💎 Masih Jazayeri
-------------
❎ توی این پست راجب اینکه channel ها داخل Golang چطور پیاده سازی شدن و وقتی روی اون ها دیتا ای ارسال/دریافت میکنیم دقیقا چه اتفاقی رخ میده نوشتم.
☘ https://vrgl.ir/g73qi
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
💎 Masih Jazayeri
-------------
❎ توی این پست راجب اینکه channel ها داخل Golang چطور پیاده سازی شدن و وقتی روی اون ها دیتا ای ارسال/دریافت میکنیم دقیقا چه اتفاقی رخ میده نوشتم.
☘ https://vrgl.ir/g73qi
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
ویرگول
چجوری Channel ها در Golang کار میکنن
در این پست میخوایم راجب اینکه channel ها چطور کار میکنن و نحوه ی ارسال/دریافت دیتا روی اون ها به چه شکل هست صحبت کنیم.
👍2👏2
Gopher Academy
👇𝗣𝗿𝗶𝗻𝗰𝗶𝗽𝗹𝗲𝘀 & 𝗕𝗲𝘀𝘁 𝗽𝗿𝗮𝗰𝘁𝗶𝗰𝗲𝘀 𝗼𝗳 𝗥𝗘𝗦𝗧 𝗔𝗣𝗜 𝗗𝗲𝘀𝗶𝗴𝗻👇 ➖➖➖➖➖➖➖➖➖ 🔰 @gopher_academy
📥 دریافت شده از:
Dr. Milan Milanović
-------------
𝗣𝗿𝗶𝗻𝗰𝗶𝗽𝗹𝗲𝘀 & 𝗕𝗲𝘀𝘁 𝗽𝗿𝗮𝗰𝘁𝗶𝗰𝗲𝘀 𝗼𝗳 𝗥𝗘𝗦𝗧 𝗔𝗣𝗜 𝗗𝗲𝘀𝗶𝗴𝗻
The Six Principles / Constraints
𝟭. 𝗖𝗹𝗶𝗲𝗻𝘁-𝗦𝗲𝗿𝘃𝗲𝗿: Separation of concerns is the principle behind the client-server constraints. By separating the user interface concerns from the data storage concerns, we improve the portability of the user interface across multiple platforms and improve scalability by simplifying the server components.
𝟮. 𝗦𝘁𝗮𝘁𝗲𝗹𝗲𝘀𝘀: communication must be stateless, as in the client-stateless-server (CSS) style. Each request from the client to the server must contain all of the information necessary to understand the request. Session state is therefore kept entirely on the client.
𝟯. 𝗖𝗮𝗰𝗵𝗲𝗮𝗯𝗹𝗲: To improve network efficiency, we add cache constraints to form the client-cache-stateless-server style. Cache constraints require that the data respond to a request with the implicit or explicit label as cacheable or non-cacheable. If a response is cacheable, then a client cache is given the right to reuse that response data for later, equivalent requests.
𝟰. 𝗟𝗮𝘆𝗲𝗿𝗲𝗱 𝗦𝘆𝘀𝘁𝗲𝗺: A client cannot ordinarily tell whether it is connected directly to the end server or an intermediary along the way. Intermediary servers may improve system scalability by enabling load-balancing and by providing shared caches. Layers may also enforce security policies.
𝟱. 𝗖𝗼𝗱𝗲-𝗼𝗻-𝗗𝗲𝗺𝗮𝗻𝗱: REST allows client functionality to extend by downloading and executing code in the form of applets or scripts. Simplifies clients by reducing the number of features required to be pre-implemented. It allows features to download after deployment improves system extensibility.
𝟲. 𝗨𝗻𝗶𝗳𝗼𝗿𝗺 𝗜𝗻𝘁𝗲𝗿𝗳𝗮𝗰𝗲: By applying the software engineering principle of generality to the component interface, the overall system architecture becomes simplified, and the visibility of interactions is improved.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
Dr. Milan Milanović
-------------
𝗣𝗿𝗶𝗻𝗰𝗶𝗽𝗹𝗲𝘀 & 𝗕𝗲𝘀𝘁 𝗽𝗿𝗮𝗰𝘁𝗶𝗰𝗲𝘀 𝗼𝗳 𝗥𝗘𝗦𝗧 𝗔𝗣𝗜 𝗗𝗲𝘀𝗶𝗴𝗻
The Six Principles / Constraints
𝟭. 𝗖𝗹𝗶𝗲𝗻𝘁-𝗦𝗲𝗿𝘃𝗲𝗿: Separation of concerns is the principle behind the client-server constraints. By separating the user interface concerns from the data storage concerns, we improve the portability of the user interface across multiple platforms and improve scalability by simplifying the server components.
𝟮. 𝗦𝘁𝗮𝘁𝗲𝗹𝗲𝘀𝘀: communication must be stateless, as in the client-stateless-server (CSS) style. Each request from the client to the server must contain all of the information necessary to understand the request. Session state is therefore kept entirely on the client.
𝟯. 𝗖𝗮𝗰𝗵𝗲𝗮𝗯𝗹𝗲: To improve network efficiency, we add cache constraints to form the client-cache-stateless-server style. Cache constraints require that the data respond to a request with the implicit or explicit label as cacheable or non-cacheable. If a response is cacheable, then a client cache is given the right to reuse that response data for later, equivalent requests.
𝟰. 𝗟𝗮𝘆𝗲𝗿𝗲𝗱 𝗦𝘆𝘀𝘁𝗲𝗺: A client cannot ordinarily tell whether it is connected directly to the end server or an intermediary along the way. Intermediary servers may improve system scalability by enabling load-balancing and by providing shared caches. Layers may also enforce security policies.
𝟱. 𝗖𝗼𝗱𝗲-𝗼𝗻-𝗗𝗲𝗺𝗮𝗻𝗱: REST allows client functionality to extend by downloading and executing code in the form of applets or scripts. Simplifies clients by reducing the number of features required to be pre-implemented. It allows features to download after deployment improves system extensibility.
𝟲. 𝗨𝗻𝗶𝗳𝗼𝗿𝗺 𝗜𝗻𝘁𝗲𝗿𝗳𝗮𝗰𝗲: By applying the software engineering principle of generality to the component interface, the overall system architecture becomes simplified, and the visibility of interactions is improved.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
👍4
گفتگوی شنیدنی با مهندس مصطفی صولتی
مهندس نرم افزار و CTO در اسنپکیچن!
فایل صوتی گفتگو در سایت GoCasts منشتر شد🚀
امیدوارم که مفید باشه و باز هم مثل همیشه ممنون از همراهی تون 🌹
در این جلسه در مورد مسائل مختلف مهندسی نرمافزار و همچنین چالشهایی که بچهها در مصاحبهها باهاش مواجه هستن صحبت کردیم
https://gocasts.ir/talk-with-mostafa-solati?utm_source=telegram&utm_medium=message&utm_campaign=talk-with-solati
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
مهندس نرم افزار و CTO در اسنپکیچن!
فایل صوتی گفتگو در سایت GoCasts منشتر شد🚀
امیدوارم که مفید باشه و باز هم مثل همیشه ممنون از همراهی تون 🌹
در این جلسه در مورد مسائل مختلف مهندسی نرمافزار و همچنین چالشهایی که بچهها در مصاحبهها باهاش مواجه هستن صحبت کردیم
https://gocasts.ir/talk-with-mostafa-solati?utm_source=telegram&utm_medium=message&utm_campaign=talk-with-solati
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
👍3🔥2
Forwarded from Geniuses Group (Omid Hekayati)
کامپایلر رسمی زبان برنامه نویسی Go به دسترسی فیلد ها و متدهای یک ساختار توسط دیگر پکیچ ها ایراد میگیره ولی درون یک پکیچ این قاعده رعایت نمیشه. موافق هستید لینتر یا کامپایلر این موضوع را بررسی کنه و اخطار بده؟ (جزییات در کامنت)
Anonymous Poll
25%
موافق نیستم به صورت قاعده در بیاد
45%
موافق هستم صرفا لینتر ایراد بگیره
30%
موافق هستم کامپایلر ایراد بگیره
👍1
🎊 Go 1.19.1 and 1.18.6 are released!
🔐 Security: Includes security fixes for net/http (CVE-2022-27664) and net/url (CVE-2022-32190).
🗣 Announcement: https://groups.google.com/g/golang-announce/c/x49AQzIVX-s
⬇️ Download: https://go.dev/dl/#go1.19.1
#golang
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔐 Security: Includes security fixes for net/http (CVE-2022-27664) and net/url (CVE-2022-32190).
🗣 Announcement: https://groups.google.com/g/golang-announce/c/x49AQzIVX-s
⬇️ Download: https://go.dev/dl/#go1.19.1
#golang
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
go.dev
All releases - The Go Programming Language
👍2
Vulnerability Management for Go
We are excited to announce Go’s new support for vulnerability management, our first step towards helping Go developers learn about known vulnerabilities that may affect them.
This post provides an overview of what’s available today and next steps for this project.
https://go.dev/blog/vuln
دوستان لطفاً این مقاله جدید را مطالعه کنید و نکات مفیدی و قابل اهمیتی بدست آوردید داخل گروه به اشتراک بزارید.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
We are excited to announce Go’s new support for vulnerability management, our first step towards helping Go developers learn about known vulnerabilities that may affect them.
This post provides an overview of what’s available today and next steps for this project.
https://go.dev/blog/vuln
دوستان لطفاً این مقاله جدید را مطالعه کنید و نکات مفیدی و قابل اهمیتی بدست آوردید داخل گروه به اشتراک بزارید.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
go.dev
Vulnerability Management for Go - The Go Programming Language
Announcing vulnerability management for Go, to help developers learn about known vulnerabilities in their dependencies.
👍1
🔸استخدام برنامهنویس Golang (دورکاری) در شرکت Kick Back
🔹حقوق ۲۰,۰۰۰,۰۰۰ تا ۲۵,۰۰۰,۰۰۰ 🔹تماموقت 🔹ارشد (Senior) 🔹امکان دورکاری
🔗 https://quera.org/r/UUirU9
#job
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔹حقوق ۲۰,۰۰۰,۰۰۰ تا ۲۵,۰۰۰,۰۰۰ 🔹تماموقت 🔹ارشد (Senior) 🔹امکان دورکاری
🔗 https://quera.org/r/UUirU9
#job
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
👍1
🔴 مدیریت حافظه در golang
😉به زودی با توضیحات
🟢Go internal memory structure
🟢Page Heap(mheap)
🔻mspan
🔻mcentral
🔻empty
🔻non-empty
🔻arena
🔻mcache
🟢Stack
🟢Go memory usage (Stack vs Heap)
🟢how the stack and heap memory is used
🔻visualize
🔻 Description
🟢Go Memory management
🟢Memory Allocation
🔻Tiny(size < 16B)
🔻Small(size 16B ~ 32KB)
🔻Large(size > 32KB)
🟢Garbage collection
🔻visualize
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
😉به زودی با توضیحات
🟢Go internal memory structure
🟢Page Heap(mheap)
🔻mspan
🔻mcentral
🔻empty
🔻non-empty
🔻arena
🔻mcache
🟢Stack
🟢Go memory usage (Stack vs Heap)
🟢how the stack and heap memory is used
🔻visualize
🔻 Description
🟢Go Memory management
🟢Memory Allocation
🔻Tiny(size < 16B)
🔻Small(size 16B ~ 32KB)
🔻Large(size > 32KB)
🟢Garbage collection
🔻visualize
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
👍10👏2❤1
🔸استخدام تحلیلگر و برنامهنویس GoLang در شرکت هوشمند سازان هستی #تهران
🔹حقوق ۱۲,۰۰۰,۰۰۰ تا ۱۶,۰۰۰,۰۰۰ 🔹تماموقت 🔹ارشد (Senior)
🔗 https://quera.org/r/0frS4K
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔹حقوق ۱۲,۰۰۰,۰۰۰ تا ۱۶,۰۰۰,۰۰۰ 🔹تماموقت 🔹ارشد (Senior)
🔗 https://quera.org/r/0frS4K
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
👍2
با کمک این ابزار انلاین json های پیچیده و تودرتو رو راحت به صورت گراف ببینید و با سرچ دنبال node های مشخصی که دنبالش هستین بگردین.
#json #viewer #view #editor #visualize #graph #visio
https://jsonvisio.com/editor
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
#json #viewer #view #editor #visualize #graph #visio
https://jsonvisio.com/editor
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
👍8
ایونت چطور یک برنامه بنویسیم با ناصر میرزایی:
نوشتن یک وب سرویس به روش ساده با گولنگ
ایونت در تاریخ جمعه ۱۸ شهریور ماه ساعت ۱۰:۳۰ شب در کانال گوفرآکادمی ( گوفرآکادمی هیچ شعبه دیگری ندارد)
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
نوشتن یک وب سرویس به روش ساده با گولنگ
ایونت در تاریخ جمعه ۱۸ شهریور ماه ساعت ۱۰:۳۰ شب در کانال گوفرآکادمی ( گوفرآکادمی هیچ شعبه دیگری ندارد)
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
👍7❤4🔥4🎉2
لیستی از سوالات مصاحبهطور برای طراحی سیستمهای نرمافزاری که برای scale و حالتهای دیگه میشه ازشون الگو گرفت
#interview #system #design #crack #practice #example #practical #scale #scalibility
https://tianpan.co/notes/2016-02-13-crack-the-system-design-interview
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
#interview #system #design #crack #practice #example #practical #scale #scalibility
https://tianpan.co/notes/2016-02-13-crack-the-system-design-interview
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
👍6
🤔2