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 Article Tags

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

An article about memory control in Node

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

Detailed graphic explanation of the memory and GC of the Node V8 engine

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.js 19 is officially released, let's talk about its 6 major features!

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

Let's talk in depth about the File module in Node

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

What should I do if node cannot use npm command?

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

Let's talk about how to choose the best Node.js Docker image?

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

Let's talk about the GC (garbage collection) mechanism in Node.js

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

Let's talk about the event loop in Node

See all articles