2010-09-22 125 views
78

粗粒和细粒有什么区别?粗粒和细粒

我已经在Google上搜索这些条款,但我找不到它们的含义。

+0

我觉得这个问题不够具体。这些术语不仅用来描述系统组件的_粒度。它们也被用来描述访问控制的_粒度_(可能还有更多的用法......)。 – fosb 2017-09-13 19:58:24

回答

87

Wikipedia (granularity)

粒度是其中 系统被分解成小 份的范围内,无论是系统自身或其 描述或观察。细分的是大型实体 的程度。例如,将英寸划分为 的码段具有比 更细的粒度。

粗粒系统由 组成,比 细粒系统组成要少;粗粒度 系统的描述认为大的 子组件,而细粒度的 描述关于其中较大的组成的较小组件 。

3

在服务上下文:

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

通过定义一个粗粒度服务操作具有更广泛的范围 比细粒度服务,尽管术语是相对的。前者通常需要增加设计复杂度,但可以减少完成任务所需的呼叫次数。

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

4

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

来源:Java并发在实践中

19

简单来说

  • 粗粒 - 更大的组件比细粒度,大子。简单地将一个或多个细粒度服务一起包装到更粗粒度的操作中。
  • 细粒度 - 更小的组件,其中规模较大的有由,LowerLevel的服务

最好是能有更多的粗粒度服务的操作,这是由细粒度操作组成

enter image description here

1

粗粒度粒度并不总是意味着更大的组件,如果按字面意义粗略地表达,则意味着苛刻或不恰当。例如在软件项目管理中,如果将一个小型系统分解为几个大小相同,但复杂性和特征各不相同的组件,则可能导致粗粒度粒度。相反,对于细粒度的细分,您可以根据组件提供的功能的凝聚力来划分组件。

15

粗粒度:有些项目包含很多相关数据,这就是为什么服务在功能上有更广泛的范围。例如:一个单一的“账户”对象保存客户的姓名,地址,账户余额,开盘日期,最后更改日期等 这样:增加了设计的复杂性,更小的数量细胞对各种操作

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

+0

最好有更多的粗粒度服务操作,它们是由细粒度操作组成的。 – 2016-05-18 04:57:21

1

粗粒和细粒。这两种模式都定义了如何在多个Spark任务之间共享内核 。顾名思义,细粒度模式是 ,负责更细粒度地共享内核。 细粒度模式已被Spark弃用,并且很快会被删除。

1

就数据集而言,就像文本文件一样,粗粒度的意思是我们可以转换整个数据集,但不能转换数据集上的单个元素。细化意味着我们可以转换数据集中的单个元素。