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.dev4.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: metropolis-0.1.4.dev4.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.7.0

File hashes

Hashes for metropolis-0.1.4.dev4.tar.gz
Algorithm Hash digest
SHA256 f4dcff07cabda8424967c1c1d8fc9533828f7c61c301defaab63d69e2435aac2
MD5 ad009ff40b0b6ca1c48f9190de32fbaf
BLAKE2b-256 c8667673fdccd4f9238d9dcb757e1720de09c03ac6d8b1ef5ba8b07d62836f36

See more details on using hashes here.

File details

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

File metadata

  • Download URL: metropolis-0.1.4.dev4-py3-none-any.whl
  • Upload date:
  • Size: 8.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.7.0

File hashes

Hashes for metropolis-0.1.4.dev4-py3-none-any.whl
Algorithm Hash digest
SHA256 a79f05905f7ec165ca168c3d9c23615dde9ef0ce648c46f520a3292ddf3c4081
MD5 103a7d25731b10b0fc280069e54d00d5
BLAKE2b-256 0e674284813602a710275372ca369e5fe8738176ffd69622190d94856817fd34

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