宋思華
【摘 要】文章研究基于微信公眾平臺運行,從微信公眾號進入,頁面前端采用HTML5、CSS3和JQuery技術(shù),頁面后臺通過PHP實現(xiàn),數(shù)據(jù)庫采用MYSQL,通過JSON格式與微信平臺進行數(shù)據(jù)交換。為滿足高并發(fā)引入REDIS,為實現(xiàn)與訂單打印的解耦引入消息隊列,保證了高并發(fā)、大數(shù)據(jù)量下的訂餐系統(tǒng)的正常運轉(zhuǎn)。該系統(tǒng)為多商戶版本,需每個商戶獨自運營自己的公眾號平臺。
【關(guān)鍵詞】微信公眾平臺;訂餐系統(tǒng);分布式緩存;云打印
【中圖分類號】TP311 【文獻標識碼】A 【文章編號】1674-0688(2019)09-0096-02
微信自2011年推出至今已擁有超過10億用戶,逐漸成為大眾在移動互聯(lián)網(wǎng)時代的生活方式。背倚龐大的用戶基礎(chǔ),微信公眾平臺的內(nèi)容產(chǎn)出與消費量已經(jīng)非??捎^,各個企業(yè)紛紛在微信平臺開設(shè)自己的公眾號,用于宣傳、推廣、銷售等。本文基于微信公眾平臺,開發(fā)設(shè)計可以在電子移動端使用的網(wǎng)上訂餐系統(tǒng),方便商家的餐品推廣、銷售及客戶的購買。
1 系統(tǒng)總體功能設(shè)計
1.1 總體設(shè)計
該系統(tǒng)最終在互聯(lián)網(wǎng)環(huán)境進行推廣,預(yù)計接入商戶1萬家,總用戶量為100萬。用戶通過微信公眾號關(guān)注商家后,通過自定義菜單入口,使用HTML5頁面展示店鋪訂餐頁面。商戶通過PC端配置自己的店鋪、對公眾號進行自定義配置。系統(tǒng)使用PHP語言、MYSQL數(shù)據(jù)庫開發(fā)訂餐系統(tǒng),部署在阿里云平臺,為商戶及公眾提供服務(wù)。
為保證用戶體驗,在高并發(fā)環(huán)境下也能保證用戶正常點餐、訂餐,系統(tǒng)使用分布式緩存REDIS來存儲用戶經(jīng)常訪問的數(shù)據(jù),減輕對數(shù)據(jù)庫查詢的壓力。商戶要實時獲取有哪些用戶來訂餐,及時備餐并配送,需要配備云打印機實時打印在線訂單,系統(tǒng)通過云平臺技術(shù),將用戶訂單存儲到消息隊列中,并監(jiān)聽各商戶的云打印機在線情況,將訂單推送到云打印機進行打印。
1.2 功能說明
該系統(tǒng)功能主要分數(shù)據(jù)層、服務(wù)層和表現(xiàn)層。
數(shù)據(jù)層主要通過MYSQL數(shù)據(jù)庫來存儲數(shù)據(jù),在數(shù)據(jù)量較大時,通過分庫分表的方式來保存數(shù)據(jù)。用REDIS來緩存訪問率較高的數(shù)據(jù),提升系統(tǒng)訪問速度,降低數(shù)據(jù)庫服務(wù)器I/O壓力。
服務(wù)層對每個商戶及顧客提供統(tǒng)一服務(wù)接口,是系統(tǒng)的核心層,主要包括公眾號服務(wù)、訂餐服務(wù)、營銷服務(wù)、緩存服務(wù)、配置服務(wù)、登錄鑒權(quán)、支付服務(wù)和打印服務(wù)等。
表現(xiàn)層分商家PC端和顧客公眾號端。
2 關(guān)鍵技術(shù)
2.1 JSON格式
JSON是一種數(shù)據(jù)交換格式,它與XML相比更輕量,是當前各系統(tǒng)開發(fā)、系統(tǒng)間進行數(shù)據(jù)交換的主流數(shù)據(jù)格式。在本系統(tǒng)與微信公眾平臺的交互中,所有接口都使用了JSON格式,例如公眾號通過API調(diào)用設(shè)置的菜單,自定義菜單配置樣例如下:
2.2 REST
REST是利用HTTP協(xié)議對互聯(lián)網(wǎng)資源進行一致的命名規(guī)則定義,使得對數(shù)據(jù)的增刪改查操作與HTTP協(xié)議中的post、delete、put、get方法對應(yīng)起來,滿足這種規(guī)則的接口則為Restful風(fēng)格的接口。Restful接口使得各系統(tǒng)間進行接口調(diào)用時按照命名約定進行調(diào)用,減少溝通成本。本系統(tǒng)中要與微信公眾平臺進行交互,數(shù)據(jù)格式統(tǒng)一使用JSON格式,調(diào)用方式則統(tǒng)一使用REST接口。例如查詢某公眾號的當前自定義菜單,則使用指定HTTP請求方式:?GET接口https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info?access_token=ACCESS_TOKEN。
2.3 緩存
在傳統(tǒng)的數(shù)據(jù)請求中,比如用戶查看某店鋪現(xiàn)可訂餐的菜品,首先發(fā)送請求到后臺,后臺接到請求后,根據(jù)請求參數(shù)組合SQL查詢語句發(fā)送到數(shù)據(jù)庫,將數(shù)據(jù)庫返回的數(shù)據(jù)組裝成前臺需要的數(shù)據(jù)并返回給前臺,頁面再對這些數(shù)據(jù)進行渲染,最終展示給用戶。
在用戶量不大的情況下,使用這種方式?jīng)]有性能上的問題,但在用戶量大的情況下,后臺會頻繁向數(shù)據(jù)庫發(fā)送查詢請求,最終會達到數(shù)據(jù)庫IO上限,造成查詢速度慢,用戶得到的響應(yīng)慢。
為保證高并發(fā)請求下用戶的體驗,在本訂餐平臺中,對大量短時間內(nèi)不會頻繁變化的數(shù)據(jù),例如各餐飲店的產(chǎn)品分類、套餐信息、飯菜信息,為提高系統(tǒng)響應(yīng)速度,系統(tǒng)會在初次請求這些信息時對這些信息進行緩存,下一次其他用戶請求時,平臺直接給出緩存的信息,提高用戶響應(yīng)速度。
同時,在本訂餐平臺中,后臺服務(wù)進行集群部署,用戶同時登錄時需要保持用戶SESSION,所以這些數(shù)據(jù)不能記錄到服務(wù)器SESSION中,而是需要存儲到一種中間數(shù)據(jù)庫中。
結(jié)合系統(tǒng)特點,本系統(tǒng)采用REDIS存儲的NoSQL數(shù)據(jù)庫作為緩存來使用,緩存高頻次訪問的數(shù)據(jù),降低數(shù)據(jù)庫IO,同時滿足系統(tǒng)的分布式架構(gòu),做SESSION共享。
2.4 支付功能
移動支付是互聯(lián)網(wǎng)時代的新型支付方式,用戶在通過微信公眾平臺進行訂餐后,可選擇在線支付或貨到付款,本系統(tǒng)支持微信支付。微信支付使用H5支付,是指商戶在微信客戶端外的移動端網(wǎng)頁展示商品或服務(wù),用戶在前述頁面確認使用微信支付時,商戶發(fā)起本服務(wù)呼起微信客戶端進行支付。
2.5 消息隊列
用戶在線訂餐后,訂單信息需要及時通知商戶,本系統(tǒng)方案為將訂單信息推送到商戶的云打印機,實時出單。云打印機作為一個物聯(lián)網(wǎng)終端,是連接用戶與商戶的橋梁,但這個橋梁不是實時在線的,可能處于關(guān)機狀態(tài),或者因網(wǎng)絡(luò)原因,云打印機心跳包丟失,系統(tǒng)顯示云打印機不在線,從而無法推送消息。如果出現(xiàn)這種情況,系統(tǒng)會發(fā)生訂單未打印的情況,造成商戶的損失。為此,系統(tǒng)采用消息隊列方式,對訂單信息與打印指令進行解耦。所有產(chǎn)生的訂單打印信息先放在消息隊列中,而在消息消費者中只顯示云打印機在線的消息,從而保證打印機工作的可靠性。
2.6 云打印
云打印是以互聯(lián)網(wǎng)為基礎(chǔ),以小票打印機作為IOT平臺終端構(gòu)建的訂單打印系統(tǒng)。小票打印機以gprs或wlan方式接入互聯(lián)網(wǎng)平臺,并向平臺進行注冊,注冊成功后以一定頻率向平臺發(fā)送心跳數(shù)據(jù),平臺接到心跳數(shù)據(jù)則認為打印機在線。如消息隊列中有待打印的訂單信息,則推送到打印機進行打印。打印機與IOT平臺的接口使用RESTAPI,數(shù)據(jù)交換格式使用JSON。例如:獲取訂單列表接口,通過post方式請求指定接口地址http://www.xxxx.com/printer/getOrderList,傳入TOKEN等權(quán)限認證信息后就可以取到商戶的訂單列表。
3 結(jié)語
本文主要介紹了基于微信公眾平臺訂餐系統(tǒng)的總體設(shè)計、系統(tǒng)功能和關(guān)鍵技術(shù)。系統(tǒng)開發(fā)者對商戶實現(xiàn)了B2B的運行模式,而商戶對客戶則是B2C的營銷模式。系統(tǒng)主要提供餐品的管理和訂餐功能的實現(xiàn),線下的操作如送餐則由商戶自主完成。
通過實際運營,發(fā)現(xiàn)系統(tǒng)有如下可改進方面:{1}餐品在配送過程中的定位功能未實現(xiàn),使得客戶不能實時獲取餐品位置信息。{2}安全問題。網(wǎng)絡(luò)中數(shù)據(jù)的傳輸未進行加密,可能會有安全隱患。
該系統(tǒng)仍需根據(jù)實際運營情況進行用戶體驗及安全性能方面的修改及功能的完善,為用戶提供更快捷、方便、安全的訂餐環(huán)境。
參 考 文 獻
[1]周建功.微信公眾號訂餐平臺系統(tǒng)設(shè)計與實現(xiàn)[J].軟件導(dǎo)刊,2016(8):74-76.
[2]陳小龍.微信公眾平臺開發(fā)實戰(zhàn)與應(yīng)用案例[M].北京:清華大學(xué)出版社,2015.
[3]易偉.微信公眾平臺服務(wù)號開發(fā)[M].北京:機械工業(yè)出版社,2014.