javascript
spring 配置只读事务_只读副本和Spring Data第1部分:配置数据库
spring 配置只讀事務
這是有關我們為利用只讀副本來提高應用程序性能而尋求的一系列博客文章。
對于這個項目,我們的目標是建立我們的spring數據應用程序,并使用read倉庫進行寫操作,并基于read副本進行讀操作。
為了模擬這種環境,我們將通過Docker使用PostgreSQL實例。
動機很簡單。 您的Spring應用程序變得越來越流行,并且您希望它處理更多的請求。 那里的大多數應用程序對讀操作而不是寫操作的需求更高。 因此,我認為您的應用程序屬于同一類別。
盡管SQL數據庫本身不能水平擴展,但是您可以通過使用只讀副本來使用它們。
我們的目標不是在PostgreSQL中進行實際的Read復制
因此,無需配置任何復制
我們將只從兩個數據庫中復制一些數據
這是我們將用來填充數據庫的腳本。
#!/bin/bash set -e psql -v ON_ERROR_STOP= 1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL create schema spring_data_jpa_example; create table spring_data_jpa_example.employee( id SERIAL PRIMARY KEY, firstname TEXT NOT NULL, lastname TEXT NOT NULL, email TEXT not null , age INT NOT NULL, salary real, unique(email) ); insert into spring_data_jpa_example.employee (firstname,lastname,email,age,salary) values ( 'John' , 'Doe 1' , 'john1@doe.com' , 18 , 1234.23 ); insert into spring_data_jpa_example.employee (firstname,lastname,email,age,salary) values ( 'John' , 'Doe 2' , 'john2@doe.com' , 19 , 2234.23 ); insert into spring_data_jpa_example.employee (firstname,lastname,email,age,salary) values ( 'John' , 'Doe 3' , 'john3@doe.com' , 20 , 3234.23 ); insert into spring_data_jpa_example.employee (firstname,lastname,email,age,salary) values ( 'John' , 'Doe 4' , 'john4@doe.com' , 21 , 4234.23 ); insert into spring_data_jpa_example.employee (firstname,lastname,email,age,salary) values ( 'John' , 'Doe 5' , 'john5@doe.com' , 22 , 5234.23 ); EOSQL由于我們將使用Docker和Docker Compose,因此將使用上面的腳本來初始化數據庫。 現在開始創建我們的Docker Compose堆棧。
version: '3.5' services: write-db: image: postgres restart: always environment: POSTGRES_USER: db-user POSTGRES_PASSWORD: your-password POSTGRES_DB: postgres networks: - postgresql-network ports: - "127.0.0.2:5432:5432" volumes: - $PWD/init-db-script.sh:/docker-entrypoint-initdb.d/init-db-script.sh read-db- 1 : image: postgres restart: always environment: POSTGRES_USER: db-user POSTGRES_PASSWORD: your-password POSTGRES_DB: postgres networks: - postgresql-network ports: - "127.0.0.3:5432:5432" volumes: - $PWD/init-db-script.sh:/docker-entrypoint-initdb.d/init-db-script.sh networks: postgresql-network: name: postgresql-network如您所見,我們的配置非常簡單。 如果您足夠小心的話,您會看到我將數字分配給了讀數據庫。 這是因為將來我們將向其添加更多副本。
我還做的是將機器綁定到不同的本地ip。
如果您在綁定地址時遇到問題,例如127.0.0。*:5432
你應該試試
如果不成功,則只需更改端口即可。 可能不那么方便,但是還可以。
因此,讓我們啟動并運行我們的Docker Compose堆棧。
docker-compose -f . /postgresql-stack .yaml up我們必須能夠在兩個postgresql實例中查詢數據。
docker exec -it deploy_read-db-1_1 /bin/bash root@07c502968cb3:/ # psql -v --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" db-user= # select*from spring_data_jpa_example.employee; id | firstname | lastname | email | age | salary | firstname | lastname | email | age | salary ----+-----------+----------+---------------+-----+--------- 1 | John | Doe 1 | john1@doe.com | 18 | 1234.23 2 | John | Doe 2 | john2@doe.com | 19 | 2234.23 3 | John | Doe 3 | john3@doe.com | 20 | 3234.23 4 | John | Doe 4 | john4@doe.com | 21 | 4234.23 5 | John | Doe 5 | john5@doe.com | 22 | 5234.23 (5 rows)我們已經為下一步做好了準備。 我們已經啟動了一些數據庫,并且正在運行,我們將在它們之上啟動一個spring應用程序。 下一個博客著重于實現在我們的主數據庫上運行的應用程序。
翻譯自: https://www.javacodegeeks.com/2019/10/read-replicas-spring-data-configuring-databases.html
spring 配置只讀事務
總結
以上是生活随笔為你收集整理的spring 配置只读事务_只读副本和Spring Data第1部分:配置数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 总包合同备案流程(总包备案时间)
- 下一篇: gradle idea java ssm