>[success] ### 业务上的分布式
* 新增一个用户, 需要调多个服务(用户服务 -> 新增用户, 学校服务 -> 新增学生, 班级服务-> 新增学生 )
* 如果这些操作都在同一个服务, 那么用mysql事务就可以解决
* 如果这些操作不在同的服务, 就需要一个中间键去维护(维护服务的成功和失败)
>[success] ### 程序上的分布式
* mysql, redis 分布式
* 相同的数据库, 表 的实例分布式不同的机器上, 数据分片存放
* mysql cluster 提供分布式集群
* mysql router 主从, gtid 主从
---
* 早期没有mysql cluster的时候, 通过分库分表解决高并发
---
* mycat 数据库中间键, 1.x主打分库分表; 多个物理数据库, 虚拟成一个逻辑库
* 分库分表时, 用账号密码连上数据库, 每个数据库看到的是不一样的
* 分布式时, 用账号密码连上数据库, 每个数据库看到的是一样的, 只是存放的数据不一样
---
现在流行微服务, 拆得比较散了, 再加个主从就够用了
```
1、双主配置一般是数据流量大的情况下用,但是一般都是keepalived+双主,这种环境,他的方法就是,两台主机存储各自独立,互为主备,负载负责高可用,如果挂一台,另外一台就顶上去,好处就是挂一台无所谓,另一台依然可以提供服务,但是,注意:如果存储独立,一但发生脑裂,那就要停负载,检查双主数据是不是同步,如果其中一台的日志断了,那就非常麻烦,最好的情况是,只要启起来故障的那台,执行start slave;开始备机同步,就ok,最差的情况是,故障机安全完蛋了,用做正常机的库做异机恢复,把同步重配一遍,要用软件来比两个库的数据一致性无问题,开负载,业务继续(注意:阿里云不支持keepalived类似的所有带vip的软件,它有自己的负载均衡,你买一台不要钱,只在内网使用);
2、主备是用的非常多的情况,我习惯一主三备,在备机下边做一个慢10分钟同步的级联,再用中间件做读写分离,mycat maxscale,再加上mha高可用,写在主,读在备,如果主挂了,mha会把其中的一台备机提升为主,然后把其他的两台设置为备,就把故障的主库移除,慢10分钟的级联就是,如果在主库执行了一个语句错了,如(drop table),并没有备份的情况下,10分钟之内发现了,那就在级联备机把这张表拿出来,然后把binlog中的语句拿出来,去掉drop table(执行错了的语句),然后在主库恢复一下就可以了,推荐这种做法,大多的互联网公司都这样做,不过也有不同场景不同实施的方案,这个要自己看;
```
---
微服务 主从高可用 (读写分离功能需要在代码层上实现)
每个服务独占一个数据库, 再对并发量高的数据库做主从,
- 111
- 日记
- 工具11
- 20200723
- 20200724
- 20201019
- 更多阅读
- 回收站
- kafka 消费失败和重复消费问题
- ABC
- 20200127
- MySQL从删库到跑路
- PHP从放弃到入门
- help
- 我的日志
- 博客验证码
- 项目版本管理
- C++ Json序列化
- 20190425
- 图片
- 关键字
- 链接
- 分布式, 分库, 分表
- 游戏开发
- goLand 编辑器
- 区块链
- A-计划
- B-计划
- gin框架
- 锁
- 力扣-答题
- 数据库
- mysql 索引优化
- 挖矿
- 分布式锁
- 跨域问题
- kafka
- 长连接
- 面向对象 面向过程 函数式编程
- websocket
- 其它问题
- zeroMq
- 工具
- linux - systemctl
- gitbook 部署
- Ubantu 基础配置
- 备注服务
- 更换身份证(身份证到期了)
- 资源05
- 备注服务2
- 分布式
- TODO
- 资料准备
- 文章阅读
- mysql 高可用
- 日志1
- 日记2 - 区块链
- centos7 系统服务脚本
- copy_service 服务替换
- go kafka 孤人自嘲 - 偏移量 - kafka
- go vendor
- golang 显示git工具栏
- 图片资源
- 资讯01
- 资源01
- 资源02
- 资源03-数据库
- 资源04
- php历史数据
- golang 数据
- 文件1
- 文件2
- 文件3
- 文件4
- 文件5
- 文件6
- 文件7
- 文件8
- 文件9
- 文件10
- Flutter
- 管理后台系统
- 重装系统