高并发之高可用

性能指标

响应时间、并发用户数、吞吐量、QPS (每秒查询率) 

  • 吞吐量的计算公式:

业务角度看,吞吐量可以用:请求数/秒、页面数/秒、人数/天、处理业务数/小时 等单位来衡量

网络角度看,吞吐量可以用:字节/秒 来衡量

  • QPS = 日PV /(60*60*24),侧重于衡量查询操作的频率

峰值QPS = (日PV*80%)/(60*60*24*20%)

如何提升系统抗并发的能力

方向方法具体措施
垂直扩展:提升单机处理能力增强单机硬件性能增加CPU核数如32核,升级更好的网卡如万兆,升级更好的硬盘如SSD,扩充硬盘容量如2T,扩充系统内存如128G;
提升单机架构性能使用Cache来减少IO次数,使用异步来增加单服务吞吐量,使用无锁数据结构来减少响应时间;
水平扩展:线性扩充系统性能反向代理层水平扩展反向代理层可以通过“DNS轮询”的方式来进行水平扩展;
站点层的水平扩展站点层可以通过nginx来进行水平扩展;
服务层的水平扩展服务层可以通过服务连接池来进行水平扩展;
数据层的水平扩展数据库可以按照数据哈希的方式来进行水平扩展;

高并发时如何保证幂等性

幂等性是指接口可重复调用,多次调用情况下,得到的结果是一致的。

幂等性虽然复杂化了业务实现且降低了执行效率,但为了保证系统的正确性,是非常必要的。

分层方法具体措施
应用层token
分布式锁要点:要求不能并发执行,可以在流程执行之前根据某个标志获取分布式锁,其他进程执行时获取锁就会失败,即同一时间该流程只能有一个执行成功,执行完成后,释放分布式锁。
状态机单据或任务会涉及到状态机,就是业务单据的状态在不同情况下会发生变更,如果状态机已处于下一个状态,此时来了上一状态的变更,是不能够变更的,这样就保证了有限状态机的幂等。
synchronized同步执行,高并发有性能要求时勿用。
数据层唯一索引防止新增脏数据。要点:唯一索引或唯一组合索引来防止新增数据存在脏数据。
乐观锁乐观锁只是在更新数据那一刻锁表,其他时间不锁表,所以相对于悲观锁,效率更高。乐观锁的实现方式多种多样可以通过version或者其他状态条件。
悲观锁获取数据的时候加锁获取。select * from table_xxx where id='xxx' for update; 注意:id字段一定是主键或者唯一索引,不然是锁表,会死人的悲观锁使用时一般伴随事务一起使用,数据锁定时间可能会很长,根据实际情况选用;
select+insert简单的处理方法是,先查询关键数据,判断是否已经执行过,再进行业务处理。注意:高并发流程不要用这种方法。

高可用思维导图

  • 失效自动转移

事先做好备份和冗余,当事故来临时,系统能自动转移请求到可用的服务上的一种机制。

  • 限流自动降级

限流是提前设置好请求的QPS阀值,当请求量超过阀值时,则拒绝处理及后续资源请求,直接返回或按预设处理。

降级是在服务器压力剧增的情况下,把与核心业务无关的外围服务做降级处理,节省系统资源占用,保证核心业务的性能和稳定。降级策略包括超时降级、失败次数降级、故障降级。

  • 熔断自动隔离

当系统链路中某个微服务出现不可用或者响应时间太长时,系统会自动熔断该节点微服务的调用,快速返回错误信息。当检测到该节点微服务调用响应正常后,系统可自动恢复该微服务的调用。

  • 备好应急预案

  上线前做好应急预案,可以避免上线后,出现问题时的手足无措。

  • 监控预警到位

全方位的立体化监控和预警机制,可以帮助我们快速地定位问题,监控系统运行状况。

  • 结构清晰,易于维护

   层次分明且结构清晰的程序架构,也一定会助力系统稳定性,方便开发人员快速定位和修复问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java-Base64算法_创新_防止表单重复提交 JAVA企业级基础课题(HashMap那些事) 企业架构师必备技能(JAVA核心技术反射) JavaWeb之基础(手写实现Tomcat服务器) java多线程编程 纯手写实现SpringIOC实现过程 JEE企业级开发(企业级项目开发权威指南) 网络爬虫之JAVA正则表达式 手写springMVC框架 老司机带你透析springMVC内部实现方式 打造高效代码结构(java性能优化) 新版本通俗易懂_观察者模式递进时讲解 ibatis连接数据库 高并发之单(多)生产者消费者线程 高并发复用数据库链接技术详解之数据库连接池 类加载器的高级特性(自定义类加器实现加密解密) iBATIS开源主流框架(实现半自动化hibernate) 企业实用技能之详解(眼睛横纹模式验证码防止恶意登陆) 动态页面的静态化处理 图片上传技术 在springMVC中实现原始的Excel文件下载方式 企业级分布式缓存技术之(redis详解) 企业高并发基石(Tomcat服务器性能优化) spring事务处理 课程文档 高并发之基础数据MySql调优 mongodb 三级联动课程资料 应用架构之灵魂设计模式 应用架构之魂设计模式实战演练应用架构之魂设计模式实战演练 揭开springAOP神秘面纱(动态代理) Mysql性能优化之索引优化 写实现Tomcat服务器 移动后台端框架设计 公司级框架原理解析 解密公司内部框架开发(打造属于自己的专属框架) 手写Tomca之深度解析动态资源请求原理 深度解析springMVC实现原理(手写springMVC框架) Java验证码 正则黑名单爬虫系统 深入数据库连接池内部运转原理 分布式服务下的交易一致 企业必备技能之面向服务编程Web-Service详解 分布式服务下的交易一致性原理及解决 分布式服务框架(dubbo+zookpeer) WEB高级前后台分离思维-懒加载无限级树形菜单 动态页面的静态化处理 大并发展示优化,动态页面的静态化 深入理解JDK动态代理本质 企业级高并发缓存解决方案 性能优化之Oracle语句优化雾区 前后台数据验证架构源码级解析 session跨域共享 JAVANIO原理详解 高并发数据库(Mysql数据库性能优化) 软件质量管控 企业常用框架springMVC基于注解+xml配置方式实现链接 WEB服务器优化之Tomcat7性能调优 JVM概述 Java开发技术之(项目工程的日志管理) 数据库连接池原理详解 Java企业级框架之核心技术(反射) Java-Base64算法(创新_防止表单重复提交) 揭开springAOP神秘面纱之动态代理 网络爬虫之JAVA正则表达式

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值