title: How are the requests handled in GRPC?
body: <p>Lets say that my given GRPC endpoint has the following implementation</p>
  
  <pre><code>type HandlerFunc func(ctx context.Context, in *pb.Request) (*pb.Response, error)
  
  func newHandler() HandlerFunc {
     func (s *Server) Process(ctx context.Context, in *pb.Request) (*pb.Response, error) {
          //do processing
      }
  }
  
  type Server struct {
      Handler handler
  }
  
  func new() (s *Server) {
     return &amp;Server{
        handler: handlers.newHandler()
     }
  }
  func (s *Server) Process(ctx context.Context, in *pb.Request) (*pb.Response, error) {
      return s.handler
  }
  </code></pre>
  
  <p>Now lets say that multiple clients try to call the Process endpoint. Do all of them call the same Process function of the same instance of the server or they call the Process function of the different instance of the server?</p>
  
  <p>Also the handler defined in </p>
  
  <pre><code>func newHandler() HandlerFunc {
     func (s *Server) Process(ctx context.Context, in *pb.Request) (*pb.Response, error) {
          //do processing
      }
  }
  </code></pre>
  
  <p>Is the same instance of the handler handling multiple requests from the same client? Also how about different clients? Is the same instance of the handler handling requests from multiple clients?</p>