Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈΡΠ΅ Π½Π° Erlang Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Go, ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½Π° Π²ΡΡΡ Ρ ΠΌΠΎΠ΄Π΅Π» Π½Π° Π°ΠΊΡΡΠΎΡΠΈ Ρ ΠΌΡΠ΅ΠΆΠΎΠ²Π° ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡ ΠΈ Π³ΠΎΡΠΎΠ²ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ.
ΠΡΠ½ΠΎΠ²Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π² ΡΠ°Π·ΠΈ Π²Π΅ΡΡΠΈΡ
- mTLS β Π½ΠΎΠ² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ gen.CertAuthManager Π·Π° Π²Π·Π°ΠΈΠΌΠ½Π° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° CA ΠΏΡΠ»ΠΎΠ²Π΅
- NAT traversal β ΠΎΠΏΡΠΈΠΈ RouteHost ΠΈ RoutePort Π·Π° Π²ΡΠ·Π»ΠΈ Π·Π°Π΄ NAT ΠΈΠ»ΠΈ Π±Π°Π»Π°Π½ΡΠ΅ΡΠΈ
- ΠΠΎΠ½ΡΡΠΎΠ» Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ β InitTimeout ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ (Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΠΈ ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΎ)
- ΠΡΠ΅ΠΌΠ΅ Π·Π°_shutdown β ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π½ΠΎ Π·Π°ΡΠ²Π°ΡΡΠ½Π΅ Π½Π° Π²ΡΠ·Π΅Π»Π° Ρ Π»ΠΎΠ³Π²Π°Π½Π΅ Π½Π° Π·Π°Π²ΠΈΡΠ½Π°Π»ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ
- pprof Π΅ΡΠΈΠΊΠ΅ΡΠΈ β Π²ΡΡΠΊΠ° Π³ΠΎΡΡΡΠΈΠ½Π° Π½Π° Π°ΠΊΡΠΎΡΠ° ΡΠ΅ Π΅ΡΠΈΠΊΠ΅ΡΠΈΡΠ° Ρ PID Π·Π° Π΄Π΅Π±ΡΠ³Π²Π°Π½Π΅ ΠΏΡΠ΅Π· pprof
ΠΠΎΠ²ΠΈ Π°ΠΊΡΡΠΎΡΠΈ (Extra Library)
- ΠΠΈΠ΄Π΅Ρ β ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΈΠ·Π±ΠΎΡΠΈ Π½Π° Π»ΠΈΠ΄Π΅Ρ Ρ ΠΊΠΎΠ½ΡΠ΅Π½ΡΡΡ Π² ΡΡΠΈΠ» Raft. ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅Π½ failover, Π·Π°ΡΠΈΡΠ° ΠΎΡ split-brain ΡΡΠ΅Π· ΠΊΠ²ΠΎΡΡΠΌ Π½Π° ΠΌΠ½ΠΎΠ·ΠΈΠ½ΡΡΠ²ΠΎΡΠΎ
- Metrics β Π΅ΠΊΡΠΏΠΎΡΡΠ΅Ρ Π½Π° ΠΌΠ΅ΡΡΠΈΠΊΠΈ Prometheus Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π»Π΅ΠΌΠ΅ΡΡΠΈΡ ΠΎΡ Π²ΡΠ·Π΅Π»Π° ΠΈ ΠΌΡΠ΅ΠΆΠ°ΡΠ°
ΠΠΎΠ²ΠΈ ΠΌΠ΅ΡΠ°-ΠΏΡΠΎΡΠ΅ΡΠΈ
- SSE (Server-Sent Events) β Π΅Π΄Π½ΠΎΠΏΠΎΡΠΎΡΠ΅Π½ ΡΡΡΠΈΠΉΠΌΠΈΠ½Π³ ΠΎΡ ΡΡΡΠ²ΡΡ ΠΊΡΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠΎ HTTP Ρ ΠΏΡΠ»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° SSE
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ
- ΠΠΎΠΊΠ°Π»Π½ΠΎ: 21M+ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ/ΡΠ΅ΠΊ
- ΠΠΎ ΠΌΡΠ΅ΠΆΠ°ΡΠ°: ~5M ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ/ΡΠ΅ΠΊ
- Π Π°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Pub/Sub: 2.9M ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ/ΡΠ΅ΠΊ Π΄ΠΎΡΡΠ°Π²ΠΊΠ° Π½Π° 1,000,000 Π°Π±ΠΎΠ½Π°ΡΠΈ Π½Π° 10 Π²ΡΠ·Π΅Π»Π° (10 ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ 1M)
ΠΠΎΠΏΡΠ°Π²ΠΊΠΈ
- ΠΡΠΈΡΠΈΡΠ΅Π½ Π±ΡΠ³: ΡΠΈΠ³Π½Π°Π»ΠΈΡΠ΅ Π·Π° Π·Π°ΡΠ²Π°ΡΡΠ½Π΅ (Link/Monitor exits) Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΡΠ΅ ΠΎΡΡ Π²ΡΡΠ»ΡΡ Π° ΠΏΠΎΡΠ°Π΄ΠΈ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° incarnation Π² ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡ ΡΠ»ΠΎΠΉ
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
ΠΡΠ»Π½Π° ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ. ΠΠΎΠ²ΠΈ ΡΡΠ°ΡΠΈΠΈ:
- Project Structure β ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅ Ρ Π½ΠΈΠ²Π° Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ°
- Building a Cluster β ΡΡΡΠΏΠΊΠ° ΠΏΠΎ ΡΡΡΠΏΠΊΠ° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π·Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ
- Message Versioning β Π΅Π²ΠΎΠ»ΡΡΠΈΡ Π½Π° ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΈΡΠ΅ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° Π² ΠΊΠ»ΡΡΡΠ΅ΡΠΈ
- Debugging β build tags, pprof, Π΄Π΅Π±ΡΠ³Π²Π°Π½Π΅ Π½Π° Π·Π°Π²ΠΈΡΠ½Π°Π»ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ
ΠΡΡΠ·ΠΊΠΈ
- ΠΡΠΈΠΌΠ΅ΡΠΈ: https://github.com/ergo-services/examples
- ΠΠ΅Π½ΡΠΌΠ°ΡΠΊΠΎΠ²Π΅: https://github.com/ergo-services/benchmarks
- Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ: https://github.com/ergo-services/ergo
- Π‘Π°ΠΉΡ: https://ergo.services
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: linux.org.ru
