项目中遇到的经典问题2==高并发,使用队列;随机路由选择服务器;使用线程定时器;使用线程池

  1. 问题前提条件:
    ①本项目调用多个 c++ 服务(集群) (每个服务设定了不定数的个线程,访问此服务的时候,不能超过此服务发可用线程数)
    ②本项目访问c++服务的前提要随机选择可用服务(比如有4个c++服务集群-每一个服务配置了线程为10个,其中1号服务已经宕机,2号服务的进程数已经到10,那么可用的服务就只有3和4号服务器)
    ③客户调用本项目 的 任务 放到队列中去, 本项目开辟新线程去在队列中有序取出任务
    ④调用C++服务集群的时候设置有超时(一段时间内找不到含有可用连接数的服务),返回超时code

  2. 解决问题方案(比如有4个c++服务器集群):
    ①本项目启动后初始化4个服务类分别代表4个服务器,含有url(IP地址) , totalThreadCount(最高并发数) , usedThreadCount(已用还没有释放并发数) , isUsable(服务是否宕机) , port(服务端口号) 属性, (在配置文件中读取参数设置属性), 访问前对这4个服务类进行来实现对c++服务集群可用性的校验
    ②启动项目后 , 开启一个监听器(开辟一个线程,每两秒一次监听),通过初始化的四个服务类对4个服务集群进行校验,查询是否存在宕机服务器(宕机设置isUsable为false)
    ③任务来了放入队列中
    ④项目启动后开启一个监听器,监听任务队列中是否存在任务,有的话执行任务

  3. 自己模拟测试(项目中更加严谨)
    在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值