-
问题前提条件:
①本项目调用多个 c++ 服务(集群) (每个服务设定了不定数的个线程,访问此服务的时候,不能超过此服务发可用线程数)
②本项目访问c++服务的前提要随机选择可用服务(比如有4个c++服务集群-每一个服务配置了线程为10个,其中1号服务已经宕机,2号服务的进程数已经到10,那么可用的服务就只有3和4号服务器)
③客户调用本项目 的 任务 放到队列中去, 本项目开辟新线程去在队列中有序取出任务
④调用C++服务集群的时候设置有超时(一段时间内找不到含有可用连接数的服务),返回超时code -
解决问题方案(比如有4个c++服务器集群):
①本项目启动后初始化4个服务类分别代表4个服务器,含有url(IP地址) , totalThreadCount(最高并发数) , usedThreadCount(已用还没有释放并发数) , isUsable(服务是否宕机) , port(服务端口号) 属性, (在配置文件中读取参数设置属性), 访问前对这4个服务类进行来实现对c++服务集群可用性的校验
②启动项目后 , 开启一个监听器(开辟一个线程,每两秒一次监听),通过初始化的四个服务类对4个服务集群进行校验,查询是否存在宕机服务器(宕机设置isUsable为false)
③任务来了放入队列中
④项目启动后开启一个监听器,监听任务队列中是否存在任务,有的话执行任务 -
自己模拟测试(项目中更加严谨)
项目中遇到的经典问题2==高并发,使用队列;随机路由选择服务器;使用线程定时器;使用线程池
最新推荐文章于 2022-04-20 17:27:05 发布