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.
Please see our examples repo for a list of examples.
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.
- Lightning speed direct function calls, this is usefull if you wanna ship your micro-services as well as Monolith.
- Location:
/server/memory
- HTTP/HTTPS/HTTP2/HTTP3: Complete HTTP protocol family
- Features include middleware support, automatic TLS configuration
- Location:
/server/http
- 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
- Google's high-performance RPC framework implementation
- Support for streaming, authentication, and load balancing
- Strong typing via Protocol Buffers
- Location:
/server/grpc
Client plugins provide transport implementations and middleware for communicating with services.
- DRPC: Connection-pooled DRPC client transport
- Location:
/client/orb_transport/drpc
- Location:
- gRPC/gRPCs: Standard and TLS-enabled gRPC client transports, also Connection-pooled.
- Location:
/client/orb_transport/grpc
- Location:
- HTTP/HTTPS/HTTP2/HTTP3: Full HTTP protocol family client transports
- Location:
/client/orb_transport/http
- Location:
- Logging: Request/response logging for debugging and observability
- Location:
/client/middleware/log
- Location:
Codec plugins provide serialization and deserialization for messages:
- Protocol Buffers: Efficient binary serialization
- Location:
/codecs/proto
- Location:
- JSON: Standard and high-performance JSON implementations
- Location:
/codecs/json
,/codecs/goccyjson
- Location:
- YAML/TOML: Human-readable configuration formats
- Location:
/codecs/yaml
,/codecs/toml
- Location:
Configuration plugins provide different sources for application configuration:
- File: Load configuration from JSON, YAML, or TOML files
- Location:
/config/source/file
- Location:
- Memory: In-memory configuration store
- Location:
/config/source/memory
- Location:
Event plugins provide pub/sub messaging capabilities as well as REST like operations:
- NATS: NATS JetStream implementations
- Location:
/event/natsjs
- Location:
Registry plugins provide service discovery and registration:
- Consul: HashiCorp Consul integration for service discovery
- Location:
/registry/consul
- Location:
- mDNS: Local network service discovery via multicast DNS
- Location:
/registry/mdns
- Location:
- Memory: In-memory registry for testing
- Location:
/registry/memory
- Location:
- kvstore: Key-value store registry
- Location:
/registry/kvstore
- Location:
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
- Location:
/kvstore/natsjs
- Location:
We do not accept commit's with a "replace" line in a go.mod.
Install dagger
dagger call test --root=.
dagger call lint --root=.
cd server/http
go test ./... -v -race -cover
cd ...
or with dagger
dagger call test --root=./server/http
To prevent import cycles it's not allowed to import plugins in github.com/go-orb/go-orb.
go-orb is Apache 2.0 licensed same as go-micro.