gaurun

General push notification server in Go

Github星跟踪图

Gaurun GitHub release GitHub Actions

Gaurun is a general push notification server written in Golang. It proxies push requests to APNs and FCM and asynchronously executes them via HTTP/2. It helps you when you need to bulkly sends push notification to your users (e.g., when you need to exec 10 million push at once!) or when some other API server which must response quickly needs to push. Since it leverages Golang's powerful concurrent feature, it gives high performance.

In addition to performance, it's important not to lost pushes over sever crashes or hardware failures. Gaurun can use its access log for kind of transaction journal and can re-push only failed notification later (We provide a special command for this. See Usage).

Currently we support the following platforms:

Status

Production ready.

Installation

There are two way to install Gaurun; using a precompiled binary or install from source. Downloading a precompiled binary is easiest and recommended.

To install a precompiled binary, download the appropriate zip package for your OS and architecture from here. Once the zip is downloaded, unzip it and place the binary where you want to use (if you want to access it from the command-line, make sure to put it on $PATH).

To compile from source, you need Go1.13 or later. After setup, then clone the source code by running the following command,

$ git clone https://github.com/mercari/gaurun.git

To fetch dependencies and build, run the following make tasks,

make

Usage

To run gaurun, you must provide configuration path via -c option (See CONFIGURATION.md about details),

$ bin/gaurun -c conf/gaurun.toml

Use -help to see more options.

Crash Recovery

Gaurun can recover from server crashes or hardware failures while pushing. It can use its access log for kind of transaction journal and can re-push only failed notifications later. We provide the special command for this, use it like the following (assuming that access log is generated to /tmp/gaurun.log),

$ bin/gaurun_recover -c conf/gaurun.toml -l /tmp/gaurun.log

Configuration

See CONFIGURATION.md about details.

NOTE: The default configuration is just for development and not high performant. For production usage, tune the performance with some parameters such as workers and queues and pusher_max in the core section.

Specification

API specification is defined on SPEC.md.

Contribution

Please read the CLA below carefully before submitting your contribution.

https://www.mercari.com/cla/

License

Copyright 2014-2019 Mercari, Inc.

Licensed under the MIT License.

主要指标

概览
名称与所有者mercari/gaurun
主编程语言Go
编程语言Go (语言数: 2)
平台
许可证MIT License
所有者活动
创建于2015-04-16 03:53:48
推送于2022-11-22 07:18:19
最后一次提交2021-09-24 12:25:30
发布数27
最新版本名称v0.14.0 (发布于 )
第一版名称v0.1.4 (发布于 )
用户参与
星数0.9k
关注者数73
派生数114
提交数454
已启用问题?
问题数29
打开的问题数6
拉请求数106
打开的拉请求数3
关闭的拉请求数24
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?