没有合适的资源?快使用搜索试试~ 我知道了~
第三讲-大型互联网高可用网站业务架构设计实践.docx
需积分: 1 0 下载量 175 浏览量
2023-04-26
22:38:19
上传
评论
收藏 1.41MB DOCX 举报
温馨提示
试读
27页
在互联网项目开发中,总是不断针对新的需求去研发新的系统,而很多系统的设计都是可以触类旁通的: 海恩法则 · 事故的发生是量的积累的结果 (并发量,数据量,服务量…….) · 再好的技术、再完美的规章 , 在实际操作层面也无法取代人自身的素质和责任心 。 墨菲定律 · 任何事情都没有表面看起来那么简单 。 · 所有事情的发展都会比你预计的时间长 。 · 会出错的事总会出错。 · 如果你担心某种情况发生,那么它更有可能发生 。 警示我们,在互联网公司里,对生产环境发生的任何怪异现象和问题 都不要轻易忽视,对于其背后的原因一定要彻查。 同样,海恩法则也强调任何严重事故的背后 都是多次小问题的积累,积累到一定的量级后会导致质变,严重的问题就会浮出水面 。 那么,我们需要对线上服务产生的任何征兆,哪怕是一个小问题,也要刨根问底: 这就需要我们有技术攻关的能力,对任何现象都要秉着以下原则: 为什么发生? 发生了怎么应对? 怎么恢复? 怎么避免? 对问题要彻查,不能因为问题的现象不明显而忽略 。
资源推荐
资源详情
资源评论
大型互联网高可用业务架构设计实践-慧科
商城
1、系统设计的一些原则
在互联网项目开发中,总是不断针对新的需求去研发新的系统,而很多系统的设计都是可以
触类旁通的:
海恩法则
· 事故的发生是量的积累的结果 (并发量,数据量,服务量…….)
· 再好的技术、再完美的规章 , 在实际操作层面也无法取代人自身的素质和责任心 。
墨菲定律
· 任何事情都没有表面看起来那么简单 。
· 所有事情的发展都会比你预计的时间长 。
· 会出错的事总会出错。
· 如果你担心某种情况发生,那么它更有可能发生 。
警示我们,在互联网公司里,对生产环境发生的任何怪异现象和问题 都不要轻易忽视,对
于其背后的原因一定要彻查。
同样,海恩法则也强调任何严重事故的背后 都是多次小问题的积累,积累到一定的量级后
会导致质变,严重的问题就会浮出水面 。
那么,我们需要对线上服务产生的任何征兆,哪怕是一个小问题,也要刨根问底: 这就需要
我们有技术攻关的能力,对任何现象都要秉着以下原则: 为什么发生? 发生了怎么应对?
怎么恢复? 怎么避免? 对问题要彻查,不能因为问题的现象不明显而忽略 。
2、软件架构中的高可用设计
2.1、什么是高可用?
高可用 HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,
通过设计减少系统不能提供服务的时间。
假设系统一直能够提供服务,我们说系统的可用性是 100%。
如果系统每运行 100 个时间单位,会有 1 个时间单位无法提供服务,我们说系统的可用性是
99%。
很多公司的高可用目标是 4 个 9,也就是 99.99%,这就意味着,系统的年停机时间为 8.76
个小时。
百度的搜索首页,是业内公认高可用保障非常出色的系统,甚至人们会通过 www.baidu.com
能不能访问来判断“网络的连通性”,百度高可用的服务让人留下啦“网络通畅,百度就能
访问”,“百度打不开,应该是网络连不上”的印象,这其实是对百度 HA 最高的褒奖。
2.2、可用性度量和考核
所谓业务可用性(availability)也即系统正常运行时间的百分比,架构组最主要的 KPI (Key
Performance Indicators ,关键业绩指标)。对于我们提供的服务(web,api)来说,现在业
界更倾向用 N 个 9 来量化可用性, 最常说的就是类似 “4 个 9(也就是 99.99%)” 的可用
性。
故障时间=故障修复时间点-故障发现(报告)时间点
服务年度可用时间%=(1-故障时间/年度时间)× 100%
故障的度量与考核
对管理者而言:可用性是产品的整体考核指标。 每个工程师而言:使用故障分来考核:
服务级别可用性:
如果是一个分布式架构设计,系统由很多微服务组成,所有的服务可用性不可能都是统一的
标准。
为了提高我们服务可用性,我们需要对服务进行分类管理并明确每个服务级别的可用性要求。
2.2、如何保障系统的高可用?
我们都知道,单点是系统高可用的大敌,单点往往是系统高可用最大的风险和敌人,应
该尽量在系统设计的过程中避免单点。
方法论上,高可用保证的原则是“集群化”,或者叫“冗余”:只有一个单点,挂了服务
会受影响;如果有冗余备份,挂了还有其他 backup 能够顶上。
保证系统高可用,架构设计的核心准则是:冗余。有了冗余之后,还不够,每次出现故
障需要人工介入恢复势必会增加系统的不可服务实践。所以,又往往是通过“自动故障转移”
来实现系统的高可用。
接下来我们看下典型互联网架构中,解决高可用问题具体有哪些方案:
1、负载均衡
2、限流
3、降级
4、隔离
5、超时与重试
6、回滚
7、压测与预案
3、负载均衡
3.1、DNS&nginx 负载均衡
以上负载均衡方案是接入层的方案,实际上负载均衡的地方还有很多:
1、服务和服务 RPC --- RPC 框架 提供负载方案 (DUBBO,SpringCloud)
2、数据集群需要负载均衡(mycat,haproxy)
3.2、upstream 配置
第一步我们需要给 Nginx 配置上游服务器,即负载均衡到的真实处理业务的服务器,通过在
http 指令下配置 upstream 即可。
proxy_pass 来处理用户请求。
3.3、负载均衡算法
负载均衡用来解决用户请求到来时如何选择 upstream server 进行处理,默认采用的是 round-
robin(轮询),同时支持其他几种算法。
round-robin: 轮询,默认负载均衡算法,即以轮询的方式将请求转发到上游服务器,
通过配合 weight 配置可以实现基于权重的轮询
ip_hash :根据客户 IP 进行负载均衡,即相同的 IP 将负载均衡到同一个 upstream
server。
剩余26页未读,继续阅读
资源评论
Java码库
- 粉丝: 1478
- 资源: 3918
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- sql-lap注入靶场
- 803916326552715醒图v9.7.0解锁会员版.apk
- 使用SpringBoot2.x 简单实现Java高并发之秒杀系统
- 基于python+opencv实现的手指静脉识别源码+数据集+项目说明毕业设计.zip
- Android AIDL基础-利用AIDL实现客户端向服务端传递Listener接口
- Android AIDL基础-利用AIDL实现客户端向服务端传递基本类型
- GHKQ-12.ass
- Android图像介绍-Bitmap常用操作
- 基于matlab实现的量化因子选股模型示例,包含数据读取、因子筛选、因子分类和回测部分.rar
- 基于matlab实现的粒子群算法,也称粒子群优化算法(Particle Swarm Optimization),.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功