粗粒度与细粒度

时间:2010-09-22 06:33:03

标签: terminology granularity

粗粒度和细粒度之间有什么区别?

我在Google上搜索过这些字词,但我找不到他们的意思。

11 个答案:

答案 0 :(得分:106)

来自Wikipedia (granularity)

  

粒度是指a的程度   系统被分解成小的   零件,系统本身或其   描述或观察。它是   一个更大的实体的程度   细分。例如,一个院子坏了   英寸比粒度更细   一个院子摔成了脚。

     

粗粒度系统包括   更少,更大的组件比   细粒度系统;粗粒度的   一个系统的描述大   子组件虽然是细粒度的   描述涉及较小的组件   其中较大的组成。

答案 1 :(得分:27)

简单来说

  • 粗粒度 - 比细粒度的大型子组件更大的组件。简单地将一个或多个细粒度服务组合成一个更粗粒度的操作。
  • 细粒度 - 组成较大组件的较小组件,较低级别的服务

最好有更细粒度的服务操作,这些操作由细粒度操作组成

enter image description here

答案 2 :(得分:19)

粗粒度:一些对象包含大量相关数据,这就是为什么服务在功能上具有更广泛的范围。示例:单个"帐户"对象包含客户名称,地址,帐户余额,开放日期,最后更改日期等。 因此:设计复杂性增加,各种操作的单元数量减少

细粒度:更多对象,每个对象都保存较少的数据,这就是为什么服务的功能范围更窄。示例:Account对象保持余额,Customer对象保存名称和地址,AccountOpenings对象保存开放日期等。 因此:设计复杂性降低,各种服务操作的单元数量增加。 这些是在这些对象之间定义的关系。

答案 3 :(得分:5)

另一种理解方法是考虑流程和线程之间的通信。进程通过粗粒度通信机制(如套接字,信号处理程序,共享内存,信号量和文件)进行通信。另一方面,线程可以访问属于进程的共享内存空间,这允许它们应用更精细的粒度通信机制。

来源:实践中的Java并发

答案 4 :(得分:2)

在服务方面:

http://en.wikipedia.org/wiki/Service_Granularity_Principle

  

根据定义,粗粒度服务操作具有更广泛的范围   而不是细粒度的服务,虽然条款是相对的。该   前者通常需要增加设计复杂性但可以减少   完成任务所需的通话次数。

细粒度的服务接口与chatty接口大致相同。

答案 5 :(得分:1)

粗粒度粒度并不总是意味着更大的组件,如果你粗略地表达粗略的含义,则意味着苛刻或不合适。例如在软件项目管理中,如果将一个小系统分解为几个大小相等但复杂性和功能不同的组件,这可能会导致粗粒度。相反,对于细粒度分解,您可以根据每个组件提供的功能的内聚性来划分组件。

答案 6 :(得分:1)

粗粒细粒。这两种模式都定义了核心的共享方式 多个Spark任务之间。顾名思义,细粒度模式是 负责在更细粒度级别共享核心。 Spark不推荐使用细粒度模式,很快就会将其删除。

答案 7 :(得分:1)

在像文本文件这样的数据集方面,粗粒度意味着我们可以转换整个数据集,但不能转换数据集上的单个元素。细粒度意味着我们可以转换数据集上的单个元素。

答案 8 :(得分:0)

粗粒度和细粒度都考虑优化许多服务。但是区别在于水平。我想举例说明,您会很容易理解。

细粒度:例如,我有100个服务,例如findbyId,findbyCategry,findbyName ...等。为什么我们不能提供find(id,category,name ....等等),而不是那么多服务。这样我们就可以减少服务。这只是一个例子,但目标是如何优化服务数量。

粗粒度:例如,我有100个客户,每个客户都有自己的100套服务。因此,我必须提供100 * 100的总服务。这非常困难。代替我要做的是,我将适用于大多数客户端的所有通用服务标识为一个服务集,并单独保留。例如,在100个服务中,有50个是常见的。所以我只需要管理100 * 50 + 50。

答案 9 :(得分:0)

与细粒度服务相比,粗粒度服务提供了更广泛的功能。根据业务领域的不同,可以创建单个服务来服务单个业务单元,或者如果子单元在很大程度上彼此独立,则可以创建专门的多个细粒度服务。 粗粒度的服务可能会变得更加困难,由于其大小而可能难以适应更改,而细粒度的服务可能会带来管理多种服务的额外复杂性。

答案 10 :(得分:0)

根据POS(词性)标签的条款,