Skip to content

A real-time map of geo coordinates designed for high loads.

License

Notifications You must be signed in to change notification settings

teastburn/cartographer

Repository files navigation

cartographer

A real-time map of geo coordinates designed for high loads.

This is an example project that updates a map in real time with millions of geocoordinates per day.

Features

  • Blazing -- Sub millisecond response times for writing locations
  • Fast and Secure -- HTTP2 and HTTPS only
  • Horizontally scalable
  • Scales to millions of listeners
  • New Relic integration
  • Demo suite

Reasoning

Cartographer was built as a side project to handle very high loads of inbound traffic, and learn about scaling websockets, http2 and auto signing of TLS connections.

Installation

OS X & Linux:

# install docker 17+
# install go 1.8+
go run $GOROOT/src/crypto/tls/generate_cert.go --host localhost # writes cert.pem, key.pem
make dev
# available on https://localhost:8080 by default

Usage example

# open https://localhost:8080/static/index.html in browser
make cities
# watch map update in browser

Development setup

TODO

Dependencies

  • Go 1.8.3+
  • Glide 0.12.3+
  • Echo 3.2.1+
  • Docker 17+

Release History

  • 0.0.1
    • Work in progress

TODO

  • Import is fast. Need to slow down map consumption though.
  • Scale bottlenecks:
    • Number of websocket listeners -- move to distributed pubsub model
  • Better docs
  • Make JS not so 2000s
  • Prettify GUI
  • Input validation
  • Better error handling and communication
  • Unit test concurrency model

Meta

Tristan Eastburn

Distributed under the GPL3. See LICENSE for more information.

https://github.com/teastburn

Contributing

  1. Fork it (https://github.com/teastburn/cartographer/fork)
  2. Create your feature branch (git checkout -b feature/fooBar)
  3. Commit your changes (git commit -am 'Add some fooBar')
  4. Push to the branch (git push origin feature/fooBar)
  5. Create a new Pull Request

About

A real-time map of geo coordinates designed for high loads.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published