Giter Club home page Giter Club logo

gaurun's Introduction

Gaurun GitHub release Travis

logo

Gaurun is a general push notification server written in Golang. It proxies push requests to APNs and GCM/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.8 or later (including $GOPATH setup) and glide for dependency management. After setup, then clone the source code by running the following command,

$ mkdir -p $GOPATH/src/github.com/mercari
$ cd $GOPATH/src/github.com/mercari
$ git clone https://github.com/mercari/gaurun

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

make bundle
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 sever 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.

Committers

Contribution

Please read the CLA below carefully before submitting your contribution.

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

License

Copyright 2014-2017 Mercari, Inc.

Licensed under the MIT License.

gaurun's People

Contributors

cubicdaiya avatar kazegusuri avatar tcnksm avatar timakin avatar tanatana avatar azihsoyn avatar oinume avatar syucream avatar catatsuy avatar mattn avatar zchee avatar shawnps avatar syohex avatar kohkimakimoto avatar tkuchiki avatar

Watchers

James Cloos avatar Nakagawa, takumi avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.