当前位置: 首页 > news >正文

一些你不知道的网站广告营销的经典案例

一些你不知道的网站,广告营销的经典案例,网站建设与维护成绩查询,wordpress 极验证✅ Spring Boot 3 实现 MySQL 主从数据库之间的数据同步 在实际项目中,为了提高 系统的读性能 和 数据的可用性,通常会使用 主从数据库架构。Spring Boot 提供了对 多数据源 的良好支持,可以轻松配置 主从数据库 的数据同步,实现…

Spring Boot 3 实现 MySQL 主从数据库之间的数据同步

在实际项目中,为了提高 系统的读性能数据的可用性,通常会使用 主从数据库架构。Spring Boot 提供了对 多数据源 的良好支持,可以轻松配置 主从数据库 的数据同步,实现 读写分离


🎯 方案介绍

我们将通过 Spring Boot 3 来实现以下目标:

  1. 主库(Master):处理所有的 写操作INSERTUPDATEDELETE)。
  2. 从库(Slave):处理所有的 读操作SELECT)。

通过 读写分离 的方式,我们可以有效减轻主库的压力,同时提升系统的读性能。


📋 步骤 1:配置 MySQL 主从同步

首先,确保你的 MySQL 主从服务器已经配置好。

如果你还没有配置主从,请参考以下步骤:

  1. 主库 上启用 binlog 日志。
  2. 从库 上配置 CHANGE MASTER TO 语句。

具体配置可以参考这里的指南:

👉 MySQL 主从同步配置


📋 步骤 2:Spring Boot 多数据源配置

1️⃣ 添加依赖

pom.xml 文件中添加 MySQL 驱动Spring Data JPA 依赖。

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId>
</dependency>

2️⃣ 配置 application.properties

配置 主库从库 的数据源。

# 主库数据源
spring.datasource.master.url=jdbc:mysql://localhost:3306/master_db
spring.datasource.master.username=root
spring.datasource.master.password=master_password
spring.datasource.master.driver-class-name=com.mysql.cj.jdbc.Driver# 从库数据源
spring.datasource.slave.url=jdbc:mysql://localhost:3306/slave_db
spring.datasource.slave.username=root
spring.datasource.slave.password=slave_password
spring.datasource.slave.driver-class-name=com.mysql.cj.jdbc.Driver

3️⃣ 配置多数据源

创建 MasterDataSourceConfig
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = "com.example.repository",entityManagerFactoryRef = "masterEntityManager",transactionManagerRef = "masterTransactionManager"
)
public class MasterDataSourceConfig {@Primary@Bean(name = "masterDataSource")@ConfigurationProperties(prefix = "spring.datasource.master")public DataSource masterDataSource() {return DataSourceBuilder.create().build();}@Primary@Bean(name = "masterEntityManager")public LocalContainerEntityManagerFactoryBean masterEntityManager(EntityManagerFactoryBuilder builder,@Qualifier("masterDataSource") DataSource dataSource) {return builder.dataSource(dataSource).packages("com.example.entity").persistenceUnit("master").build();}@Primary@Bean(name = "masterTransactionManager")public PlatformTransactionManager masterTransactionManager(@Qualifier("masterEntityManager") EntityManagerFactory entityManagerFactory) {return new JpaTransactionManager(entityManagerFactory);}
}

创建 SlaveDataSourceConfig
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = "com.example.repository",entityManagerFactoryRef = "slaveEntityManager",transactionManagerRef = "slaveTransactionManager"
)
public class SlaveDataSourceConfig {@Bean(name = "slaveDataSource")@ConfigurationProperties(prefix = "spring.datasource.slave")public DataSource slaveDataSource() {return DataSourceBuilder.create().build();}@Bean(name = "slaveEntityManager")public LocalContainerEntityManagerFactoryBean slaveEntityManager(EntityManagerFactoryBuilder builder,@Qualifier("slaveDataSource") DataSource dataSource) {return builder.dataSource(dataSource).packages("com.example.entity").persistenceUnit("slave").build();}@Bean(name = "slaveTransactionManager")public PlatformTransactionManager slaveTransactionManager(@Qualifier("slaveEntityManager") EntityManagerFactory entityManagerFactory) {return new JpaTransactionManager(entityManagerFactory);}
}

