现在我有一个webservice接口供客户方调用,以后可能并发量会越来越大。上头让我了解下mq,将请求缓存到队列中,进行流量削峰。我不太明白,客户调用接口就进入接口内了,代码上应该写在接口前,具体该怎么写呢?
就比如,一秒钟内来了一万次请求,我让服务器一秒内处理500条,其他的缓存到队列这样
mq队列了解一下,主流的有Apache的activemq(带ack机制)、rocketmq(阿里的现已捐献给Apache),rabbitmq,kafka(一般用于大数据)。甚至你还可以用redis。
mq是一种做异步架构常用的策略。既能做到架构解耦,又能提高系统可靠性和吞吐能力。
mq可以控制,但是相对麻烦,tomcat可以完成,在server.xml里的<Connector配置就行
直接让请求方不用调用接口,直接把请求放入mq队列,然后你去队列获得请求进行处理,1秒钟处理多少个就完全有你们自己决定啦
其实如果你们有用redis的话,也可以实现,而且比较简单
其实就是用队列等来保持请求,避免服务器处理不过来,所以你需要做的就是在API网关,把客户的请求放到一个消息队列,比如直接用JAVA的LinkedBlockingQueue等,然后服务器从这个里面取任务进行处理。
如果用专业的MQ,那么就是API 网关做生产者,把客户端请求放入队列,后台服务器做消费者,从MQ中取任务来进行处理
http://elim.iteye.com/blog/1893038
说说我的想法 用achivemq,当对面调用你的接口的时候,你把请求装到队列里面,然后发送它到消费的地方
再在消费地方再实际调用你的接口 ,
因为mq会自动给你排队消费的