Ch00 Note01
Yang Haoran 11/5/2023 architecture
#
# 主要记录一些见过的架构设计
# Redis
# 资源管理
- 主从混部,在从节点上有RDB备份,AOF备份,导致会有cache,如果cache过多,但是free不足,可能会触发操作系统的低水位回收,会对redis的性能影响很大
- 所以有drop_page_cache这个脚本保证机器有足够的内存给redis使用
- redis一般内存不会满,有阈值,超过阈值用LRU淘汰
- 热点key分析是用RDB,不会造成性能影响
- 当负载过高的时候,会抓取短时间的请求进行分析
- 客户端直接分片是最快的,因为可以直连,比proxy那种的好很多
# 集群部署
- 因为同一个集群可能产生流量激增,如果不分片打散的话,可能会导致同一台机器扛不住
# 自动化迁移
# 集群扩缩容
通过迁移的方式进行扩缩容,通过redisgate进行重新分配
redis gate实际上也是一个redis节点,但是在load RDB的时侯,函数经过改造,增加一个ReplicationToServer() 方法,来对数据进行分发
hsetCommand是redis会把RDB转换成一条一条命令来写入
- 自动扩缩容
- 数据校验:采样
- 扩缩容会全局重连(交换namespace),但是故障只会单节点重连
# 巡检,告警,监控
- 比如redis上云之后,大部分其他业务机器还在本地,那么访问有延迟
# Mysql
- 用MHA来监控有单点的问题,解决方案是用Orchestrator,是开源的mysql高可用,拓扑的可视化管理工具,检测,故障转移的组件,有UI界面,在此场景下也可以作为mysql的配置中心
- 在挂的时候千万不能自动切换,因为会有数据不一致性的问题
# 为什么微服务与高并发程序都在放弃 Zookeeper
- CP设计,太慢了