Крупнозернистый против мелкозернистого


129

В чем разница между крупнозернистым и мелкозернистым?

Я искал эти термины в Google, но не смог найти, что они означают.


Думаю, вопрос недостаточно конкретный. Эти термины используются не только для описания детализации компонентов системы . Они также используются для описания степени детализации контроля доступа (и, вероятно, есть и другие варианты использования ...).
fose

Ответы:


137

Из Википедии (детализация) :

Гранулярность - это степень, в которой система разбита на мелкие части, будь то сама система, ее описание или наблюдение. Это степень, в которой более крупная сущность подразделяется. Например, ярд, разбитый на дюймы, имеет более мелкую детализацию, чем ярд, разбитый на футы.

Крупнозернистые системы состоят из меньшего количества более крупных компонентов, чем мелкозернистые системы; грубое описание системы касается больших подкомпонентов, в то время как подробное описание относится к более мелким компонентам, из которых состоят более крупные.


39

Проще говоря

  • Крупнозернистый - более крупные компоненты, чем мелкозернистые, крупные подкомпоненты. Просто объединяет один или несколько мелких сервисов вместе в более крупномасштабную операцию.
  • Мелкозернистый - более мелкие компоненты, из которых состоят более крупные, обслуживание более низкого уровня

Лучше иметь более грубые сервисные операции, которые состоят из мелкозернистых операций.

введите описание изображения здесь


25

Крупнозернистый: несколько объектов содержат много связанных данных, поэтому сервисы имеют более широкий спектр функциональных возможностей. Пример: один объект «Учетная запись» содержит имя клиента, адрес, баланс счета, дату открытия, дату последнего изменения и т. Д. Таким образом: повышенная сложность дизайна, меньшее количество ячеек для различных операций

Детальный: больше объектов, каждый из которых содержит меньше данных, поэтому сервисы имеют более узкую функциональность. Пример: объект Account содержит баланс, объект Customer содержит имя и адрес, объект AccountOpenings содержит дату открытия и т. Д. Таким образом: меньшая сложность дизайна, большее количество ячеек для различных операций обслуживания. Это отношения, определенные между этими объектами.


Лучше иметь более грубые операции обслуживания, которые состоят из мелкозернистых операций.
Humaun Rashid Nayan


6

Еще один способ понять это - подумать о взаимодействии между процессами и потоками. Процессы взаимодействуют с помощью грубых механизмов связи, таких как сокеты, обработчики сигналов, разделяемая память, семафоры и файлы. С другой стороны, потоки имеют доступ к общему пространству памяти, которое принадлежит процессу, что позволяет им применять более тонкие механизмы связи.

Источник: параллелизм Java на практике


3

С точки зрения набора данных, такого как текстовый файл, крупнозернистый означает, что мы можем преобразовать весь набор данных, но не отдельный элемент в наборе данных, а мелкозернистый означает, что мы можем преобразовать отдельный элемент в наборе данных.


2

В разрезе услуг:

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

По определению, операция крупномасштабного сервиса имеет более широкую сферу применения, чем детализированный сервис, хотя термины являются относительными. Первый тип обычно требует повышенной сложности дизайна, но может уменьшить количество вызовов, необходимых для выполнения задачи.

Детализированный интерфейс сервиса примерно такой же, как и болтливый интерфейс.


2

И крупнозернистый, и мелкозернистый предназначены для оптимизации количества услуг. Но разница в уровне. Я люблю объяснять на примере, вы легко поймете.

Мелкозернистый : Для меня , например, 100 услуг , таких как findbyId, findbyCategry, FindByName ...... так далее. Вместо этого многие службы, почему мы не можем предоставить поиск (идентификатор, категория, имя и т. Д.). Таким образом, мы можем сократить количество услуг. Это всего лишь пример, но цель состоит в том, чтобы оптимизировать количество услуг.

Примерно : например, у меня 100 клиентов, у каждого клиента свой набор из 100 услуг. Так что я должен предоставить 100 * 100 услуг. Это очень сложно. Вместо этого я определяю все общие услуги, которые применяются к большинству клиентов, как один набор услуг и остаюсь отдельно. Например, из 100 сервисов 50 сервисов являются общими. Так что мне нужно управлять только 100 * 50 + 50.


1

Крупная зернистость не всегда означает более крупные компоненты, если понимать буквально значение слова «грубая», она означает резкий или неподходящий. например, при управлении проектами программного обеспечения, если вы разбиваете небольшую систему на несколько компонентов, которые равны по размеру, но различаются по сложности и функциям, это может привести к грубой гранулярности. И наоборот, для детальной разбивки вы должны разделить компоненты на основе их связности с функциями, которые предоставляет каждый компонент.


1

крупнозернистый и мелкозернистый. Оба этих режима определяют, как ядра распределяются между несколькими задачами Spark. Как следует из названия, мелкозернистый режим отвечает за совместное использование ядер на более детальном уровне. Детальный режим больше не поддерживается Spark и скоро будет удален.


1

Корректные сервисы предоставляют более широкие функциональные возможности по сравнению с мелкозернистыми сервисами. В зависимости от бизнес-домена может быть создана одна служба для обслуживания одной бизнес-единицы или несколько специализированных детализированных служб, если подразделения в значительной степени независимы друг от друга. Крупнозернистый сервис может стать более сложным, а может быть менее адаптируемым к изменениям из-за своего размера, в то время как мелкозернистый сервис может внести дополнительную сложность в управление несколькими сервисами.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.