1712416705304.pdf
489.2 KB
ممکنه تو مصاحبه ازتون در مورد Caching بپرسند
یا حتی بخواهید که برای سایتتون Caching راه بندازید تا سریع تر لود بشه
یا ممکنه Cache داشته باشه و تو invalidate کردن مشکل بخورید
تو این داکیومنت من به صورت ساده Caching رو توضیح دادم
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
یا حتی بخواهید که برای سایتتون Caching راه بندازید تا سریع تر لود بشه
یا ممکنه Cache داشته باشه و تو invalidate کردن مشکل بخورید
تو این داکیومنت من به صورت ساده Caching رو توضیح دادم
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
❤9👍5🍾2
9 best practices that you must know before building microservices:
🎯Design For Failure
A distributed system with microservices is going to fail.
You must design the system to tolerate failure at multiple levels such as infrastructure, database, and individual services. Use circuit breakers, bulkheads, or graceful degradation methods to deal with failures.
🎯Build Small Services
A microservice should not do multiple things at once.
A good microservice is designed to do one thing well.
🎯Use lightweight protocols for communication
Communication is the core of a distributed system.
Microservices must talk to each other using lightweight protocols. Options include REST, gRPC, or message brokers.
🎯Implement service discovery
To communicate with each other, microservices need to discover each other over the network.
Implement service discovery using tools such as Consul, Eureka, or Kubernetes Services
🎯Data Ownership
In microservices, data should be owned and managed by the individual services.
The goal should be to reduce coupling between services so that they can evolve independently.
🎯Use resiliency patterns
Implement specific resiliency patterns to improve the availability of the services.
Examples: retry policies, caching, and rate limiting.
🎯Security at all levels
In a microservices-based system, the attack surface is quite large. You must implement security at every level of the service communication path.
🎯Centralized logging
Logs are important to finding issues in a system. With multiple services, they become critical.
🎯Use containerization techniques
To deploy microservices in an isolated manner, use containerization techniques.
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
🎯Design For Failure
A distributed system with microservices is going to fail.
You must design the system to tolerate failure at multiple levels such as infrastructure, database, and individual services. Use circuit breakers, bulkheads, or graceful degradation methods to deal with failures.
🎯Build Small Services
A microservice should not do multiple things at once.
A good microservice is designed to do one thing well.
🎯Use lightweight protocols for communication
Communication is the core of a distributed system.
Microservices must talk to each other using lightweight protocols. Options include REST, gRPC, or message brokers.
🎯Implement service discovery
To communicate with each other, microservices need to discover each other over the network.
Implement service discovery using tools such as Consul, Eureka, or Kubernetes Services
🎯Data Ownership
In microservices, data should be owned and managed by the individual services.
The goal should be to reduce coupling between services so that they can evolve independently.
🎯Use resiliency patterns
Implement specific resiliency patterns to improve the availability of the services.
Examples: retry policies, caching, and rate limiting.
🎯Security at all levels
In a microservices-based system, the attack surface is quite large. You must implement security at every level of the service communication path.
🎯Centralized logging
Logs are important to finding issues in a system. With multiple services, they become critical.
🎯Use containerization techniques
To deploy microservices in an isolated manner, use containerization techniques.
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
🍾2🔥1🕊1
m := make(map[string]int, 3)
x := len(m)
m["Go"] = m["Go"] y := len(m) println(x, y)
x := len(m)
m["Go"] = m["Go"] y := len(m) println(x, y)
Final Results
39%
3 3
13%
3 4
13%
0 0
34%
0 1
👍3🍾2🕊1
🥳 Released PayGap v1.6.0
Payment gateway providers SDK Go for zarinpal, idpay, pay.ir, and other gateway providers.
- feat: add mellat provider
https://github.com/GoFarsi/paygap
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
Payment gateway providers SDK Go for zarinpal, idpay, pay.ir, and other gateway providers.
- feat: add mellat provider
https://github.com/GoFarsi/paygap
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
👍15🔥7🍾3❤1🕊1
یکی از سوال های محبوب مصاحبه بک اند: فرق Kafka و RabbitMQ چیه؟
۱. Performance and Scalability
کافکا برای throughput بالا و horizontal scalability ساخته شده است. هرچند RabbitMQ پرفرمنس بالایی دارد وقتی throughput و حجم داده زیاد باشد کافکا مناسب تر است.
۲. Message Ordering
در RabbitMQ در یک صف ترتیب پیام ها حفظ میشود. در کافکا در یک پارتیشن ترتیب پیام های یک topic حفظ میشود اما نه در پارتیشن های مختلف.
۳. Message Priority
در RabbitMQ از اولویت پیام ها پشتیبانی میشود که اجازه میدهد پیام های با اولویت بالا زودتر پردازش شوند. کافکا از اولویت پشتیبانی نمیکند.
۴. Message Model
مدل پیام های RabbitMQ مبتنی بر صف است و از پروتکل AMQP تبعیت میکند اما کافکا مدل لاگ توزیع شده دارد.
۵. Durability:
برای اینکه پیام ها Durable باشند یعنی اگر failure رخ دهد از بین نروند، در RabbitMQ نیاز به تنظیمات است اما کافکا به طور درونی از این مورد پشتیبانی میکند.
۶. Message Routing
در Rabbit برای مسیریابی پیام ها پیشرفته تر و با استفاده از exchange و binding انجام میشود اما در کافکا ابتدایی تر و با استفاده از topic و پارتیشن ها انجام میشود.
۷. Replication
در Rabbit برای replication می توان از Mirrored Queue استفاده کرد. و کافکا نیز به صورت درونی از partition replication پشتیبانی میکند.
8. Stream Processing
هر دو کافکا و Rabbit از پردازش Stream پشتیبانی می کنند.
9. Latency
طراحی RabbitMQ برای تاخیر کم است و در جایی که نیاز به پردازش نزدیک به realtime است، استفاده میشود.
10. License
لایسنس Rabbit از نوع Mozilla Public License و لایسنس کافکا از نوع 2.0 Apache است.
✍️Pouria JahandidehPouria Jahandideh
🎯Chief Technology Officer | Programming Mentor
➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
۱. Performance and Scalability
کافکا برای throughput بالا و horizontal scalability ساخته شده است. هرچند RabbitMQ پرفرمنس بالایی دارد وقتی throughput و حجم داده زیاد باشد کافکا مناسب تر است.
۲. Message Ordering
در RabbitMQ در یک صف ترتیب پیام ها حفظ میشود. در کافکا در یک پارتیشن ترتیب پیام های یک topic حفظ میشود اما نه در پارتیشن های مختلف.
۳. Message Priority
در RabbitMQ از اولویت پیام ها پشتیبانی میشود که اجازه میدهد پیام های با اولویت بالا زودتر پردازش شوند. کافکا از اولویت پشتیبانی نمیکند.
۴. Message Model
مدل پیام های RabbitMQ مبتنی بر صف است و از پروتکل AMQP تبعیت میکند اما کافکا مدل لاگ توزیع شده دارد.
۵. Durability:
برای اینکه پیام ها Durable باشند یعنی اگر failure رخ دهد از بین نروند، در RabbitMQ نیاز به تنظیمات است اما کافکا به طور درونی از این مورد پشتیبانی میکند.
۶. Message Routing
در Rabbit برای مسیریابی پیام ها پیشرفته تر و با استفاده از exchange و binding انجام میشود اما در کافکا ابتدایی تر و با استفاده از topic و پارتیشن ها انجام میشود.
۷. Replication
در Rabbit برای replication می توان از Mirrored Queue استفاده کرد. و کافکا نیز به صورت درونی از partition replication پشتیبانی میکند.
8. Stream Processing
هر دو کافکا و Rabbit از پردازش Stream پشتیبانی می کنند.
9. Latency
طراحی RabbitMQ برای تاخیر کم است و در جایی که نیاز به پردازش نزدیک به realtime است، استفاده میشود.
10. License
لایسنس Rabbit از نوع Mozilla Public License و لایسنس کافکا از نوع 2.0 Apache است.
✍️Pouria JahandidehPouria Jahandideh
🎯Chief Technology Officer | Programming Mentor
➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
❤15👍10🍾3🕊2
🎉 یافتن فرصت شغلی
دوستانی که Open to work هستند می توانند رزومه خود را برای من و بردیا بفرستند تا داخل کانال و گروه منتشر کنیم دیده شوید.
فقط استک گولنگ پروموت میکنیم.
موارد زیر را به همراه فایل pdf رزومه بفرستید:
@ja7adr
@mrbardia72
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
دوستانی که Open to work هستند می توانند رزومه خود را برای من و بردیا بفرستند تا داخل کانال و گروه منتشر کنیم دیده شوید.
فقط استک گولنگ پروموت میکنیم.
موارد زیر را به همراه فایل pdf رزومه بفرستید:
نام و نام خانوادگی
سن
مدت سابقه
لینکدین
گیتهاب
محل سکونت
امکان نقل مکان برای کار دارم یا خیر
@ja7adr
@mrbardia72
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
❤10👍3🍾1
Alireza Faraji CV.pdf
1.2 MB
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
Please open Telegram to view this post
VIEW IN TELEGRAM
🍾3❤2🔥1🎉1
mohsen_abdolahi.pdf
121.3 KB
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
Please open Telegram to view this post
VIEW IN TELEGRAM
🍾5👍4❤2
25f14e7d-02aa-4e4f-9344-65c3cee97a40.pdf
245.2 KB
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2🕊2
۵۰ نکته برای کسانی که قصد یادگیری زبان برنامهنویسی Go را دارند.
#golang #go #tip #tips
https://golang50shad.es
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
#golang #go #tip #tips
https://golang50shad.es
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
👍6🔥2❤1🍾1
Gopher Academy pinned «🎉 یافتن فرصت شغلی دوستانی که Open to work هستند می توانند رزومه خود را برای من و بردیا بفرستند تا داخل کانال و گروه منتشر کنیم دیده شوید. فقط استک گولنگ پروموت میکنیم. موارد زیر را به همراه فایل pdf رزومه بفرستید: نام و نام خانوادگی سن مدت سابقه لینکدین…»
A Brief History of Airbnb’s Architecture.pdf
1.9 MB
#bytebytego #tips #pro_guide
A Brief History of Airbnb’s Architecture
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
A Brief History of Airbnb’s Architecture
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
🍾7👍2🔥2
A Brief History of Scaling Netflix.pdf
6.5 MB
#bytebytego #tips #pro_guide
A Brief History of Scaling Netflix
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
A Brief History of Scaling Netflix
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
🍾8👍3🔥3