Answers:
粗粒度:一些对象拥有大量相关数据,这就是服务在功能方面具有更大范围的原因。示例:单个“帐户”对象保存客户名称,地址,帐户余额,开立日期,最后更改日期等。 因此:设计复杂性增加,用于各种操作的单元数减少
细粒度:更多的对象,每个对象保存的数据更少,这就是服务的功能范围更窄的原因。示例:一个Account对象保持余额,一个Customer对象保持名称和地址,一个AccountOpenings对象保持开放日期,等等。 这样:降低了设计复杂性,增加了用于各种服务操作的单元数。这些是这些对象之间定义的关系。
另一种理解的方式是根据进程与线程之间的通信进行思考。进程借助粗略的通信机制(例如套接字,信号处理程序,共享内存,信号量和文件)进行通信。另一方面,线程可以访问属于进程的共享内存空间,这使它们可以应用更精细的粒度通信机制。
资料来源:实践中的Java并发
就像文本文件这样的数据集而言,粗粒度意味着我们可以转换整个数据集,但不能转换数据集中的单个元素,而细粒度意味着我们可以转换数据集上的单个元素。
在服务方面:
http://en.wikipedia.org/wiki/Service_Granularity_Principle
根据定义,尽管术语是相对的,但粗粒度的服务操作比细粒度的服务具有更广泛的范围。前者通常需要增加设计的复杂性,但可以减少完成任务所需的调用次数。
细粒度的服务界面与chatty界面大致相同。
粗粒度和细粒度都考虑优化许多服务。但是区别在于水平。我想举一个例子来解释,您会很容易理解。
细粒度:例如,我有100个服务,例如findbyId,findbyCategry,findbyName ......等。为什么我们不能提供find(id,category,name .... so on),而不是那么多服务。这样我们就可以减少服务。这只是一个示例,但目标是如何优化服务数量。
粗粒度:例如,我有100个客户,每个客户都有自己的100套服务。因此,我必须提供100 * 100的总服务。这非常困难。代替我要做的是,我将适用于大多数客户端的所有通用服务识别为一个服务集,并单独保留。例如,在100个服务中,有50个服务是常见的。所以我只需要管理100 * 50 + 50。
粗粒度并不总是意味着更大的组件,如果按字面意思来表示“粗糙”,则表示粗糙或不合适。例如,在软件项目管理中,如果将一个小型系统分解为几个组件,这些组件的大小相等,但是复杂性和功能却有所不同,则可能会导致粒度变粗。相反,对于细粒度的细分,您可以根据每个组件提供的功能的内聚性来划分组件。
粗粒和细粒。这两种模式都定义了如何在多个Spark任务之间共享内核。顾名思义,细粒度模式负责更细粒度地共享内核。细粒度模式已被Spark弃用,并将很快被删除。
与细粒度服务相比,粗粒度服务提供了更广泛的功能。根据业务领域的不同,可以创建单个服务来服务单个业务单元,或者如果子单元在很大程度上彼此独立,则可以创建专门的多个细粒度服务。粗粒度服务可能会变得更加困难,由于其大小而可能难以适应更改,而细粒度服务可能会引入管理多个服务的额外复杂性。
在POS(词性)标签方面,