栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

分布式系统

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

分布式系统

分布式会话session解决方案
  • tomcat + session–》使用Redis缓存tomcat的session数据
tomcat增加配置,将session托管给redis管理(RedisSessionManager)
  • spring session + redis
如何设计一个高可用的分布式系统
  • 针对模块进行系统拆分,一拆多
  • 对于大量的读请求,使用缓存处理
  • 对于大量的写请求,使用MQ进行削峰处理
  • 数据库进行分库分表
  • 数据库读写分离
  • 使用搜索引擎
分库分表
  • 垂直拆分
将一个表的n个字短按访问频率分组,假设表里有1000w条数据,分完两个库后,A库有1000w条数据,字短访问较高,B库有1000w条数据,字短访问较低
  • 水平拆分
将1000w条数据均匀的拆分到n个表,A库有500w条数据,B库有500w条数据
单表系统向分库分表迁移方案
  • 线上服务停机,使用自己的后台程序,将现有的数据分到对应的库,表
  • 不停机,对数据进行双写,单表,分表数据同时进行新增,同时书写程序,保证旧数据逐步向分库分表进行迁移,单写分库分表
Mysql 主从复制延时解决方案
  • 增加写服务器的数量
  • 避免新增,更新完之后立马执行
  • 指定从主库查询
  • 打开mysql的并行复制
分布式事务的解决方案
  • XA(两阶段提交方案)
第一阶段:事务管理器询问各个库sql是否可以执行
第二阶段:执行
  • TCC
try:做一些预准备工作
/confirm/i:执行操作
cancel:回滚操作
  • 本地消息表
1:A系统在本地执行事务的同时,插入一条数据到消息表
2:A系统发送消息到MQ中
3:B系统接到消息之后,将一条数据放入消息表,同时执行其他的业务操作
4:B系统执行成功之后,改写AB两系统的消息表数据状态
5:A系统会定时扫描自己的消息表,将长时间失败的数据重发到B系统,让B再次处理
6:可以保证最终一致性,B系统相同消息只消费一次,哪怕失败了,A系统也会不断向B系统重发消息直至B系统消费成功
  • 可靠消息最终一致性方案
1:A系统发送prepared消息到MQ,然后执行A系统业务操作
2:A系统业务操作失败,则发送消息对prepared消息进行回滚
3:A系统操作成功,则发送消息对prepared消息进行confirm
4:B系统执行本地事务
5:MQ自动轮询所有的prepared消息,回调A系统确认此条消息的状态
6:B系统需要实现幂等性
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/584491.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号