278
GitHub - Terry-Mao/goim: goim
source link: https://github.com/Terry-Mao/goim
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
goim v2.0
goim is a im server writen by golang.
Features
- Light weight
- High performance
- Pure Golang
- Supports single push, multiple push and broadcasting
- Supports one key to multiple subscribers (Configurable maximum subscribers count)
- Supports heartbeats (Application heartbeats, TCP, KeepAlive, HTTP long pulling)
- Supports authentication (Unauthenticated user can't subscribe)
- Supports multiple protocols (WebSocket,TCP,HTTP)
- Scalable architecture (Unlimited dynamic job and logic modules)
- Asynchronous push notification based on Kafka
Architecture
Quick Start
Build
make build
Run
make run
make stop
// or
nohup target/logic -conf=target/logic.toml -region=sh -zone=sh001 -deploy.env=dev -weight=10 2>&1 > target/logic.log &
nohup target/comet -conf=target/comet.toml -region=sh -zone=sh001 -deploy.env=dev -weight=10 -addrs=127.0.0.1 2>&1 > target/logic.log &
nohup target/job -conf=target/job.toml -region=sh -zone=sh001 -deploy.env=dev 2>&1 > target/logic.log &
Environment
env:
export REGION=sh
export ZONE=sh001
export DEPLOY_ENV=dev
supervisor:
environment=REGION=sh,ZONE=sh001,DEPLOY_ENV=dev
go flag:
-region=sh -zone=sh001 deploy.env=dev
Configuration
You can view the comments in target/comet.toml,logic.toml,job.toml to understand the meaning of the config.
Dependencies
Document
Examples
Websocket: Websocket Client Demo
Android: Android
iOS: iOS
Benchmark
Benchmark Server
CPU Memory OS Instance Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHz DDR3 32GB Debian GNU/Linux 8 1Benchmark Case
- Online: 1,000,000
- Duration: 15min
- Push Speed: 40/s (broadcast room)
- Push Message: {"test":1}
- Received calc mode: 1s per times, total 30 times
Benchmark Resource
- CPU: 2000%~2300%
- Memory: 14GB
- GC Pause: 504ms
- Network: Incoming(450MBit/s), Outgoing(4.39GBit/s)
Benchmark Result
- Received: 35,900,000/s
LICENSE
goim is is distributed under the terms of the MIT License.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK