¡"El Padrino del Software" ha comenzado a organizar modos nuevamente!

¿Quién es Martin Fowler?

He escrito en artículos anteriores. Es autor de una serie de libros conocidos como "Refactorización", "Modo de análisis", "Modo de arquitectura de aplicaciones empresariales", "Lenguaje específico de dominio", etc. Rara vez habla de sistemas operativos, bases de datos, Rara vez lo oía hablar de las cosas de bajo nivel de la red sobre alta concurrencia y un gran número de usuarios. No desarrolló ningún software conocido, pero fue considerado como el "padrino" del desarrollo de software.

Si el software está en capas, en realidad vive en el nivel superior:

Esta capa está repleta de muchos programadores, porque cuanto más baja es la capa, más difícil es caminar. Debe ser capaz de soportar la soledad, resistir la tentación y tener una investigación extremadamente profunda en un campo determinado.

Pero Martin Fowler puede llamar al viento y la lluvia en la capa de aplicación porque tiene una habilidad especial: es bueno para resumir algunas prácticas de desarrollo de software en "conceptos".

Obviamente, esto requiere capacidades de abstracción extremadamente fuertes.

El trabajo más conocido de Martin Fowler es probablemente "Refactoring", quien resumió, resumió y nombró varios métodos de modificación de código en la programación de software, que afectaron a todos los desarrolladores del mundo.

También tiene un libro llamado "Patrones de arquitectura de aplicaciones empresariales", Martin Fowler resumió algunas de las mejores prácticas en el desarrollo de aplicaciones empresariales en diferentes categorías.

Por ejemplo, "secuencia de comandos de transacción", "módulo de tabla", "modelo de dominio", "Capa de servicio", etc. en el modelo lógico de dominio.

Hable sobre la "herencia de tabla única" de ORM, la "herencia de tabla de clase", el "registro de actividad", etc.

¡Martin Fowler es definitivamente un modelo a seguir para los programadores que desarrollan en la capa de aplicación!

Anteayer, mientras navegaba por el sitio web personal de Martin Fowler (https://martinfowler.com/), encontré tal tesoro: "Patrones de sistemas distribuidos". 

No pude evitar la alegría: parece que Martin Fowler no está inactivo y comenzó a organizar el modo de nuevo, esta vez es más macroscópico y directamente en el sistema distribuido.

Pero en una inspección más cercana, me decepcionó un poco ¡Martin Fowler no lo hizo él mismo! Escrito por un consultor de ThoughtWorks llamado Unmesh Joshi, Martin Fowler brindó orientación y ayuda sobre el patrón.

Después de mirarlo en los últimos dos días, creo que la calidad es bastante alta. Por ejemplo, primero hablé sobre varios problemas comunes de los sistemas distribuidos:

Fallo del proceso

Retraso de la red

Pausa del proceso

Reloj asincrónico

Luego conduce a cómo el modelo de sistema distribuido resuelve estos problemas.

Por ejemplo, el modo de registro de escritura anticipada muy clásico se puede utilizar para resolver el problema de la persistencia de datos cuando el proceso falla:

Primero coloque los datos como comando en el archivo de registro persistente, de modo que incluso si el proceso de KVStore falla, los datos aún se pueden recuperar del registro después de reiniciar.

La gente sabe muy bien que el lenguaje de comunicación del programador es el código, así que de inmediato le di un fragmento de código simple para ayudar a comprender los detalles, lo cual es muy considerado.

class KVStore…
  public KVStore(Config config) {
      this.config = config;
      this.wal = WriteAheadLog.openWAL(config);
      this.applyLog();
  }


  public void applyLog() {
      List<WALEntry> walEntries = wal.readAll();
      applyEntries(walEntries);
  }


  private void applyEntries(List<WALEntry> walEntries) {
      for (WALEntry walEntry : walEntries) {
          Command command = deserialize(walEntry);
          if (command instanceof SetValueCommand) {
              SetValueCommand setValueCommand = (SetValueCommand)command;
              kv.put(setValueCommand.key, setValueCommand.value);
          }
      }
  }


  public void initialiseFromSnapshot(SnapShot snapShot) {
      kv.putAll(snapShot.deserializeState());
  }

Los patrones del sistema distribuido que se han resuelto incluyen los siguientes:

¿Por qué recomendar esta información a todo el mundo? Es porque hay muchos artículos teóricos distribuidos en Internet, que están secos y quieren renunciar después de leer una página.

También hay muchos artículos de análisis de código fuente en Internet, que se centran en publicar código y enredarlos en detalles, lo que confunde a la gente.

El modelo de sistema distribuido de Unmesh Joshi es un buen equilibrio: tanto la teoría como los detalles del código.

Si eres un novato en la industria, mirar estas cosas puede ser un poco difícil, porque necesitas tener la base de un sistema distribuido, es posible que desees recopilarlo primero y esperar a verlo más tarde.

Si eres un veterano experimentado, te recomiendo encarecidamente que eches un vistazo y observes cómo estas grandes vacas extraen patrones comunes de varias escenas complejas. Definitivamente es beneficioso. Puedes sentirte así. : ¿Por qué no esperaba este tipo de trabajo?

Por supuesto, este es material en inglés, habrá ciertos obstáculos, pero a medida que lo lea, no se usará vocabulario avanzado, permítame enumerar algunas palabras para sus sentimientos:

Los procesos pueden fallar en cualquier momento. Ya sea debido a fallas de hardware o fallas de software. Hay numerosas formas en las que un proceso puede fallar.

Los administradores del sistema pueden retirarlo para el mantenimiento de rutina.

Se puede eliminar haciendo IO de archivos porque el disco está lleno y la excepción no se maneja correctamente.

No es difícil, ¿verdad? Pruébelo. Leer materiales en inglés también es una habilidad importante.

El enlace está aquí: https://martinfowler.com/articles/patterns-of-distributed-systems/

Haga clic para leer el texto original.

Más cómics técnicos emocionantes, todos los programadores se ponen de pie

 

 

 

Supongo que te gusta

Origin blog.csdn.net/coderising/article/details/109324208
Recomendado
Clasificación