微服务架构中常见的protobuf数据类型?

Posted

技术标签:

【中文标题】微服务架构中常见的protobuf数据类型?【英文标题】:Common protobuf data types in microservice architecture? 【发布时间】:2018-01-28 15:19:36 【问题描述】:

我们正在考虑实现某种微服务架构。我们将拥有由多个团队维护的软件,我们将使用带有 protobuf 3 的 grpc 作为点对点通信的序列化机制。目标是一方面将业务逻辑与应用程序逻辑分离,另一方面允许 UI 跨越多个业务上下文。

微服务有时必须处理与其他微服务处理的数据相似或相同的数据。

在这种情况下,是否建议将那些常见的proto3数据类型提取出来,单独处理,然后将它们作为依赖项导入到每个微服务中?这样它们就可以在多个服务中重复使用。

或者通过不共享任何(通用)数据类型(不共享架构)来专注于将微服务彼此解耦更好?

【问题讨论】:

【参考方案1】:

您应该想知道为什么多个微服务会处理相似或相同的数据。这可能意味着您在分割解决方案方面走得太远了。引用Sam Newman - “有界上下文表示自治业务领域(即不同的业务能力),因此是识别微服务分界线的适当起点。”。

所以我想说 - 应该有充分的商业理由比业务领域更深入 -> 微服务拆分。

我最近读到的关于“共享库/组件”的一个很好的评论是,这个共享库/组件很快就会成为您的瓶颈,您在其中所做的任何更改都需要跨团队进行大量回归测试以及拥有的初始价值它可能会因维护它所需的努力而黯然失色。

如您所见,如果您使用微服务,我会投票支持无共享方法 ;-)

【讨论】:

以上是关于微服务架构中常见的protobuf数据类型?的主要内容,如果未能解决你的问题,请参考以下文章

gRPC 使用 protobuf 构建微服务

微服务间的通信--Protobuf

微服务架构中涉及的常见组件的名称以及作用

go微服务protobuf中oneofWrapValue和FieldMask的使用

go微服务protobuf中oneofWrapValue和FieldMask的使用

go微服务protobuf中oneofWrapValue和FieldMask的使用