架构训练营笔记:高可用设计

2-3高可用设计 

 高可用复杂度模型

分为计算高可用,存储高可用,高可用本质上需要冗余,这里是集群,没有单机。

计算高可用:分为任务分配与任务分解。

计算高可用对比之前的高性能,就是多了状态检测。 

任务分配:

将任务分配给多个服务器执行

改动点:任务分配器需要监控业务服务器的状态,在故障时进行切换

任务分解:

将服务器拆分为不同角色,不同服务器处理不同的业务

任务分解器需要监控业务服务器的状态,在故障时进行切换

 

存储高可用复杂度模型

包含数据复制和状态决策 

数据复制格式

复制命令

【优缺点】1)实现简单,复制数据量小2)数据可能不一致(SQL函数)

【适应场景】增量复制

复制数据

【优缺点】1)实现简单2)保证数据一致3)复制流量可能会很大

【适应场景】增量复制

复制文件(数据块)

【优缺点】1)实现复杂,复制的时候数据在变2)保证数据一致3)复制流量可能会很大

【适应场景】全量复制

数据复制方式

同步复制:

【优缺点】1)最强一致性,故障容忍度低2)写入性能低【适应场景】主备/主从架构

异步复制:

【优缺点】1)写入性能高,故障容忍度高2)容易出现数据不一致【适应场景】数据存储集群

 半同步复制

【优缺点】同步复制和异步复制的折衷方案【适应场景】数据存储集群

多数复制:

【优缺点】1.数据强一致性,最强可用性,故障容忍度高2.写入性能不高,实现复杂【适应场景】分布式一致性、分布式协同(OceanBase)

高可用存储中间件:

redis :复制格式:命令+文件(RDB)复制方式:异步+wait(指定半同步)

hadoop 复制格式:数据块(Block)复制方式:Replication Pipelining

 Mysql:复制格式:命令(statement)+数据(Row)复制方式:异步+半同步

存储高可用状态决策-独裁式

【优缺点】1)决策逻辑简单2)决策者要做到高可用,整体架构复杂,常用ZooKeeper/Raft/Keepalived3)数据一致性强度中等

【应用场景】绝大部分业务都可以应用

案例:Redis:使用sentinel集群来解决“决策者”单点问题,sentinel又是通过Raft算法进行选举的。

Hadoop:使用Zookeeper集群来解决“决策者”单点问题。

存储高可用状态决策-协商式

【优缺点】1)架构实现简单,决策逻辑简单,一般是心跳机制2)如果是链路问题,会导致双主,可以用双通道来缓解3)数据一致性弱

【应用场景】内部系统、网络设备(用串口相连)

存储高可用状态决策-民主式/选举式

【优缺点】1)决策过程复杂,决策逻辑复杂,一般用标准算法进行选举,例如Raft、ZAB、Paxos2)可用性最高,数据一致性最强3)可能出现“脑裂”问题,可以采用quorum来控制

【应用场景】对数据一致性要求很高的场景,例如余额、库存

ZooKeeper:基于ZAB算法选举

2-4 如何全面提升架构设计的质量?

低成本

低成本本质上是对架构的一种约束,与高性能、高可用等架构是冲突的。

先设计架构方案,再看如何降低成本!

降低成本方式

优化:1.引入缓存2.虚拟化3.性能调优4.采用高性能硬件5.采用开源方案

创新:1.NoSQLvsSQL2.SQLvs倒排索引3.HadoopvsMySQL4.FacebookHHVM5.云计算/K8s弹性集群

 安全性 

 分为架构安全与业务安全,架构设计主要解决架构安全问题,业务安全更多依赖具体技术实现。

 案例的DDos攻击通常是运营商阿里云这种提供了防护措施。

业务安全:

可测试性/可维护性/可观测性

可测试性:
软件系统在测试环境下能否方便的支持测试各种场景的能力

可维护性

可观测性

 可观测性本质上是应用输出信息,可维护、可测试类似,都是为了解决问题。

架构设计步骤

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/29239.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue 升级3 +vite+antdv4

