短網址服務的設計及實現的所有關鍵特性
01 摘要
本文主要介紹了短網址營銷方向,對外對內傳播短鏈接,短網址的最優配置,不同短網址數據庫之間的快速讀寫操作——短網址通用發放平臺的設計及實現,以方便使用和接入,降低開發成本,集中管理。
02. 背景
隨著短網址和其他第三方聯合運營的不斷推廣和合作,短網址服務對內對外的合作發放虛擬or實物物品的需求越來越強烈:比如合作發短網址外鏈、短網址優化過的二維碼等,或者外賣發糯米代金券、愛奇藝vip碼等。在發放的基礎之上又融合了各種發放的策略,而種類多樣的策略設計每次都需要重新設計和開發。除此以外,查詢和統計等需求并沒有可靠方便的機制進行保證,無疑又增加了開發的工作量。
為了更好的服務聯合運營需求,降低各業務方接入各類發放通道的開發和工作量,通用發放系統的需求也就應運而生:建立一個功能完善、易擴展、方便接入和使用的通用發放平臺,服務于整個短網址服務的對內對外的各類發放需求。
03. 系統設計
整體系統流程架構圖如下:
整個系統主要包括四層,接入層,策略層,服務層,數據層
? 接入層:主要對接入方的訪問做權限校驗,對請求頻次做流量控制。
? 策略層:主要是做一些策略抉擇,如發放類型,組合發放控制。
? 服務層:下游服務,對接內部和外部基礎服務,如代金券發放,余額發放等。
? 數據層:將整個調用過程使用消息隊列,異步記錄日志,方便做問題追蹤和實時監測。
內部授權平臺設計兩種權限:創建者和管理員的權限。
一、創建者可以由短網址服務內部程序進行創建,但沒有審批授權上線的權限,創建后需通知給管理員進行審批。創建者在非上線狀態可以進行編輯,上線后則不可編輯。創建者可以下線自己的授權活動。
二、管理員可以直接創建授權并審核生成的短鏈接是否可以上線,同時也可以進行下線操作
整個授權過程無需研發再次介入,可由管理人員在界面直接操作,進行整體控制;同時設計測試的聯調活動用于外界聯調測試。
授權主要分為對外業務授權和對內授權,對外授權需要生成通用des加密的對應token。授權信息保存在redis中,降低檢驗耗時,同時在db中冗余一份。
目前接入了多個業務方向的代金券,后期可接入組合發放等其他需求。
活動狀態流轉圖:
詳細功能點說明:
1.普通創建人只能看到自己創建的活動和狀態,看不到別人創建的活動;管理員則可以看到所有生成的短鏈接。
2.活動保存后可以編輯的信息:基本信息中的活動名稱,結束時間;策略的編輯只能由管理員進行,如增刪批次id,授權新的api等。
3.活動授權上線后只能由管理員進行批次的添加和修改;授權前可以由創建人自由修改。
4.活動下線后,可重新編輯后進行保存,并由管理員再次審核上線。
5.策略信息中點擊批次id可以跳轉至批次信息詳情頁面。
流量控制,使用腳本定時監控接口調用qps,平衡各接入方的接口qps,檢測到qps到了預警值,根據各接入方的最高允許qps,按比例設定當前時間各個接入方的調用qps來進行調控,保證整體qps在預警值之下,保證系統的正常訪問。
最理想的服務隔離設計,是在包括域名、集群、數據庫、緩存等進行完全的隔離,保證服務的穩定性,降低與其他服務的依賴,具體設計如下:
1.申請獨立域名和獨立部署模塊,包括機器集群,數據庫,緩存等等。
2.qps總壓力限制分內外部設計,內部調用方優先級高于外部調用方。
3.接入壓力實時反饋,流控算法進行防御式限流。
4.內外接入方的統計信息消息進行隔離,消息隊列拆分單獨維護,異步統計。
目的:效果的分析,問題的追查,流量的監控等
在可視化平臺,可以查看各個接入端的調用情況,做到實時監控,目前只做到監控各端調用頻次,后期可以接入調用響應的字段統計,超時等等性能數據。
圖為測試環境模擬實時調用效果圖,如圖為三個調用方同時調用短網址服務,第一個交叉點檢測到流量超過預制,腳本自動干預調控流量保證整體流量可控;第二交叉點檢測到流量下降,恢復各接入方調用。
接口重入考慮,短網址服務大部分接口是寫入性接口,在一些重要業務場景如余額,高額代金券的發放必須要考慮到接口重入性,防止多發。由于通發平臺,不做具體業務,重入的保證很大程度依賴業務下游來保證;通發平臺再次基礎上再次做了優化:
1. 第一次調用在下游上鎖之后,把鎖同步到通發平臺,鎖采用單線程模式的redis來實現。
2. 再次調用時驗證鎖的存在,這樣在調用下游之前能夠截住很大一部分不必要調用下游的重入流量,解決重入的同時,較低了對下游的壓力。
掃描二維碼推送至手機訪問。
版權聲明:本文由短鏈接發布,如需轉載請注明出處。
本文鏈接:http://www.virginiabusinesslawupdate.com/article_393.html