鍍金池/ 問答/Java  PHP  Python  Linux  HTML/ 如何高速高效的發(fā)布微信模版消息、客戶消息?

如何高速高效的發(fā)布微信模版消息、客戶消息?

我們平臺(tái)基于微信公眾號(hào),總粉絲數(shù)近3千萬(wàn)。現(xiàn)在在發(fā)送模版消息、客服消息時(shí)受到限制。不知道有什么更好的解決方案。
我們目前比較屎的方案:
1、建立發(fā)送任務(wù),發(fā)送模版消息或客服消息。
2、兩張隊(duì)列表,一個(gè)模版消息隊(duì)列表,一個(gè)客服消息隊(duì)列表。當(dāng)發(fā)送任務(wù)提交后,由mysql的事件來(lái)定時(shí)將某條任務(wù)分到3千萬(wàn)粉絲,模版消息任務(wù)進(jìn)模版消息隊(duì)列表,客服消息進(jìn)客服消息隊(duì)列表。
類似下面的結(jié)構(gòu)

任務(wù)ID OPENID XXX1 XXX2 XXX3 XXX4 1
34rwfrwewesefsf dd gfgg ddd ddd

也就是會(huì)產(chǎn)生3千萬(wàn)條模版消息隊(duì)列表或客服消息隊(duì)列表

3、linux crontab做定時(shí)任務(wù),20分鐘執(zhí)行一次shell腳本

 shell腳本每次100到200并發(fā)調(diào)用 后臺(tái)的發(fā)送服務(wù)。每個(gè)發(fā)送服務(wù)會(huì)先批量更新500條為一組發(fā)送,這樣500個(gè)發(fā)送服務(wù)調(diào)用的數(shù)據(jù)互不干擾
 

現(xiàn)在大概20分鐘大概能發(fā)送100萬(wàn)左右。本身基于數(shù)據(jù)庫(kù),所以對(duì)數(shù)據(jù)庫(kù)壓力也大。由于發(fā)送服務(wù)是調(diào)用微信的相關(guān)接口,而500條一組都是for循環(huán)發(fā)送,所以速度上并不快。無(wú)法定時(shí)時(shí)間發(fā)送完成。往往都是進(jìn)了隊(duì)列,很久后才發(fā)送到之前的任務(wù)

有沒有更好的方案供改造

回答
編輯回答
硬扛

你可以看成隊(duì)列,就是一個(gè)商城,既然商城的貨銷售不出去,那就是證明消費(fèi)者不夠,消費(fèi)者不夠,那就增加消費(fèi)者.將隊(duì)列分批.分成多個(gè)隊(duì)列來(lái)執(zhí)行.就是多個(gè)消費(fèi)者.這樣,消費(fèi)者夠了.然后就是數(shù)據(jù)庫(kù)的問題.是否可以考慮從數(shù)據(jù)庫(kù)中脫離出來(lái).利用redis的隊(duì)列.然后通過(guò)redis來(lái)同步數(shù)據(jù)庫(kù).這樣是不是就減輕了數(shù)據(jù)庫(kù)的壓力.

2017年3月5日 04:36