Skip to content

go-orb/plugins

Repository files navigation

github.com/go-orb/go-orb -> plugins

This repo contains plugins for github.com/go-orb/go-orb. These plugins implement the functionality of the core Go-Orb framework with various implementations for servers, clients, codecs, configuration sources, event handlers, and more.

With a single _ import you can import a plugin and it's ready to use with the interfaces of the core.

Examples

Please see our examples repo for a list of examples.

Plugins

Server

Server plugins provide different protocol implementations for your Go-Orb services.

All servers implement the server.Entrypoint interface and are configureable with Handlers and Middlewares.

See RPC Benchmarks for a comparison of the different servers.

Memory

  • Lightning speed direct function calls, this is usefull if you wanna ship your micro-services as well as Monolith.
  • Location: /server/memory

HTTP

  • HTTP/HTTPS/HTTP2/HTTP3: Complete HTTP protocol family
  • Features include middleware support, automatic TLS configuration
  • Location: /server/http

DRPC

  • High-performance RPC server implementation using the Storj DRPC protocol
  • Optimized for efficient connection handling and request processing
  • Offers excellent performance characteristics with low overhead
  • Location: /server/drpc

gRPC

  • Google's high-performance RPC framework implementation
  • Support for streaming, authentication, and load balancing
  • Strong typing via Protocol Buffers
  • Location: /server/grpc

Client

Client plugins provide transport implementations and middleware for communicating with services.

Transport Implementations

Middleware

Codecs

Codec plugins provide serialization and deserialization for messages:

Configuration

Configuration plugins provide different sources for application configuration:

Event

Event plugins provide pub/sub messaging capabilities as well as REST like operations:

Registry

Registry plugins provide service discovery and registration:

KV Store

Key-Value Stores, provides easy access to configuration and other data.

  • NATS: NATS JetStream key-value store, it implements the kvstore.Watcher interface for /registry/kvstore

Community

Development

We do not accept commit's with a "replace" line in a go.mod.

Run the tests

Install dagger

dagger call test --root=.

Check linting

dagger call lint --root=.

Run the tests for a single plugin

cd server/http
go test ./... -v -race -cover
cd ...

or with dagger

dagger call test --root=./server/http

Quirks

It's not allowed to import plugins in github.com/go-orb/go-orb

To prevent import cycles it's not allowed to import plugins in github.com/go-orb/go-orb.

Authors

License

go-orb is Apache 2.0 licensed same as go-micro.