目录 一、安装包相关升级 二、vite.config 三、 入口文件修改 四、App.vue 及相关升级 五、路由 六、状态管理VUEX 一、安装包相关升级 升级pakage.json相关安装包 vue2插件vue3替换插件vue2使用vue3使用vue-ls vuex-persistedstate或vuex-persistVue.ls.get() Vue.ls.…

Spring Batch之读数据库—JdbcPagingItemReader(四十一)

一、JdbcPagingItemReader Spring Batch框架提供了对JDBC分页读取支持的组件JdbcPagingItemReader。JdbcPaginItemReader实现ItemReader接口,核心作用是将数据库中记录通过分页的方式转换为Java对象。在JdbcPagingItemReader将数据库记录转换为Java对象是主要有两步…

Lua脚本本地调试

这里主要使用日志的方式进行debug 环境依赖 项目对openresty包的依赖比较高,所以环境基础都在openresty下进行 openresty的使用 openresty下载地址 下载完成后解压,具体使用方式和nginx没有什么区别,主要依赖文件是一下几个 nginx.exe …

MySQL高阶语句

目录 一、常用查询 #嵌套/多条件 2、对结果进行分组 3、限制结果条目(limit⭐⭐⭐) 4、设置别名(alias ——》as) 5、通配符 一、常用查询 (增、删、改、查) 对 MySQL 数据库的查询,除了基…

消费者行为分析VR情景模拟演练系统

VR虚拟现实技术是一种先进的技术,利用VR开展消费者行为分析课程是一种创新的教育方式,它可以提高学生的学习兴趣和效果,同时也可以为企业提供更好的人才培训和发展机会。 1.帮助学生更好地理解和应用心理学概念:VR技术可以让学生…

STM32 HAL库定时器输入捕获SlaveMode脉宽测量

STM32 HAL库定时器输入捕获SlaveMode脉宽测量 SlaveMode模式简介 ✨SlaveMode复位模式:在发生一个触发输入事件时,计数器和它的预分频器能够重新被初始化;同时,如果TIMx_CR1寄存器的URS位为低,还会产生一个更新事件UEV…

一探究竟:人工智能、机器学习、深度学习

一、人工智能 1.1 人工智能是什么? 1956年在美国Dartmounth 大学举办的一场研讨会中提出了人工智能这一概念。人工智能(Artificial Intelligence),简称AI,是计算机科学的一个分支,它企图了解智能的实质&am…

安卓APK反编译+修改+重打包+签名

目录 1.下载反编译工具包。2.将APK包,重命名为ZIP,解压。放到反编译根目录下。3.使用apktool反编译修改smail文件,进行重打包4.重新打包5.重签名 1.下载反编译工具包。 反编译工具包地址:百度网盘 提取码:dsu3 解压后…

记录一次抓取WiFi驱动日志以及sniffer日志

起因 路由器桥接一个WiFi,然后设备连接这个路由器的WiFi,发现网络不可用,而手机或者电脑连接就没问题,与供应商沟通问题,需要抓取日志,记录一下 抓取WLAN DRIVER WLAN FW3日志 进入开发者模式打开启动WL…

采集极验4滑块验证码图片数据

在网络安全领域,验证码是一种常见的用于验证用户身份或防止恶意机器人攻击的技术。而极验4滑块验证码作为一种广泛应用的验证码形式,其具有较高的安全性和防御能力。本文将以获取极验4滑块验证码图片数据为主题,介绍相关技术和方法。 一、极…

stable diffusion webui mov2mov

手把手教你用stable diffusion绘画ai插件mov2mov生成动画_哔哩哔哩_bilibili手把手教你用stable diffusion绘画ai插件mov2mov生成动画, 视频播放量 14552、弹幕量 3、点赞数 275、投硬币枚数 114、收藏人数 980、转发人数 75, 视频作者 懂你的冷兮, 作者简介 科技改变世界&…

队列-来看Java骚操作

队列基本概念 队列(Queue)是一种常见的数据结构,采用先进先出(FIFO,First-In-First -Out)的策略来管理数据。类似于现实生活中的排队,新元素从队尾进入队列, 而队列中的元素从队头开…