Skip to main content

A lightweight, distributed, relational network architecture for MPC.

Project description

DaaS

Build Status Financial Contributors on Open Collective codecov license

中文版 README

Introduction

Mesh is a standard implementation for Private Transmission Protocol specification.

Mesh Python develop kits base on Python3.6. Recommend use poetry to manage dependencies.

Features

As an open source Internet of Data infrastructure develop kits, Mesh has the following core functions:

  • Minimal kernel with SPI plugin architecture, everything is replacement.
  • Support full stack of service mesh architecture.
  • Support full stack of service oriented architecture.
  • Support transport with TCP, HTTP, or other RPC protocols.
  • Support rich routing features.
  • Support reliable upstream management and load balancing capabilities.
  • Support network and protocol layer observability.
  • Support mTLS and protocols on TLS.
  • Support rich extension mechanism to provide highly customizable expansion capabilities.
  • Support process smooth upgrade.

Get Started

poetry add imesh

or

pip install imesh

RPC

Declared rpc interface Facade.

from abc import ABC, abstractmethod

from mesh import spi, mpi


@spi("mesh")
class Tokenizer(ABC):

    @abstractmethod
    @mpi("mesh.trust.apply")
    def apply(self, kind: str, duration: int) -> str:
        """
        Apply a node token.
        :param kind:
        :param duration:
        :return:
        """
        pass

    @abstractmethod
    @mpi("mesh.trust.verify")
    def verify(self, token: str) -> bool:
        """
        Verify some token verifiable.
        :param token:
        :return:
        """
        pass

Declared rpc service Implement.

from mesh import mps, Tokenizer


@mps
class MeshTokenizer(Tokenizer):

    def apply(self, kind: str, duration: int) -> str:
        return "foo"

    def verify(self, token: str) -> bool:
        return True

Remote reference procedure call.

from mesh import mpi, Tokenizer


class Component:

    @mpi
    def tokenizer(self) -> Tokenizer:
        pass

    def invoke(self) -> bool:
        token = self.tokenizer().apply('PERMIT', 1000 * 60 * 5)
        return self.tokenizer().verify(token)

Transport

Transport is a full duplex communication stream implement.

import mesh
from mesh import Mesh, log, ServiceLoader, Transport, Routable
from mesh.prsim import Header


def main():
    mesh.start()

    transport = Routable.of(ServiceLoader.load(Transport).get("mesh"))
    session = transport.with_address("10.99.1.33:570").local().open('session_id_008', {
        Header.MESH_VERSION.key(): '',
        Header.MESH_TECH_PROVIDER_CODE.key(): 'LX',
        Header.MESH_TRACE_ID.key(): Mesh.context().get_trace_id(),
        Header.MESH_TOKEN.key(): 'x',
        Header.MESH_SESSION_ID.key(): 'session_id_008',
        Header.MESH_TARGET_INST_ID.key(): 'JG0100000100000000',
    })
    for index in range(100):
        inbound = f"节点4发送给节点5报文{index}"
        log.info(f"节点4发送:{inbound}")
        session.push(inbound.encode('utf-8'), {}, "topic")
        outbound = session.pop(10000, "topic")
        if outbound:
            log.info(f"节点4接收:{outbound.decode('utf-8')}")

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

daas-0.0.14.tar.gz (40.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

daas-0.0.14-py3-none-any.whl (41.1 MB view details)

Uploaded Python 3

File details

Details for the file daas-0.0.14.tar.gz.

File metadata

  • Download URL: daas-0.0.14.tar.gz
  • Upload date:
  • Size: 40.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.13.5 Darwin/24.3.0

File hashes

Hashes for daas-0.0.14.tar.gz
Algorithm Hash digest
SHA256 b63dcf02dc9e28cfc4827b0a3aad2a04b7d4014de6dd669b68eda8c4ffa5da7b
MD5 741f9f2b0042887cfab82c1098b5b287
BLAKE2b-256 acc8945717d9cbc1b710cf28686745447e576f17e86d4af672cbe89e27dcb53b

See more details on using hashes here.

File details

Details for the file daas-0.0.14-py3-none-any.whl.

File metadata

  • Download URL: daas-0.0.14-py3-none-any.whl
  • Upload date:
  • Size: 41.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.13.5 Darwin/24.3.0

File hashes

Hashes for daas-0.0.14-py3-none-any.whl
Algorithm Hash digest
SHA256 00d46a5382ada06abee432dc29bcfb111a6aee7f70c76d05c8293dee62136450
MD5 a7a9a3ab07e4ae2f4d2eeb452ecd905f
BLAKE2b-256 bcd1631f81890245a86e4f6c7a5496b723f6a00fa4fffa173deef1ea62f44ee1

See more details on using hashes here.

Supported by

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