Skip to content

go-orb/plugins

Folders and files

NameName
Last commit message
Last commit date
Mar 11, 2025
Mar 20, 2025
Mar 21, 2025
Mar 20, 2025
Mar 21, 2025
Mar 21, 2025
Mar 21, 2025
Mar 21, 2025
Mar 21, 2025
Mar 11, 2025
Mar 21, 2025
Mar 20, 2025
Jul 9, 2023
Feb 20, 2025
Oct 14, 2022
Mar 11, 2025
Mar 11, 2025
Mar 20, 2025
Feb 20, 2025

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.