users example api design terminology granularity

api - example - De grano grueso frente a grano fino



github public api (8)

De Wikipedia (granularidad) :

La granularidad es la medida en que un sistema se divide en partes pequeñas, ya sea el propio sistema o su descripción u observación. Es la medida en que una entidad más grande se subdivide. Por ejemplo, un patio roto en pulgadas tiene una granularidad más fina que un patio roto en pies.

Los sistemas de grano grueso consisten en menos componentes más grandes que los sistemas de grano fino; una descripción de grano grueso de un sistema se refiere a grandes subcomponentes, mientras que una descripción de grano fino se refiere a componentes más pequeños de los cuales los más grandes están compuestos.

¿Cuál es la diferencia entre grano grueso y grano fino?

He buscado estos términos en Google, pero no pude encontrar lo que significan.


En el contexto de los servicios:

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

Por definición, una operación de servicio de grano grueso tiene un alcance más amplio que un servicio de grano fino, aunque los términos son relativos. El primero normalmente requiere una mayor complejidad de diseño, pero puede reducir el número de llamadas requeridas para completar una tarea.

Una interfaz de servicio de grano fino es casi la misma interfaz de conversación.


En lenguaje sencillo

  • Granos gruesos : componentes más grandes que los subcomponentes de grano fino y grandes. Simplemente envuelve uno o más servicios de grano fino en una operación de grano más grueso.
  • De grano fino : componentes más pequeños, de los cuales los más grandes están compuestos, servicio de menor nivel

Es mejor tener más operaciones de servicio de grano grueso, que están compuestas por operaciones de grano fino


En términos de conjunto de datos como un archivo de texto, el significado de grano grueso podemos transformar todo el conjunto de datos, pero no un elemento individual en el conjunto de datos. Si bien de grano fino significa que podemos transformar un elemento individual en el conjunto de datos.


La granularidad de grano grueso no siempre significa componentes más grandes, si se toma literalmente el significado de la palabra grueso, significa dura o no apropiada. Por ejemplo, en la gestión de proyectos de software, si se divide un pequeño sistema en pocos componentes, que son iguales en tamaño, pero varía en complejidad y características, esto podría conducir a una granularidad de grano grueso. A la inversa, para un desglose de grano fino, dividiría los componentes en función de su cohesión de las funcionalidades que proporciona cada componente.


Una forma más de entender sería pensar en términos de comunicación entre procesos e hilos. Los procesos se comunican con la ayuda de mecanismos de comunicación de grano grueso como sockets, manejadores de señal, memoria compartida, semáforos y archivos. Los subprocesos, por otro lado, tienen acceso al espacio de memoria compartida que pertenece a un proceso, lo que les permite aplicar mecanismos de comunicación de grano más fino.

Fuente: concurrencia de Java en la práctica


De grano grueso: algunos proyectos contienen una gran cantidad de datos relacionados por lo que los servicios tienen un alcance más amplio en la funcionalidad. Ejemplo: un único objeto "Cuenta" contiene el nombre del cliente, la dirección, el saldo de la cuenta, la fecha de apertura, la última fecha de cambio, etc. Por lo tanto: Mayor complejidad de diseño, menor número de celdas en varias operaciones

De grano fino: más objetos, cada uno con menos datos, por eso los servicios tienen un alcance más estrecho en cuanto a funcionalidad. Ejemplo: un objeto de cuenta tiene saldo, un objeto de cliente contiene nombre y dirección, un objeto de AccountOpenings tiene fecha de apertura, etc. Por lo tanto: menor complejidad de diseño, mayor número de celdas para varias operaciones de servicio. Estas son relaciones definidas entre estos objetos.


grano grueso y grano fino. Ambos modos definen cómo se comparten los núcleos entre múltiples tareas de Spark. Como su nombre lo sugiere, el modo de grano fino es responsable de compartir los núcleos en un nivel más granular. El modo de grano fino ha sido desaprobado por Spark y pronto será eliminado.