Home Web Front-end JS Tutorial How Node.js Sequelize implements database read-write separation

How Node.js Sequelize implements database read-write separation

Dec 09, 2016 pm 01:07 PM
node.js

1. Introduction

When building a highly concurrent web application, in addition to adopting a load balancing solution at the application layer, the database must also support high availability and high concurrency. The most commonly used database optimization solution is to synchronize data through master-slave replication, and then improve the concurrent load capacity of the database through read-write separation (MySQL-Proxy).

1. Replication option and separation of reading and writing

Sequelize supports read/write separation. To achieve read/write separation, you can create a Sequelize instance for reading and writing respectively. The more convenient way to use it is to create an instance. Specify the read/write database separately through the replication option.

To use read/write replication in Sequelize, you can sometimes pass an object to its replication option when initializing Sequelize. This object has two properties: read and write. write is a single object (ie: writes are handled by a single server), while read is an array containing objects (ie: reads are handled by multiple servers). Each read and write server can contain the following attributes:

· host - the host of the database server

· port - the host port of the database server

· username - verification username

· password - verification password

· database - the database to be connected

2. Sequelize read/write separation example

In multiple database clusters using master-slave replication, you can set it in the read attribute of the replication object, which is an array , into which one or more copies of the server connection can be passed in. The read operation is equivalent to operating on the slave node in the database cluster, which handles all SELECT query operations (read operations). The write attribute of the replication object is an object that represents the server connection. The write operation is equivalent to the primary node. It will handle all insert, update, and delete operations (write operations).

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
 },
})
Copy after login

All global settings will apply to all node copies, so there is no need to specify them separately for each instance. In the above example, the database name and port number will apply to all node replicas, as will the username and password options. If a node replica does not use global settings, it needs to be specified separately in the replication options.

Note: Sequelize does not set up master-slave replication nodes and data synchronization (replication) between nodes. These operations are actually completed by MySQL (or the database you use). Sequelize is only responsible for writing or reading data from the master and slave nodes.

Sequelize will use a connection pool to manage node copies.

The default option is:

{
 maxConnections: 10,
 minConnections: 0,
 maxIdleTime:1000
}
Copy after login


Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

An article about memory control in Node An article about memory control in Node Apr 26, 2023 pm 05:37 PM

The Node service built based on non-blocking and event-driven has the advantage of low memory consumption and is very suitable for handling massive network requests. Under the premise of massive requests, issues related to "memory control" need to be considered. 1. V8’s garbage collection mechanism and memory limitations Js is controlled by the garbage collection machine

Detailed graphic explanation of the memory and GC of the Node V8 engine Detailed graphic explanation of the memory and GC of the Node V8 engine Mar 29, 2023 pm 06:02 PM

This article will give you an in-depth understanding of the memory and garbage collector (GC) of the NodeJS V8 engine. I hope it will be helpful to you!

Let's talk in depth about the File module in Node Let's talk in depth about the File module in Node Apr 24, 2023 pm 05:49 PM

The file module is an encapsulation of underlying file operations, such as file reading/writing/opening/closing/delete adding, etc. The biggest feature of the file module is that all methods provide two versions of **synchronous** and **asynchronous**, with Methods with the sync suffix are all synchronization methods, and those without are all heterogeneous methods.

Let's talk about how to choose the best Node.js Docker image? Let's talk about how to choose the best Node.js Docker image? Dec 13, 2022 pm 08:00 PM

Choosing a Docker image for Node may seem like a trivial matter, but the size and potential vulnerabilities of the image can have a significant impact on your CI/CD process and security. So how do we choose the best Node.js Docker image?

Node.js 19 is officially released, let's talk about its 6 major features! Node.js 19 is officially released, let's talk about its 6 major features! Nov 16, 2022 pm 08:34 PM

Node 19 has been officially released. This article will give you a detailed explanation of the 6 major features of Node.js 19. I hope it will be helpful to you!

Let's talk about the GC (garbage collection) mechanism in Node.js Let's talk about the GC (garbage collection) mechanism in Node.js Nov 29, 2022 pm 08:44 PM

How does Node.js do GC (garbage collection)? The following article will take you through it.

Let's talk about the event loop in Node Let's talk about the event loop in Node Apr 11, 2023 pm 07:08 PM

The event loop is a fundamental part of Node.js and enables asynchronous programming by ensuring that the main thread is not blocked. Understanding the event loop is crucial to building efficient applications. The following article will give you an in-depth understanding of the event loop in Node. I hope it will be helpful to you!

What should I do if node cannot use npm command? What should I do if node cannot use npm command? Feb 08, 2023 am 10:09 AM

The reason why node cannot use the npm command is because the environment variables are not configured correctly. The solution is: 1. Open "System Properties"; 2. Find "Environment Variables" -> "System Variables", and then edit the environment variables; 3. Find the location of nodejs folder; 4. Click "OK".

See all articles