问题描述
app有个发送通知的功能,调用服务端相应接口,服务端查询所有要接收通知的对象,然后调用百度云推送sdk(相当于一个webrequest)去发送推送请求,当接收对象有上千或更多的时候,服务端如何处理性能更佳呢,目前是用的多线程,一个对象开一个线程,但是线程到达极限了还是会出问题的?
解决方案
解决方案二:
简言之,就是如何在不影响web主线程的前提下异步发送上千条数据的请求
解决方案三:
引用楼主zhanghongrui1988的回复:
,然后调用百度云推送sdk(相当于一个webrequest)去发送推送请求,当接收对象有上千或更多的时候,服务端如何处理性能更佳呢,目前是用的多线程,一个对象开一个线程,
百度这么大的公司,难道还不知道“相同内容,不同目标用户”,给你提供一个批量发送个接口么?百度这么垃圾么?
解决方案四:
引用1楼zhanghongrui1988的回复:
简言之,就是如何在不影响web主线程的前提下异步发送上千条数据的请求
我不知道你所谓的“web主线程”是什么意思。既然异步了,又怎么会影响?
解决方案五:
我想把“未来”的极限跟你说一下,最终的大一点的应用系统必然是分布式处理的,也就是说你有10台服务器那么任务就会分不到10台服务器,你有100台服务器那么任务就会分不到100台服务器,去分别跟百度云通讯(攻击它:-)只会做一个小网站的人,肯定只能用单机的架构。包括许多自认为是在“创业”的人,对于分布式服务架构这么简单的东西的价值都还没有概念。而想要用互联网思维来创业,就必须先天地用分布式思维来编写软件,这样才能处理一个后台系统中出现的上百、几百个你这样的问题。
解决方案六:
最后那个分布式的提议是说到点子上了,只是目前并未有实践条件和环境。所以,目前zhi'能局限于单机的环境处理,我说的肯定是不同的内容发送,还有关于web主线程和异步的问题,你试着开几万个线程看会不会影响到主线程,肯定是会影响到的。
解决方案七:
那就回答一下#3楼我的问题。你所谓的“主线程”是什么东西呢?是从winform里边学来的概念,还是真的有什么可举例具体说明的线程?
解决方案八:
关键是“在不影响web主线程的前提下异步发送上千条数据”这里的所谓“影响”,把一个原本是要解决的核心问题说的模糊了,很难判断你说的是什么意思。如果你遇到了任何问题,如果你只说“影响”二字而不说问题细节,应该是解决不了什么问题的。
解决方案九:
谢谢你的批评指正,可能我的描述是有些问题,词不达意了,主线程我指的其实就是ui线程
解决方案十:
综合上面前辈的指点,我吧问题再重新表述一遍:web应用在单机条件下(目前没有集群分布式条件)有什么比较好的方法实现异步发送上千条的数据请求?
解决方案十一:
队列,建个队列的表,把要发的信息先促存进这个表,但做个服务,每2分钟查一次这张表,找到有数据就发,发成功的就删除
解决方案十二:
补充一下,每次发多条,这个自己设定
解决方案十三:
用AMP EAP或者Task都行
解决方案十四:
发送任务采用先落地后处理的方法,先保存到某个存储中,比如数据库,比如文件。写个任务逐条处理,如果通道有压力的,增加通道。比如考虑多开一些任务,每个任务处理某个特定范围的数据,每个任务使用不同的百度账号。例外还需要考虑网络硬件的通道压力。