粗粒度与细粒度


127

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

我已经在Google上搜索了这些术语,但是找不到它们的意思。


我认为这个问题不够具体。这些术语不仅用于描述系统组件粒度。它们还用于描述访问控制粒度(可能还有更多用法...)。
fose

Answers:


136

来自维基百科(粒度)

粒度是将系统分解为小部分的程度,无论是系统本身还是其描述或观察。这是较大实体细分的程度。例如,一英寸的院子比一英尺的院子更细。

与粗粒度系统相比,粗粒度系统由更少,更大的组件组成;系统的粗粒度描述涉及较大的子组件,而细粒度的描述涉及较小的组件,其中组成较大的子组件。


37

简单来说

  • 粗粒度 -比细粒度的大子组件大的组件。只需将一个或多个细粒度的服务包装到一个更粗粒度的操作中。
  • 细粒度 -组成较大组件的较小组件,较低级别的服务

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

在此处输入图片说明


24

粗粒度:一些对象拥有大量相关数据,这就是服务在功能方面具有更大范围的原因。示例:单个“帐户”对象保存客户名称,地址,帐户余额,开立日期,最后更改日期等。 因此:设计复杂性增加,用于各种操作的单元数减少

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


最好有更多的粗粒度服务操作,这些操作由细粒度操作组成。
Humaun Rashid Nayan


6

另一种理解的方式是根据进程与线程之间的通信进行思考。进程借助粗略的通信机制(例如套接字,信号处理程序,共享内存,信号量和文件)进行通信。另一方面,线程可以访问属于进程的共享内存空间,这使它们可以应用更精细的粒度通信机制。

资料来源:实践中的Java并发


3

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



2

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

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

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


1

粗粒度并不总是意味着更大的组件,如果按字面意思来表示“粗糙”,则表示粗糙或不合适。例如,在软件项目管理中,如果将一个小型系统分解为几个组件,这些组件的大小相等,但是复杂性和功能却有所不同,则可能会导致粒度变粗。相反,对于细粒度的细分,您可以根据每个组件提供的功能的内聚性来划分组件。


1

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


1

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


0

在POS(词性)标签方面,

  • 细粒度 -使用具有36个不同标签的Penn Treebank标签集
  • 粗粒度 -使用具有12个不同标签的通用标签集
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.