# README
Distributed Event Streaming Service
This repository contains the source code and examples for building a distributed event streaming service using Go, inspired by the concepts and practices from the book "Distributed Services with Go" by Travis Jeffery.
About
The project aims to implement a scalable and reliable event streaming service using Go. It follows the principles and techniques discussed in the book to create a distributed system that handles event persistence, networking, clustering, and deployment.
Key Features
- Event Persistence: Store events in a reliable and scalable manner.
- Networking: Implement networked clients and servers using gRPC for efficient communication.
- Clustering: Scale the service into a distributed cluster using service discovery and consensus algorithms.
- Deployment: Deploy the service locally and on cloud platforms like Kubernetes.
- Observability: Monitor and debug the service with metrics, logs, and traces.
- Security: Operate with secure internal communications using TLS and a Certificate Authority (CA).
- Modularity: Write modular code that is easy to maintain and extend.
- Testing: Ensure reliability and performance with comprehensive tests and benchmarks.
Structure
The project is structured to follow the progressive development of a distributed event streaming service, as outlined in "Distributed Services with Go":
- Getting Started: Basic event persistence and setup.
- Networking: Building networked clients and servers using gRPC.
- Clustering: Scaling the service into a distributed system with service discovery and consensus.
- Deployment: Techniques for deploying the distributed system to production environments.
Getting Started
To get started with the project, clone this repository and follow the instructions in each section of the codebase. Make sure you have Go installed and set up on your machine.
Extra
make sure you run below command Install command:
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc export PATH=$PATH:$(go env GOPATH)/bin
Install package... go get google.golang.org/grpc/cmd/protoc-gen-go-grpc
use require_unimplemented_servers flag in protoc command to avoid unimplemented method error
Contributing
Contributions are welcome! If you find any issues or have suggestions for improvement, please open an issue or a pull request.
License
This project is licensed under the MIT License.