gRPC 是什么以及如何?

问题描述 投票:0回答:1

有一个关于微服务通过 gRPC 进行通信的问题。假设我有一个用户模型,那么我必须为他制作合适的protobuf。每个微服务都以自己的方式与用户交互。由此,我有几个问题:

  1. 一个 protobuf 对我来说足够了吗?还是需要为每一个单独制作一个交互场景?
  2. 是否值得将用户分为不同微服务中的部分?还是只给大家一个模型(复制粘贴)?
  3. 最好的方法是什么:让每个微服务都有自己的身份验证+授权,或者创建一个单独的微服务提供商,为用户提供正确的服务?
  4. 您可以为 gRPC 推荐哪些库?
  5. 我可以阅读/观看什么来更好地理解这种架构的设备?

我尝试在网络上搜索资源,但找不到任何清晰易懂的内容

python microservices grpc-python
1个回答
-2
投票

使用 gRPC 通信设计微服务架构涉及多个考虑因素。让我们来解答您的问题:

Protobuf 设计: 通常为每个服务定义一个 protobuf 文件,封装特定于该服务的数据结构和 RPC 服务。但是,如果多个服务共享相同的用户模型和交互模式,则用户模型的单个 protobuf 定义就足够了。 如果不同的微服务以不同的方式与用户交互,您可能需要为每个交互场景单独定义 protobuf。 用户模型分布: 将用户模型拆分到不同的微服务中还是保持集中化取决于数据一致性、性能和服务边界等因素。 如果每个微服务以独特的方式与用户交互,那么在每个服务中拥有单独的用户模型可能是有意义的。 但是,如果用户模型在服务之间保持一致并且不会引入显着的耦合或性能开销,则集中式用户模型可以简化开发。 认证与授权: 由专用服务(例如 OAuth 服务器)管理的集中式身份验证和授权可以简化安全管理并确保微服务之间的一致性。 但是,根据您的要求(例如,法规遵从性、服务自治),各个微服务可能会实现自己的身份验证和授权逻辑。 gRPC 库: 对于各种编程语言的 gRPC 实现,您可以使用 Google 提供的官方 gRPC 库。这些库提供对定义 protobuf 消息和服务以及实现 gRPC 服务器和客户端的支持。 此外,还有基于 gRPC 构建的社区支持的库和框架,可提供附加功能以及与特定平台的集成。 学习资源: Google 关于 gRPC 的文档提供了用于理解和实现 gRPC 的全面指南、教程和参考文档。 Brendan Burns 的《Designing Distributed Systems》和 Chris Richardson 的《Microservices Patterns》等书籍提供了有关设计和实现微服务架构的见解。 Coursera、Udemy 和 Pluralsight 等平台上的在线课程和教程涵盖了与微服务架构、gRPC 和分布式系统设计相关的主题。 在设计使用 gRPC 通信的微服务架构时,请考虑服务边界、数据一致性、性能、安全性和可维护性等因素,以做出明智的决策。根据您的具体要求和约束进行实验和迭代细化将帮助您找到最适合您的应用程序的架构。

© www.soinside.com 2019 - 2024. All rights reserved.