我试图在 gRPC、Protobuf 的上下文中理解侦听器、服务器和服务的概念。
让我们使用https://grpc.io/docs/languages/go/basics/ 上的示例作为参考。 这里有
- 听众:lis
- gRPC 服务器:grpcServer := grpc.NewServer()
- 服务:RouteGuide 服务
看来我们还可以在同一服务器上注册多个服务。
也就是说,除了RouteGuide Service,我们还可以说SomeOther Service,SomeOtherOther Service。
我们可以注册所有这三个,并期望服务器能够提供属于这三个服务(RouteGuide、SomeOther、SomeOtherOther)的方法。
package
grpcServer := grpc.NewServer(opts...)
newRouteGuideService := pb.NewRouteGuideServer()
pb.RegisterRouteGuideServer(grpcServer, newRouteGuideService)
someOtherService := pb.NewSomeOtherServer()
pb.RegisterSomeOtherServer(grpcServer, someOtherService)
someOtherOtherService := pb.NewSomeOtherOtherServer()
pb.RegisterSomeOtherOtherService(grpcServer, someOtherOtherService)
lis, err := net.Listen("tcp", fmt.Sprintf("localhost:%d", 80))
grpcServer.Serve(lis)
似乎“服务器”一词在这里被过度使用了。 不仅是 grpcServer,RouteGuide、SomeOther 和 SomeOtherOther 也被称为 Server。
我正在尝试弄清楚如何建模或理解这些概念。
gRPCServerlisgRPCServer