了解微服务和 GRPC
Understanding Microservices and GRPC
我有一个 Python 网站和一个要用 GO 编写的 GRPC 服务。
我想在网站上引入微服务。
-GRPC 聊天服务器将用 GOLANG 编写。 GRPC 客户端将用 python 编写,因为我的网站是 python。将来我也想要一个 swift GRPC 存根来与这个 go 服务器通信。
这是正确的架构吗?
我的网站当前的 GRPC 客户端
聊天提交按钮-> python grpc client-> go grpc server -> DB -> gogrpc server-> pygrpc client->UpdateChat
来自任何语言的未来移动 GRPC 客户端的请求
UpdateChatRequest-> Any GRPC Client -> go GRPC server -> DB -> go GRPC Server -> Any GRPC Client->UpdateChat
如果您打算构建多个您可以称之为“gRPC 客户端”的东西,它们与 Go gRPC 服务器对话以执行聊天的 CRUD 操作,这看起来是一个不错的模型。我要说的是,如今,许多 gRPC 实现更多地用于微服务间通信,而不是用于标准(客户端 -> 网关 -> 微服务集群)客户端-服务器通信。在我看来,这主要是由于 gRPC-web 无法在 HTTP/2 上完全运行。现在,老实说,我没有看到在胖客户端(如本机移动设备或桌面设备)上实现 gRPC 有什么问题,因为 gRPC 可以在那些场景中得到完全支持,只是浏览器中还没有。
如果您没有在前端使用 gRPC-web,可能值得研究一下。 gRPC-web 无论如何都需要代理,因此无论您是否使用 gRPC,您都在 HTTP/1.1 上运行,直到浏览器支持与 HTTP/2.
更直接的耦合
有点不清楚,但是你arch不一定叫微服务。实际上,最好不要将“微服务”概念视为应该发生的一夜之间的过渡。你的拱门现在是一块巨石。使用 gRPC 之类的技术不会自动使您的架构成为微服务架构,但它确实可以让您更好地为 gradual transition 做好准备,您应该将您的架构开发成更多的分布式、基于服务的模型。当然,术语“微服务”通常是一个流行词,具有许多不同的含义范围,重要的是要知道您在考虑什么上下文。
我有一个 Python 网站和一个要用 GO 编写的 GRPC 服务。
我想在网站上引入微服务。
-GRPC 聊天服务器将用 GOLANG 编写。 GRPC 客户端将用 python 编写,因为我的网站是 python。将来我也想要一个 swift GRPC 存根来与这个 go 服务器通信。
这是正确的架构吗?
我的网站当前的 GRPC 客户端
聊天提交按钮-> python grpc client-> go grpc server -> DB -> gogrpc server-> pygrpc client->UpdateChat
来自任何语言的未来移动 GRPC 客户端的请求 UpdateChatRequest-> Any GRPC Client -> go GRPC server -> DB -> go GRPC Server -> Any GRPC Client->UpdateChat
如果您打算构建多个您可以称之为“gRPC 客户端”的东西,它们与 Go gRPC 服务器对话以执行聊天的 CRUD 操作,这看起来是一个不错的模型。我要说的是,如今,许多 gRPC 实现更多地用于微服务间通信,而不是用于标准(客户端 -> 网关 -> 微服务集群)客户端-服务器通信。在我看来,这主要是由于 gRPC-web 无法在 HTTP/2 上完全运行。现在,老实说,我没有看到在胖客户端(如本机移动设备或桌面设备)上实现 gRPC 有什么问题,因为 gRPC 可以在那些场景中得到完全支持,只是浏览器中还没有。
如果您没有在前端使用 gRPC-web,可能值得研究一下。 gRPC-web 无论如何都需要代理,因此无论您是否使用 gRPC,您都在 HTTP/1.1 上运行,直到浏览器支持与 HTTP/2.
更直接的耦合有点不清楚,但是你arch不一定叫微服务。实际上,最好不要将“微服务”概念视为应该发生的一夜之间的过渡。你的拱门现在是一块巨石。使用 gRPC 之类的技术不会自动使您的架构成为微服务架构,但它确实可以让您更好地为 gradual transition 做好准备,您应该将您的架构开发成更多的分布式、基于服务的模型。当然,术语“微服务”通常是一个流行词,具有许多不同的含义范围,重要的是要知道您在考虑什么上下文。