Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Architecture 归档微服务:如何组织业务功能_Architecture_Soa_Microservices - Fatal编程技术网

Architecture 归档微服务:如何组织业务功能

Architecture 归档微服务:如何组织业务功能,architecture,soa,microservices,Architecture,Soa,Microservices,我正在创建一个微服务,它将负责处理zip和tar文件的归档和取消归档 我知道微服务应该专注于一个业务功能(BF)。但是,当我想到业务功能时,我是指归档和未归档(1个BF)、归档和单独未归档(2个BF)还是压缩、去皮、解压缩、解压(4个BF) 有什么理由选择其中一个选项而不是其他选项吗 微服务的粒度始终是一个问题,没有一个好的答案。甚至有时候,最终使用monolith也是合理的。这真的取决于你想要实现什么 对于您的问题,微服务通常旨在对域的单个部分进行分组(例如计费、发货…)。在您的示例中,我想说

我正在创建一个微服务,它将负责处理zip和tar文件的归档和取消归档

我知道微服务应该专注于一个业务功能(BF)。但是,当我想到业务功能时,我是指归档和未归档(1个BF)、归档和单独未归档(2个BF)还是压缩、去皮、解压缩、解压(4个BF)


有什么理由选择其中一个选项而不是其他选项吗

微服务的粒度始终是一个问题,没有一个好的答案。甚至有时候,最终使用monolith也是合理的。这真的取决于你想要实现什么

对于您的问题,微服务通常旨在对域的单个部分进行分组(例如计费、发货…)。在您的示例中,我想说微服务可以负责压缩,因此归档和非归档都可以在这个单一的微服务中进行是有意义的


在我看来,将微服务看作一个单一的功能(例如,解构)是过于细粒度的。它带来的“弊”多于“利”——通常是更多的网络流量。想象一下这样的情况:您的微服务通过HTTP相互通信(目前非常常见的情况),并且您希望创建tar.gz存档。一个微服务将执行tar,另一个执行gzip,并且将有不必要的网络流量,这将花费您的时间/带宽…

我认为zip/unzip/etc不应被视为业务功能。这些是实现特定业务功能所需的独立技术功能


对我来说,一个业务功能是“归档这些数据”,这可能包括压缩数据、将其粘贴到某种归档存储系统中,以及为将来的检索编制索引