I'm the author of SoakUpTheSun. This is an open-source visual assistance platform I built to connect visually impaired users with volunteers via real-time video (similar to "Be My Eyes", but open-source).
I built this primarily to learn how to handle high-concurrency scenarios and heterogeneous microservices.
Key technical implementation details:
Custom SFU in Go: Instead of using standard media servers, I wrote a custom SFU using the Pion library to handle WebRTC signaling and RTP forwarding, aiming for <200ms latency even on weak networks.
Hybrid Matching: To solve the "no answer" problem, I implemented a dual-track strategy:
L1: Redis Hot Pool (Sets) for O(1) matching of currently active volunteers.
L2: Elasticsearch fallback with Painless scripting to score offline users based on credit/activity.
Concurrency: For the "Prize Redemption" feature (high concurrency), I used Redis Lua scripts + Redisson to ensure atomic inventory operations and prevent overselling.
The backend is Java (Spring Cloud Alibaba), streaming is Go, and AI analysis (OCR/Object Detection) is Python.
I'd love to hear your feedback on the architecture, especially regarding the Go SFU implementation and the matching logic.
1103938364•2h ago
I'm the author of SoakUpTheSun. This is an open-source visual assistance platform I built to connect visually impaired users with volunteers via real-time video (similar to "Be My Eyes", but open-source).
I built this primarily to learn how to handle high-concurrency scenarios and heterogeneous microservices.
Key technical implementation details:
Custom SFU in Go: Instead of using standard media servers, I wrote a custom SFU using the Pion library to handle WebRTC signaling and RTP forwarding, aiming for <200ms latency even on weak networks.
Hybrid Matching: To solve the "no answer" problem, I implemented a dual-track strategy:
L1: Redis Hot Pool (Sets) for O(1) matching of currently active volunteers.
L2: Elasticsearch fallback with Painless scripting to score offline users based on credit/activity.
Concurrency: For the "Prize Redemption" feature (high concurrency), I used Redis Lua scripts + Redisson to ensure atomic inventory operations and prevent overselling.
The backend is Java (Spring Cloud Alibaba), streaming is Go, and AI analysis (OCR/Object Detection) is Python.
I'd love to hear your feedback on the architecture, especially regarding the Go SFU implementation and the matching logic.
Repo: https://github.com/xxieyiqiang/soakupthesun
Thanks!