高并发系统设计 40 问
攻克高并发系统演进中的业务难点
唐扬  美图公司技术专家
飙升榜 第1名
专栏
已完结·共 49 讲
|
4.9w 人已学
|
收藏
但是,我们平时开发的 Web 系统通常都有大量的 IO 操作,比方说查询数据库、查询缓存等等。任务在执行 IO 操作的时候 CPU 就空闲了下来,这时如果增加执行任务的线程数而不是把任务暂存在队列中,就可以在单位时间内执行更多的任务,大大提高了任务执行的吞吐量。所以你看 Tomcat 使用的线程池就不是 JDK 原生的线程池,而是做了一些改造,当线程数超过 coreThreadCount 之后会优先创建线程,直到线程数到达 maxThreadCount,这样就比较适合于 Web 系统大量 IO 操作的场景了,你在实际使用过程中也可以参考借鉴。
来自:07 | 池化技术:如何减少频繁创建数据库连接的性能损耗?
16 人划过
那么什么时候选择 Scale-up,什么时候选择 Scale-out 呢?一般来讲,在我们系统设计初期会考虑使用 Scale-up 的方式,因为这种方案足够简单,所谓能用堆砌硬件解决的问题就用硬件来解决,但是当系统并发超过了单机的极限时,我们就要使用 Scale-out 的方式。
来自:01 | 高并发系统:它的通用设计方法是什么?
11 人划过
是在服务层面一般需要监控四个指标,分别是延迟、通信量、错误和饱和度。
来自:30 | 给系统加上眼睛:服务端监控要怎么做?
6 人划过
你看,我们在更新数据时给数据加了乐观锁,这样在消费第一条消息时,version 值为 1,SQL 可以执行成功,并且同时把 version 值改为了 2;在执行第二条相同的消息时,由于 version 值不再是 1,所以这条 SQL 不能执行成功,也就保证了消息的幂等性。
来自:18 | 消息投递:如何保证消息仅仅被消费一次?
6 人划过
我建议你通过收集系统之间的调用日志,统计比如说 99% 的响应时间是怎样的,然后依据这个时间来指定超时时间。
来自:04 | 系统设计目标(二):系统怎样做到高可用?
6 人划过
比如在搜索的场景下,每个人搜索的词都会不同,没有明显的热点,那么这时缓存的作用就不明显了。
来自:12 | 缓存:数据库成为瓶颈后,动态数据的查询要如何加速?
4 人划过
迁移的过程需要做到可以回滚,这样一旦迁移的过程中出现问题,可以立刻回滚到源库不会对系统的可用性造成影响。
来自:加餐 | 数据的迁移应该如何做?
3 人划过
我们首先会分配给这个应用一对 RSA 公钥和私钥,然后 SDK 在启动的时候,先请求一个策略服务,获取 RSA 公钥。在加密时,客户端会随机生成一个对称加密的秘钥 Key,端消息体和业务消息体都会使用这个秘钥来加密。那
来自:31 | 应用性能管理:用户的使用体验应该如何监控?
3 人划过
另一种长连的方式,它的逻辑是在配置中心服务端保存每个连接关注的配置项列表。这样当配置中心感知到配置变化后,就可以通过这个连接把变更的配置推送给客户端。这种方式需要保持长连,也需要保存连接和配置的对应关系,实现上要比轮询的方式复杂一些,但是相比轮询方式来说,能够更加实时地获取配置变更的消息
来自:33 | 配置管理:成千上万的配置项要如何管理?
3 人划过
而问题一定出现在出现慢请求的最下一层上
来自:春节特别策划 | 我们如何准备抵抗流量峰值?
3 人划过
*精彩内容为该课程各文章中划线次数最多的内容
免费试读
讲师

唐扬

美图公司技术专家

唐扬,美图公司技术专家,主要负责美图秀秀社区的研发、优化和运行维护工作。从业十余年,他见证了系统从初期构建,到承接高并发大流量的全过程,并参与过三个 DAU 过千万的大型高并发系统的研发,拥有大量的系统演进经验。
编辑推荐
包含这门课的学习路径

架构师

28门课程 151.0w人学习
看过的人还看了
MySQL 实战 45 讲
林晓斌
网名丁奇,前腾讯云数据库负责人

49讲 | 223625 人已学习

¥68¥199
数据结构与算法之美
王争
前 Google 工程师

81讲 | 282469 人已学习

¥68¥199
左耳听风
陈皓
网名“左耳朵耗子”,资深技术专家

119讲 | 179664 人已学习

¥98¥399
从 0 开始学架构
李运华
网名“华仔”,前阿里资深技术专家(P9)

66讲 | 151666 人已学习

¥68¥199
分布式技术原理与算法解析
聂鹏程
智载云帆 CTO,前华为分布式 Lab 资深技术专家

43讲 | 39562 人已学习

¥59¥129
分布式系统案例课
杨波
前携程 / 拍拍贷技术总监,微服务技术专家

66讲 | 11769 人已学习

¥59¥129