Releases: go-orb/go-orb
Releases · go-orb/go-orb
v0.4.1
v0.4.0
- Add context as first parameter for kvstore.
Full Changelog: v0.3.0...v0.4.0
v0.3.0 beta
Overview
Go Orb v0.3.0 Beta introduces significant improvements and new features to enhance the framework's performance, flexibility, and developer experience. This release focuses on improving service discovery, communication, and resource management.
Key Changes and New Features
Registry API Overhaul
- Enhanced Service Discovery: Completely redesigned registry API with improved filtering capabilities
- Performance Improvements: Added caching for faster service lookups
- Unix Socket Support: Native support for Unix sockets enabling high-performance local communication
Client Enhancements
- Renamed API Methods:
Call()
method renamed toRequest()
for clarity and consistency - Resilient Service Calls: Added retry logic as middleware for more robust service communication
- Improved Transport Selection: Enhanced transport mechanism with Unix socket support
- Streaming Capabilities: Implemented streaming for efficient client-server communication
Server Improvements
- Enhanced Component Handling: Improved lifecycle management of server components
- Memory Server Implementation: Added in-memory server for testing purposes and monoliths.
- Improved Entrypoint Configuration: Simplified server setup and configuration
Context-Aware Components
- Resource Management: Modified
Start()
andStop()
methods to accept context for better resource management - Graceful Shutdown: Improved handling of service shutdown with context propagation
Streaming Support
- Bidirectional Communication: Added support for bidirectional streaming between client and server
- Stream Middleware: Implemented middleware support for stream processing
- Multiple Transport Support: Streaming works across memory, gRPC and DRPC transports
- Efficient Data Transfer: Optimized for high-throughput and low-latency data streaming
- Context Propagation: Stream context is properly propagated through the entire communication chain
Configuration System
- Simplified Access: Redesigned configuration as a merged
map[string]any
for easier access and manipulation - Context Integration: Introduced
AppContext
,ServiceContext
, andServiceContextWithConfig
for better context management
Key-Value Store Interface
- Storage Backend Abstraction: Added a new interface for KV store operations
- Pluggable Storage: Allows for easy switching between different storage backends
Event System
- Publish/Subscribe Model: Implemented a pub/sub event system for asynchronous communication
- Decoupled Components: Enables better separation of concerns and more modular architecture
Error Handling
- Enhanced Error Management: Improved the
orberrors
package withWrapNew
andWrapF
methods - Better Error Context: More informative error messages with context preservation
Breaking Changes
- The
Call()
method has been renamed toRequest()
in the client API - Service node structure now includes network type information
- Component lifecycle methods now require context parameters
Migration Guide
Updating Client Calls
Before:
resp, err := client.Call(ctx, di, "service.name", "Method.Name", req)
After:
resp, err := client.Request(ctx, di, "service.name", "Method.Name", req)
Using Unix Socket Transport
// Configure Unix socket transport
transport := http.NewTransport(
http.WithNetwork("unix"),
)
// Create client with Unix socket transport
c := client.NewClient(
client.WithTransport(transport),
)
Context-Aware Component Lifecycle
Before:
err := component.Start()
// ...
err := component.Stop()
After:
ctx := context.Background()
err := component.Start(ctx)
// ...
err := component.Stop(ctx)
Future Roadmap
See https://github.com/orgs/go-orb/projects/1
Feedback and Contributions
We welcome feedback and contributions to help improve Go Orb. Please submit issues and pull requests through the project repository.
Full Changelog: v0.2.0...v0.3.0
v0.2.1
fixing linting errors.
Full Changelog: v0.1.1...v0.2.1
v0.2.0
Full Changelog: v0.1.1...v0.2.0
v0.1.1
Full Changelog: v0.1.0...v0.1.1
v0.1.0 - First alpha release of go-orb
The README explains very well what has changed since the fork and rewrite of go-micro.dev/v4.