Mesh: A lightweight, distributed, relational network architecture for MPC

Introduction

Mesh is a MPC network solution to serve resource as service.

Also is A replacement for RPC Framework like dubbo, IOC Container like spring, Serialize Library like json_serializable.

Use easy and sample design to provide strong, robust, and type safe encoding experience.

Features

As an open source network proxy, Mesh has the following core functions:

  • Support full dynamic resource configuration through xDS API integrated with Service Mesh.
  • Support proxy with TCP, HTTP, and 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

Install go compile time.

flutter pub get mesh

Documentation

Add dependencies.

dart pub add maas
dart pub add dev:build_runner
dart pub add dev:source_gen

Use with build_runner. Add below to your build.yaml file.

# Read about `build.yaml` at https://pub.dev/packages/build_config
builders:
  mesh:
    import: "package:maas/dyn/dyn.dart"
    builder_factories: [ "dyn" ]
    build_extensions: { ".dart": [ "mesh.g.dart" ] }
    auto_apply: dependents
    build_to: cache
    applies_builders: [ "source_gen|combining_builder" ]
targets:
  $default:
    builders:
      mesh:
        enabled: true
        options:
          debug: true
          log_level: fine
      source_gen|combining_builder:
        enabled: true
        options:
          debug: true
          log_level: fine

Generate code by mesh dyn builder.

dart run build_runner build

Remote call and JSON codec example with mesh.

import 'package:maas/index.dart';
import 'package:maas/gen/index.g.dart';

@SPI(name: "foo")
abstract class IFoo {
  Future<String?> doc(String name, String formatter, {Context? ctx});
}

@SPI(name: "foo")
class Foo implements IFoo {
  @SPI(name: 'mpi')
  late Builtin builtin;

  @override
  Future<String?> doc(String name, String formatter, {Context? ctx}) async {
    return await builtin.doc(name, formatter, ctx: ctx);
  }
}

Future<void> main() async {
  maas();
  final vars = Proxy.spi<Vars>();
  vars.setenv('MESH_ADDRESS', 'https://127.0.0.1:443');
  final builtin = Proxy.mpi<Builtin>();
  final doc = await builtin.doc('', '');
  info('$doc');

  final foo = Proxy.spi<IFoo>();
  final docx = await foo.doc('', '');
  info('$docx');

  final codec = Proxy.spi<Codec>();
  final json = codec.encodeString(Body(codec: 'x', schema: 'y'));
  info(json);
  final body = codec.decodeString<Body>(json);
  info(body.codec ?? '');
}


Libraries

asm/index
cause/cause
cause/codes
cause/index
codec/index
codec/json
codec/types
dyn/dyn
dyn/idx
dyn/mpi
dyn/spi
gen/index.g
index
jast/JSONBaseListener
jast/JSONBaseVisitor
jast/JSONLexer
jast/JSONListener
jast/JSONParser
jast/JSONVisitor
l10n/localizations
l10n/localizations_en
l10n/localizations_zh
log/index
log/nop
log/types
macro/ark
macro/hook
macro/idx
macro/index
macro/introspect
macro/mpi
macro/proxy
macro/spi
mesh/index
mesh/urn
mesh/vars
mpc/consumer
mpc/contextvars
mpc/eden
mpc/filter
mpc/flags
mpc/grpc/consumer
mpc/grpc/index
mpc/grpc/interceptor
mpc/http/consumer
mpc/http/index
mpc/index
mpc/invoker
mpc/provider
mpc/reference
mpc/robust
mpc/service
psi/builtin
psi/cache
psi/cipher
psi/cluster
psi/commerce
psi/context
psi/cryptor
psi/daler
psi/datahouse
psi/devops
psi/dispatcher
psi/endpoint
psi/firewall
psi/graph
psi/index
psi/kms
psi/kv
psi/licenser
psi/locker
psi/network
psi/pipeline
psi/publisher
psi/registry
psi/routable
psi/savepoint
psi/scheduler
psi/sequence
psi/subscriber
psi/tokenizer
psi/transport
psi/vfs
psi/vm
psi/workflow
tool/index
tool/tool
types/builtin
types/cipher
types/daler
types/devops
types/document
types/entity
types/enums
types/environ
types/event
types/firewall
types/index
types/keys
types/license
types/oauth2
types/payload
types/principal
types/registration
types/route
types/savepoint
types/schema
types/script
types/status
types/transport
types/version
types/workflow
uses/auth/auth
uses/auth/body
uses/auth/controller
uses/auth/controls
uses/auth/form
uses/auth/hero
uses/auth/models
uses/auth/multi_factor
uses/auth/painters
uses/auth/style
uses/error_reporter
uses/index
uses/use_auth
uses/use_stream