"The Godfather of Software" a recommencé à organiser les modes!

Qui est Martin Fowler?

J'ai écrit dans des articles précédents. Il est l'auteur d'une série de livres bien connus tels que "Refactoring", "Analysis Mode", "Enterprise Application Architecture Mode", "Domain Specific Language", etc. Il parle rarement de systèmes d'exploitation, de bases de données, Il l'entendait rarement parler des choses de bas niveau du réseau concernant la haute concurrence et un grand nombre d'utilisateurs. Il n'a pas développé de logiciel bien connu, mais il était considéré comme le "parrain" du développement logiciel.

Si le logiciel est en couches, il vit réellement au plus haut niveau:

Cette couche est remplie de nombreux programmeurs, car plus la couche est basse, plus il est difficile de marcher. Vous devez être capable de résister à la solitude, de résister à la tentation et d'avoir des recherches extrêmement approfondies dans un certain domaine.

Mais Martin Fowler peut appeler le vent et la pluie dans la couche application parce qu'il a une capacité particulière: il résume bien certaines pratiques de développement logiciel en «concepts».

Évidemment, cela nécessite une forte capacité d'abstraction.

Le travail le plus connu de Martin Fowler est probablement "Refactoring". Il a résumé, résumé et nommé diverses méthodes de modification de code dans la programmation logicielle, qui ont affecté tous les développeurs dans le monde.

Il a également un livre intitulé "Enterprise Application Architecture Patterns", Martin Fowler a résumé certaines des meilleures pratiques en matière de développement d'applications d'entreprise dans différentes catégories.

Par exemple, «script de transaction», «module de table», «modèle de domaine», «couche de service», etc. dans le modèle logique de domaine.

Parlez de «l'héritage de table unique» d'ORM, «l'héritage de table de classe», «enregistrement d'activité» et ainsi de suite.

Martin Fowler est définitivement un modèle pour les programmeurs qui développent au niveau de l'application!

En parcourant le site Web personnel de Martin Fowler (https://martinfowler.com/) avant-hier, j'ai trouvé un tel trésor: "Patterns of Distributed Systems". 

Je n'ai pas pu m'empêcher d'être ravi: il semble que Martin Fowler n'est pas inactif, et a recommencé à organiser le mode, cette fois c'est plus macroscopique et directement dans le système distribué!

Mais à y regarder de plus près, j'ai été un peu déçu: Martin Fowler ne l'a pas fait lui-même! Écrit par un consultant ThoughtWorks nommé Unmesh Joshi, Martin Fowler a donné des conseils et de l'aide sur le modèle.

Après l'avoir examiné au cours des deux derniers jours, je pense que la qualité est assez élevée. Par exemple, j'ai d'abord parlé de plusieurs problèmes courants des systèmes distribués:

Crash du processus

Retard du réseau

Pause de processus

Horloge asynchrone

Ensuite, cela mène à la façon dont le modèle de système distribué résout ces problèmes.

Par exemple, le mode très classique Write-Ahead Log peut être utilisé pour résoudre le problème de la persistance des données lorsque le processus plante:

Commencez par placer les données en tant que commande dans le fichier journal persistant, de sorte que même si le processus KVStore tombe en panne, les données peuvent toujours être récupérées à partir du journal après le redémarrage.

Les gens savent très bien que le langage de communication du programmeur est le code, alors j'ai immédiatement donné un simple extrait de code pour aider à comprendre les détails, ce qui est très attentionné.

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());
  }

Les modèles de système distribué qui ont été triés sont les suivants:

Pourquoi recommander ce matériel à tout le monde? C'est parce qu'il existe de nombreux articles de théorie distribués sur Internet, qui sont secs et veulent abandonner après avoir lu une page.

Il existe également de nombreux articles d'analyse de code source sur Internet, axés sur la publication de code et empêtrés dans les détails, ce qui rend les gens confus.

Le modèle de système distribué d'Unmesh Joshi est un bon équilibre: la théorie et les détails du code.

Si vous êtes novice dans l'industrie, examiner ces choses peut être un peu difficile, car vous devez avoir la base d'un système distribué, vous voudrez peut-être le collecter d'abord et attendre de le voir plus tard.

Si vous êtes un vétéran expérimenté, je vous recommande fortement de jeter un coup d'œil et d'observer comment ces grandes vaches extraient des motifs communs à partir de diverses scènes complexes. C'est certainement bénéfique. Vous pouvez ressentir cela. : Pourquoi ne m'attendais-je pas à ce genre de travail?

Bien sûr, il s'agit de matériel anglais, il y aura certains obstacles, mais au fur et à mesure que vous le lirez, aucun vocabulaire avancé n'est utilisé. Permettez-moi d'énumérer quelques mots pour exprimer vos sentiments:

Les processus peuvent planter à tout moment. Soit en raison de défauts matériels ou de défauts logiciels. Un processus peut planter de nombreuses manières.

Il peut être retiré pour une maintenance de routine par les administrateurs système.

Il peut être tué en effectuant des E / S de fichiers car le disque est plein et l'exception n'est pas correctement gérée.

Ce n'est pas difficile, non? Essayez-le. La lecture de matériel en anglais est également une compétence importante.

Le lien est ici: https://martinfowler.com/articles/patterns-of-distributed-systems/

Cliquez pour lire le texte original.

Des bandes dessinées techniques plus passionnantes, tout dans les programmeurs

 

 

 

Je suppose que tu aimes

Origine blog.csdn.net/coderising/article/details/109324208
conseillé
Classement