Skip to main content

Microservice gateway using Nats

Project description

Metropolis (Python Microservice Gateway with NATS)

Can we make simple, scalable, observable, operable service gateway?

Purpose

Cloud Native

Single Workload Unit

Service Discovery

Service Mesh

Architecture Concept

  +- Cluster --------------------------------------------------+
  |                                                            |
  |  +- Node-1 --+  +- Node-2 -+  +- Node-3 --+  +- Node-4 -+  |
  |  |           |  |          |  |           |  |          |  |
  |  | Worker-a  |  |          |  |           |  | Worker-d |  |
  |  | Worker-b  |  | Worker-c |  | Worker-a  |  | Worker-c |  |
  |  |    |      |  |    |     |  |    |      |  |    |     |  |
<======= NATS ========= NATS ======================= NATS =======>
  |  |    |      |  |          |  |    |      |  |          |  |
  |  |  Gateway  |  |          |  |  Gateway  |  |          |  |
  |  |    |      |  |          |  |    |      |  |          |  |
  |  +--- | -----+  +----------+  +--- | -----+  +----------+  |
  |       |                            |                       |
  |       +--------------+-------------+                       |
  |                      |                                     |
  |                   Ingress                                  |
  +--------------------- | ------------------------------------+
                         V

Components

Nats

Message bus

Worker

Business Logic worker

Gateway

Service gateway

Example

Install metropolis

$ pip install metropolis

Define Worker task

from metropolis import Worker


worker = Worker(nats='nats://localhost:4222')


@worker.task(subject='foo.bar', queue='worker')
def mytask(data, *args, **kwargs):
    """Simple task which returns reverse string
    """

    return data[0][::-1]


worker.run()

Define Gateway

from metropolis import Gateway
import settings


gateway = Gateway(nats='nats://nats:4222')
gateway.app.run(host='0.0.0.0')

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

metropolis-0.1.4.dev2.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

metropolis-0.1.4.dev2-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file metropolis-0.1.4.dev2.tar.gz.

File metadata

  • Download URL: metropolis-0.1.4.dev2.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.37.0 CPython/3.7.3

File hashes

Hashes for metropolis-0.1.4.dev2.tar.gz
Algorithm Hash digest
SHA256 a30a83507d8e323655506b1496c574fb607e294692d42b5d4052591d115856f9
MD5 62483d621cd8dc43589e92f19ddff017
BLAKE2b-256 ea7d7bbb8e91e82f0fadaf9551d68d776481ddcc8bb3d53208283d9d5789179b

See more details on using hashes here.

File details

Details for the file metropolis-0.1.4.dev2-py3-none-any.whl.

File metadata

  • Download URL: metropolis-0.1.4.dev2-py3-none-any.whl
  • Upload date:
  • Size: 8.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.37.0 CPython/3.7.3

File hashes

Hashes for metropolis-0.1.4.dev2-py3-none-any.whl
Algorithm Hash digest
SHA256 b90dd6474d6b8b3c6e1d68fafa761a8b70efb8752802a15168bc4fac2c69892c
MD5 7b9ac6316d14461d87f11f5307f54305
BLAKE2b-256 7061c8757d2075845fe968cb19af6a6b0a9f0ae92c973bd816ff05b498621e24

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page