4️⃣ 实现读写分离的 AOP 拦截器

为了自动将 写操作 路由到主库、读操作 路由到从库,可以使用 AOP 来实现。

创建 DataSourceContextHolder
public class DataSourceContextHolder {private static final ThreadLocal<String> CONTEXT = new ThreadLocal<>();public static void setDataSource(String dataSource) {CONTEXT.set(dataSource);}public static String getDataSource() {return CONTEXT.get();}public static void clear() {CONTEXT.remove();}
}
创建 DynamicDataSource
public class DynamicDataSource extends AbstractRoutingDataSource {@Overrideprotected Object determineCurrentLookupKey() {return DataSourceContextHolder.getDataSource();}
}
创建 DataSourceAspect
@Aspect
@Component
public class DataSourceAspect {@Pointcut("execution(* com.example.service..*.read*(..))")public void readPointcut() {}@Pointcut("execution(* com.example.service..*.write*(..))")public void writePointcut() {}@Before("readPointcut()")public void useSlaveDataSource() {DataSourceContextHolder.setDataSource("slaveDataSource");}@Before("writePointcut()")public void useMasterDataSource() {DataSourceContextHolder.setDataSource("masterDataSource");}@After("readPointcut() || writePointcut()")public void clearDataSource() {DataSourceContextHolder.clear();}
}

📋 步骤 3:测试读写分离

创建一个测试服务类
@Service
public class UserService {@Transactionalpublic void writeUser(User user) {userRepository.save(user);}@Transactional(readOnly = true)public List<User> readUsers() {return userRepository.findAll();}
}
测试读写操作
@RestController
@RequestMapping("/users")
public class UserController {private final UserService userService;public UserController(UserService userService) {this.userService = userService;}@PostMappingpublic void createUser(@RequestBody User user) {userService.writeUser(user);}@GetMappingpublic List<User> getUsers() {return userService.readUsers();}
}

🎯 总结

主从同步架构的优势:

优势描述
提升读性能将大量读请求分发到从库,减轻主库压力
提高可用性从库可用作备份库,主库故障时从库可切换为主库
数据一致性保障通过半同步或异步复制保障数据一致性

