高并发设计系列-维护篇

本文涉及的产品
应用实时监控服务ARMS - 应用监控,每月50GB免费额度
简介: 高并发设计系列-维护篇

不要回避苦恼和困难,挺起身来向它挑战,进而克服它。——池田大作


1 如何做监控



  1. 延迟、请求量和错误数是三种最通用的监控指标
  2. Agent、埋点和日志是三种最常见的数据采集方式
  3. 报表展示(grafana等)


2 端到端APM监控搭



应用性能管理(Application Performance Management,简称 APM),它的含义是:对应用各个层面做全方位的监测,期望及时发现可能存在的问题,并加以解决,从而提升系统的性能和可用性。大概思路:

  1. 客户端植入agent的sdk主动采集数据(json)上报到apm服务中心
  2. apm服务通过解析json数据写入到消息队列中供下游消费
  3. 下游消费队列数据写入es中做报表展示

3 全链路压力测试



  1. 线上压测 或者镜像相同的环境和流量与线上分离
  2. 压测流量打好标记,在代码中做改造
  3. mock第三方请求
  4. 压测时要实时监控各项指标,不要影响线上正常业务


4 数以万计的配置项管理



  1. etcd
  2. apollo
  3. zooKeeper
  4. disconf


5 熔断降级



  1. 分布式环境下最担心的是服务或者组件慢,因为这样会导致调用方持有的资源无法释放,最终拖垮整体服务。
  2. 服务熔断通过一个有限状态机来实现
  3. 开关降级的实现策略主要有返回降级数据、降频和异步三种方案。


6 上千万的流量做限流



  1. 固定窗口算法和滑动窗口
  2. 漏桶算法
  3. 令牌桶算法


7 关注公众号



微信公众号:堆栈future

相关实践学习
通过云拨测对指定服务器进行Ping/DNS监测
本实验将通过云拨测对指定服务器进行Ping/DNS监测,评估网站服务质量和用户体验。
相关文章
|
4月前
|
消息中间件 Dubbo Java
多线程到底用不用在业务代码上???
在当今的软件开发中,多线程技术是一种常见的优化方式,可以显著提高程序的性能和响应能力。然而,对于业务代码是否应该使用多线程,不同的开发者和专家可能会有不同的看法和经验。在这篇文章中,我们将探讨多线程在业务代码中的应用,并分析其利弊。综上所述,是否在业务代码中使用多线程需要根据具体情况来决定。如果业务系统需要同时处理多个任务,并且每个任务都可以独立地执行,那么使用多线程可以提高系统的性能和响应能力。然而,如果业务逻辑比较简单,或者系统的设计不允许使用多线程,那么使用单线程可能更加简单和安全。
99 1
|
2月前
软件复用问题之复用性失效的原因是什么,如何解决
软件复用问题之复用性失效的原因是什么,如何解决
|
4月前
|
存储 算法 Java
【C/C++ 线程池设计思路】 深入探索线程池设计:任务历史记录的高效管理策略
【C/C++ 线程池设计思路】 深入探索线程池设计:任务历史记录的高效管理策略
142 0
|
2月前
|
设计模式 安全 Java
Java面试题:如何实现一个线程安全的单例模式,并确保其在高并发环境下的内存管理效率?如何使用CyclicBarrier来实现一个多阶段的数据处理任务,确保所有阶段的数据一致性?
Java面试题:如何实现一个线程安全的单例模式,并确保其在高并发环境下的内存管理效率?如何使用CyclicBarrier来实现一个多阶段的数据处理任务,确保所有阶段的数据一致性?
36 0
|
2月前
|
Java 测试技术 容器
多线程编程基础与并发问题解决方案
多线程编程基础与并发问题解决方案
|
3月前
|
缓存 并行计算 安全
【并发编程系列一】并发编年史:线程的双刃剑——从优势到风险的全面解析
【并发编程系列一】并发编年史:线程的双刃剑——从优势到风险的全面解析
|
4月前
|
存储 算法 编译器
C++性能调优:从代码层面提升程序效率
本文探讨了C++程序性能调优的关键点:选择合适的数据结构和算法,例如用哈希表(如`std::unordered_map`)替换低效的数组或链表;减少不必要的内存分配和释放,利用智能指针和容器如`std::vector`自动管理内存;优化循环和条件语句,例如在循环外存储数组大小;利用编译器优化如`-O2`或`-O3`;以及使用性能分析工具如`gprof`、`callgrind`和`perf`识别并解决性能瓶颈。通过这些方法,可以有效提升C++程序的运行效率。
|
11月前
|
Java
Java多线程编程的优点和缺点
优点: 加快响应用户的时间:多线程允许并发执行多个任务,可以充分利用多核处理器,从而提高程序的性能和响应速度。比如我们经常用的迅雷下载,都喜欢多开几个线程去下载,谁都不愿意用一个线程去下载,为什么呢?答案很简单,就是多个线程下载快啊。 简化程序结构、模块化、异步化:例如我们实现电商系统,下订单和给用户发送短信、邮件就可以进行拆分,将给用户发送短信、邮件这两个步骤独立为单独的模块,并交给其他线程去执行。这样既增加了异步的操作,提升了系统性能,又使程序模块化,清晰化和简单化。 更好的资源利用:多线程可以更有效地使用计算机的资源,如CPU时间、内存和文件句柄等,提高了资源利用率。 支持并发编程:多线
759 0
|
架构师
架构系列——架构师必备基础:并发、并行与多线程关系
架构系列——架构师必备基础:并发、并行与多线程关系
|
XML JSON 监控
高并发设计系列-分布式篇
高并发设计系列-分布式篇