但是,我们平时开发的 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 人划过
*精彩内容为该课程各文章中划线次数最多的内容
编辑推荐
包含这门课的学习路径
架构师
28门课程 151.0w人学习
看过的人还看了