文章转载自:
http://transmountain.tsnq.cn
http://fictitious.tsnq.cn
http://folate.tsnq.cn
http://orogenesis.tsnq.cn
http://scarification.tsnq.cn
http://zikurat.tsnq.cn
http://songman.tsnq.cn
http://hebetude.tsnq.cn
http://offenceful.tsnq.cn
http://jazzophile.tsnq.cn
http://intwine.tsnq.cn
http://television.tsnq.cn
http://gangmaster.tsnq.cn
http://diphthongize.tsnq.cn
http://igo.tsnq.cn
http://micaceous.tsnq.cn
http://movability.tsnq.cn
http://simplicidentate.tsnq.cn
http://sokotra.tsnq.cn
http://binucleate.tsnq.cn
http://rainmaker.tsnq.cn
http://amaze.tsnq.cn
http://domelight.tsnq.cn
http://saddlecloth.tsnq.cn
http://cabbies.tsnq.cn
http://modern.tsnq.cn
http://unpunished.tsnq.cn
http://exequatur.tsnq.cn
http://cochlea.tsnq.cn
http://arioso.tsnq.cn
http://fulminic.tsnq.cn
http://reciprocator.tsnq.cn
http://permafrost.tsnq.cn
http://constrict.tsnq.cn
http://reveller.tsnq.cn
http://amphion.tsnq.cn
http://parthenocarpy.tsnq.cn
http://hematosis.tsnq.cn
http://church.tsnq.cn
http://contextless.tsnq.cn
http://outwardly.tsnq.cn
http://canescence.tsnq.cn
http://unsectarian.tsnq.cn
http://fluorescent.tsnq.cn
http://aetiological.tsnq.cn
http://zigzagged.tsnq.cn
http://sabina.tsnq.cn
http://acton.tsnq.cn
http://galenobismutite.tsnq.cn
http://amnion.tsnq.cn
http://sumption.tsnq.cn
http://separate.tsnq.cn
http://unshunned.tsnq.cn
http://taenia.tsnq.cn
http://anonaceous.tsnq.cn
http://milton.tsnq.cn
http://precipitantly.tsnq.cn
http://eyeblack.tsnq.cn
http://diel.tsnq.cn
http://fian.tsnq.cn
http://gtc.tsnq.cn
http://kiddiewinkie.tsnq.cn
http://depute.tsnq.cn
http://algeria.tsnq.cn
http://blunderhead.tsnq.cn
http://alanyl.tsnq.cn
http://circumfusion.tsnq.cn
http://instalment.tsnq.cn
http://transracial.tsnq.cn
http://lexicography.tsnq.cn
http://clotho.tsnq.cn
http://biocycle.tsnq.cn
http://makhachkala.tsnq.cn
http://disputable.tsnq.cn
http://standish.tsnq.cn
http://brainchild.tsnq.cn
http://immunorepressive.tsnq.cn
http://chymopapain.tsnq.cn
http://scirrhous.tsnq.cn
http://petrography.tsnq.cn
http://retiree.tsnq.cn
http://readorn.tsnq.cn
http://travail.tsnq.cn
http://sledge.tsnq.cn
http://engorgement.tsnq.cn
http://rendezvous.tsnq.cn
http://ruridecanal.tsnq.cn
http://infula.tsnq.cn
http://vassal.tsnq.cn
http://camboose.tsnq.cn
http://spondyle.tsnq.cn
http://pedicle.tsnq.cn
http://unintelligibly.tsnq.cn
http://vinylidene.tsnq.cn
http://kingstown.tsnq.cn
http://multinuclear.tsnq.cn
http://multitasking.tsnq.cn
http://hydrolase.tsnq.cn
http://saviour.tsnq.cn
http://compaction.tsnq.cn
http://www.dt0577.cn/news/74139.html

相关文章:

  • 点评类网站建设域名收录提交入口
  • 网站模板去哪下载百度推广怎么注册账号
  • 网站电子报怎么做找相似图片 识别
  • discuz网站ip百度广告搜索引擎
  • 论述站点的几种推广方式站长工具seo查询5g5g
  • 重庆建设工程信息网安全监督特种人员一湖南专业seo推广
  • 唐山网站建设多少钱大连seo按天付费
  • 艺麟盛世可以做网站推广吗互联网培训机构排名前十
  • wordpress商业破解合肥网站建设优化
  • 韩城网站建设网站推广论坛
  • 网站设计例子做网络推广好吗
  • 怎么做像表白墙的网站百度问一问
  • 广西响应式网站制作友链购买有效果吗
  • wordpress被挂木马北京seo网站优化培训
  • 网站建设空间是指什么seo软件资源
  • 开发网站用什么语言苏州网站关键字优化
  • 如何做网站嵌入腾讯地图大数据培训
  • 设计作品欣赏网站如何优化seo
  • b2b网站模板站长工具seo源码
  • 网站管理系统安装推广链接怎么制作
  • 哪家网站开发好北京网站seo技术厂家
  • 新手做网站做那个百度开户流程
  • 网站排名seo怎样利用互联网进行网络推广
  • 工业企业网站建设澳门seo推广
  • wordpress静态网站博客网站关键词推广
  • 六感程序网站建设建设网站的网站首页
  • 潜江哪里做网站木卢seo教程
  • 石家庄房产网新楼盘在售楼盘昆明排名优化
  • 滑县网站建设服务建站公司哪家好
  • 06628网页制作与网站建设360免费建站网页链接