Senior
Have you had experience working with distributed systems?
sobes.tech AI
Answer from AI
Yes, I have experience working with distributed systems in Go. For example, I participated in developing a microservices architecture where services interacted via gRPC and used distributed message queues (such as Kafka) for asynchronous communication. An important aspect was ensuring fault tolerance and data consistency, for which patterns like Circuit Breaker and Saga were applied.
Here's an example of a simple gRPC service in Go:
package main
import (
"context"
"log"
"net"
"google.golang.org/grpc"
pb "example.com/myservice/proto"
)
type server struct {
pb.UnimplementedMyServiceServer
}
func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) {
return &pb.HelloReply{Message: "Hello " + in.Name}, nil
}
func main() {
lis, err := net.Listen("tcp", ":50051")
if err != nil {
log.Fatalf("failed to listen: %v", err)
}
s := grpc.NewServer()
pb.RegisterMyServiceServer(s, &server{})
if err := s.Serve(lis); err != nil {
log.Fatalf("failed to serve: %v", err)
}
}