Maison >interface Web >js tutoriel >Comment Node.js Sequelize implémente la séparation lecture-écriture de la base de données

Comment Node.js Sequelize implémente la séparation lecture-écriture de la base de données

高洛峰
高洛峰original
2016-12-28 11:12:091168parcourir

1. Avant-propos

Lors de la création d'une application Web hautement concurrente, en plus d'adopter une solution d'équilibrage de charge au niveau de la couche application, la base de données doit également prendre en charge la haute disponibilité et la haute concurrence. La solution d'optimisation de base de données la plus couramment utilisée consiste à synchroniser les données via une réplication maître-esclave, puis à améliorer la capacité de chargement simultané de la base de données via une séparation en lecture-écriture (MySQL-Proxy).

1. Option de réplication et séparation lecture-écriture

Sequelize prend en charge la séparation lecture/écriture. Pour obtenir une séparation lecture/écriture, vous pouvez créer une instance Sequelize pour la lecture et l'écriture. en écrivant respectivement , une façon plus pratique de l'utiliser consiste à spécifier la base de données en lecture/écriture séparément via l'option de réplication lors de la création d'une instance.

Pour utiliser la réplication en lecture/écriture dans Sequelize, vous pouvez parfois passer un objet à son option de réplication lors de l'initialisation de Sequelize. Cet objet a deux propriétés : lecture et écriture. write est un objet unique (c'est-à-dire : les écritures sont gérées par un seul serveur), tandis que read est un tableau contenant des objets (c'est-à-dire : les lectures sont gérées par plusieurs serveurs). Chaque serveur de lecture et d'écriture peut contenir les attributs suivants :

· host - l'hôte du serveur de base de données

· port - le port hôte du serveur de base de données

· nom d'utilisateur - Vérifier le nom d'utilisateur

· Mot de passe - Vérifier le mot de passe

· base de données - Base de données à connecter

2. Suite de la lecture/ Exemple de séparation en écriture

Dans un cluster de bases de données multiples utilisant la réplication maître-esclave, vous pouvez le définir dans l'attribut de lecture de l'objet de réplication. Cet attribut est un tableau dans lequel une ou plusieurs connexions serveur peuvent être. transmis. copie. L'opération de lecture équivaut à opérer sur le nœud esclave du cluster de base de données, qui gère toutes les opérations de requête SELECT (opérations de lecture). L'attribut d'écriture de l'objet de réplication est un objet qui représente la connexion au serveur. L'opération d'écriture est équivalente au nœud principal. Il gérera toutes les opérations d'insertion, de mise à jour et de suppression (opérations d'écriture).

var sequelize = new Sequelize('database', null, null, {
 dialect: 'mysql',
 port: 3306
 replication: {
  read: [
   { host: '192.168.1.33', username: 'itbilu.com', password: 'pwd' },
   { host: 'localhost', username: 'root', password: null }
  ],
  write: { host: 'localhost', username: 'root', password: null }
 },
 pool: { // 如果需要重写链接池,请在 pool 选项中修改
  maxConnections: 20,
  maxIdleTime: 30000
 },
})

Tous les paramètres globaux s'appliqueront à toutes les copies de nœuds, il n'est donc pas nécessaire de les spécifier séparément pour chaque instance. Dans l'exemple ci-dessus, le nom de la base de données et le numéro de port s'appliqueront à toutes les répliques de nœud, tout comme les options de nom d'utilisateur et de mot de passe. Si une réplique de nœud n'utilise pas de paramètres globaux, elle doit être spécifiée séparément dans les options de réplication.

Remarque : Sequelize ne configure pas les nœuds de réplication maître-esclave ni la synchronisation des données (réplication) entre les nœuds. Ces opérations sont en fait effectuées par MySQL (ou la base de données que vous utilisez). Sequelize est uniquement responsable de l'écriture ou de la lecture des données des nœuds maître et esclave.

Sequelize utilisera un pool de connexions pour gérer les réplicas de nœuds.

L'option par défaut est :

{
 maxConnections: 10,
 minConnections: 0,
 maxIdleTime:1000
}

Résumé

Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article pourra apporter des avantages à tout le monde. étudier ou travailler. Pour obtenir de l'aide, si vous avez des questions, vous pouvez laisser un message pour communiquer.

Pour plus d'articles sur la façon dont Node.js Sequelize implémente la séparation lecture-écriture dans la base de données, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn