微信開放了公衆平臺消息接口後,很多企業開始利用消息接口開展相關業務方式的探索,招商銀行首次推出微信銀行業務,微信銀行覆蓋了更廣闊的服務範圍,不僅可以實現借記卡賬戶查詢、轉賬匯款、信用卡賬單查詢、信用卡還款、積分查詢等卡類業務,更可以實現招行網點查詢,貸款申請、辦卡申請、手機充值、生活繳費、預約辦理專業版和跨行資金歸集等多種便捷服務。此外,微信銀行的在線智能客服更可實現在線實時解答客戶諮詢,爲客戶提供了非常方便的諮詢通道,“微信銀行”是手機銀行的延伸,也是繼網上銀行、電話銀行、手機銀行之後又一種方便銀行用戶的金融業務服務方式。
數據顯示,數據流量佔主導的時代已經開始,類微信的產品正在分流短信。招商銀行相關人士表示:鑑於微信具備信息表現形式豐富、拓展性好、延展性好等特點,同時可支持視頻通話等創新功能,微信將會爲銀行客服帶來更廣闊的發展空間,並降低銀行業的運營成本。
在微信銀行業務中,客戶端的的來源爲微信公衆平臺的服務器,在銀行側的數據模型爲單客戶端短連接業務,從高安全性和高處理性角度出發,在銀行側部署多臺服務器處理微信公衆平臺服務器的流量是必須的配置 ,目前架構中存在的問題有:
· 客戶端來源單一IP地址
· 微信公衆平臺應用不支持Cookie會話保持
通過傳統配置無法實現銀行側服務器的性能負載均衡,在這樣的情況下,會造成:
· 單臺服務器故障會造成所有的用戶會話失敗
· 設備升級成本非常高,已有設備無法添加爲集羣
我們可以通過F5 BIGIP LTM產品的iRule特性,針對微信報文進行解析,實現根據用戶ID號進行負載均衡,從而搭建高性能微信銀行平臺。
實施前數據流程
實施後數據流程
一、 配置步驟
1. 微信數據格式
當普通微信用戶向公衆賬號發消息時,微信服務器將POST該消息到填寫的URL上,並將消息發送到銀行側接口服務器,結構如下:
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId> </xml> |
參數 | 描述 |
ToUserName | 開發者微信號 |
FromUserName | 發送方帳號(一個OpenID) |
CreateTime | 消息創建時間 (整型) |
MsgType | text |
Content | 文本消息內容 |
MsgId | 消息id,64位整型 |
其中FromUserName可作爲負載均衡依據,所有的微信報文消息都包含ToUserName以及FromUserName兩個字段,用以鑑別微信開發者以及微信公衆號的使用者。
2. F5側配置
在F5側,微信接受端VS採用universal 會話保持方式,如下
並且創建下面的iRule
when HTTP_REQUEST { if {([HTTP::method] eq "POST") && [HTTP::header exists "Expect"] } { HTTP::header remove "Expect" HTTP::collect 200 TCP::respond "HTTP/1.1 100 Continue\r\n\r\n" LB::detach } } when HTTP_REQUEST_DATA { set open_id [findstr [HTTP::payload] "<FromUserName><!\[CDATA\[" 23 "]]></FromUserName>" ] log local0. "open_id is $open_id" persist uie $open_id 720 HTTP::release } |
上述iRule中,下面的iRule 語句將提取用戶的id號
set open_id [findstr [HTTP::payload] "<FromUserName><!\[CDATA\[" 23 "]]></FromUserName>" ]
|
下面的iRule 語句根據提取用戶的id號,實現會話保持
persist uie $open_id 720 |
此後將上述iRule配置到微信接口VS
由此完成配置。
由於存在IHS 集合騰訊平臺的時候存在將多個request放在一個連接的情況,需要在VS中添加OneConnect Profile,強制LTM對每一個Request都單獨進行處理。
通過F5獨有的iRule技術,使得微信銀行可以使用較廉價的開放平臺構建高性能高可用性的系統,銀行可以依據業務量的對基礎架構進行靈活升級。極大的提升系統的可維護性,有效降低微信銀行的啓動成本和運維成本,推動微信銀行這一金融服務創新手段的儘快普及。