高并发程序怎么实现,一般是多线程来处理(线程池),线程池参数设置这个一般需要一个预估值,通过计算得到,比如你的机器是8核,处理一个请求计算得到用时100ms,一个cpu一秒就是处理10条请求,8核也就是80了,核心线程个数和最大线程数这个需要一个范围,建议是cpu核数的整倍数,以及队列大小这些都是可以计算预估出来,考虑cpu运算特别快,一般这个时候创建线程开销就太大了,不如直接使用线程池,只是增加一点cpu线程切换开销,如此一来你完全可以把线程开大一点,比如最大线程数64个那么又提高了8倍就是600个请求了,假如每秒有2000个请求同时过来,这个时候你只需要多部署4个服务就是了,如此类推,
但是当请求又增加的话,你就需要考虑其他因素了,比如消峰问题,请求丢失.可以使用消息队列来解决
一般的业务问题都是以订单系统来举例子.除了要解决数据持久化问题还要解决高并发下查询问题,使用mysql(分库分表)+elasticSearch来做近实时查询,业务上去了(压力都在es这边的时候)就选择这个技术mysql(分库分表)+elasticSearch+hbase了.这个时候elasticSearch就做条件查询,hbase就做等值查询.结合起来完美解决问题.
忘了说redis也可以做点事情,看你怎么玩了
好了是时候结束这一波装逼.
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有