Architecture 归档微服务:如何组织业务功能
我正在创建一个微服务,它将负责处理zip和tar文件的归档和取消归档 我知道微服务应该专注于一个业务功能(BF)。但是,当我想到业务功能时,我是指归档和未归档(1个BF)、归档和单独未归档(2个BF)还是压缩、去皮、解压缩、解压(4个BF)Architecture 归档微服务:如何组织业务功能,architecture,soa,microservices,Architecture,Soa,Microservices,我正在创建一个微服务,它将负责处理zip和tar文件的归档和取消归档 我知道微服务应该专注于一个业务功能(BF)。但是,当我想到业务功能时,我是指归档和未归档(1个BF)、归档和单独未归档(2个BF)还是压缩、去皮、解压缩、解压(4个BF) 有什么理由选择其中一个选项而不是其他选项吗 微服务的粒度始终是一个问题,没有一个好的答案。甚至有时候,最终使用monolith也是合理的。这真的取决于你想要实现什么 对于您的问题,微服务通常旨在对域的单个部分进行分组(例如计费、发货…)。在您的示例中,我想说
有什么理由选择其中一个选项而不是其他选项吗 微服务的粒度始终是一个问题,没有一个好的答案。甚至有时候,最终使用monolith也是合理的。这真的取决于你想要实现什么 对于您的问题,微服务通常旨在对域的单个部分进行分组(例如计费、发货…)。在您的示例中,我想说微服务可以负责压缩,因此归档和非归档都可以在这个单一的微服务中进行是有意义的
在我看来,将微服务看作一个单一的功能(例如,解构)是过于细粒度的。它带来的“弊”多于“利”——通常是更多的网络流量。想象一下这样的情况:您的微服务通过HTTP相互通信(目前非常常见的情况),并且您希望创建tar.gz存档。一个微服务将执行tar,另一个执行gzip,并且将有不必要的网络流量,这将花费您的时间/带宽…我认为zip/unzip/etc不应被视为业务功能。这些是实现特定业务功能所需的独立技术功能
对我来说,一个业务功能是“归档这些数据”,这可能包括压缩数据、将其粘贴到某种归档存储系统中,以及为将来的检索编制索引应该考虑的是独立地缩放函数的能力。例如,出于某种原因,对归档的需求很大,但对非归档的需求要少得多。我们希望为归档工作添加更多的功能,但不是无法忍受的功能。如果归档服务是独立于非归档构建的,我们可以通过增加权限或启动更多归档服务实例来实现这一点