分布式常见面试题:聊聊分布式下的线程隔离机制

IT 文章1年前 (2024)发布 小编
0 0 0

分布式环境中,经常会碰到一个棘手的问题。有些业务访问量极大,而有些业务访问量较少,但访问量大的业务可能会拖垮其他业务。

比如说商品购买的下单接口被频繁调用,这就可能导致列表接口和详情接口都无法访问。如果这种场景不加以处理,用户的使用体验会非常差。但商品的内容得能看,列表也得能正常浏览。

常见的解决方案就是采用线程隔离机制,将查询接口分开隔离。比如下单接口允许 20 个线程,这样调用时就互不影响,不会出现下单接口占用全部商城中心线程的情况,从而避免其他接口无法使用。

ad

程序员导航

优网导航旗下整合全网优质开发资源,一站式IT编程学习与工具大全网站

可能有人会问,如果线程占满了该怎么处理?对于常见的线程池,比如数据库连接池,一般的处理方式是请求一直等待,直到有空余的查询线程,然后完成查询操作。但如果等待超过了设置的时间,通常就会返回响应超时。

在大部分场景中,不是请求发现线程池饱和就直接拒绝服务,这样做的好处是减少了排队时间,不会出现很多线程阻塞。虽然一部分用户下单会失败,但几秒钟的时间影响不大。一旦熔断,请求就会走降级的方法,比如显示“业务繁忙请稍后再试”,或者走本地查询等其他方式来应对,提醒用户快速重试。

要是占用线程池的线程一直不释放,这就需要设置过期时间,比如 100 毫秒,然后强制释放,防止一直占用资源。

© 版权声明

相关文章

暂无评论

暂无评论...