https://mp.weixin.qq.com/s/3kYarzQcXY1-4t57DGn9Eg
貝殼找房小程序至今為止已經擁有了近2億的用戶,團隊正在在朝着貝殼人的宗旨邁進,給這個行業創造更多的價值,努力成為一個能夠服務2億家庭的品質居住平台。
經過兩年多的發展,為了更好的適應業務發展,貝殼小程序后端從最初的快速搭建到后來由php到golang的轉型與優化,到現在微服務的落地和業務網關能力的提升,貝殼小程序平台一直走在蛻變的路上。而貝殼找房小程序和app的上線,也意味着一直在房產行業里深耕的鏈家,從直營模式到貝殼找房平台化模式的正式轉變。
小程序平台同樣傳承了公司平台化的轉變理念和模式,把平台化思路堅決貫徹下去,在完成平台需求的同時,沉淀平台核心能力,賦能各個業務,甚至賦能給整個行業。
1 小程序平台1.0
貝殼找房小程序起始於2018年,1.0時代小程序團隊主要是在追趕功能,團隊在半年時間內完成了1年應該完成的業務。半年期間小程序產研團隊快速擴增,此期間大量的進行API層開發,封裝各業務接口,以快速完成第一版的小程序為目標。
1.1 極速上線小程序后台服務
極速上線公司級小程序平台要面對的問題是什么呢?因為貝殼小程序平台的特殊屬性,各個業務例如新房、二手、租賃、裝修都是分屬在各團隊維護的,所以需要有平台業務方來整體對小程序的性能做分析和監控。
首先是每日性能監控,團隊做了第一版的性能分析日報,把小程序內所有域名的請求量、平均響應時間、499以及5XX狀態碼的數量占比、並發峰值、qps高峰時間、穩定性百分比等等,以穩定性日報的形式輸出給團隊所有成員,並且詳細的列出了所有接口的情況,做到小程序內所有的服務,平台都能“心中有數”。二是小程序平台自身接口的實時預警,接入了公司Fast監控平台,實時監控各接口的性能指標情況,包括域名錯誤、SQL異常、第三方請求超時、業務日志ERROR、服務請求異常等等,保證極速上線的小程序能健康的運行。
1.2 如何抗住100倍流量的九宮格?
全部小程序的統一帶來的風險就是流量的瞬間上漲,不僅僅是各小程序流量的整合,微信九宮格的流量也會瞬間涌入小程序平台,於是項目組開始了接口的優化和拆分,首先對預估流量進行了一次壓測,發現性能瓶頸在redis集群上,內存使用率達到了90%以上,但實際瓶頸並不在於redis本身,在於當前redis集群的內存管控上,這里我提一下為什么DBA需要對redis集群進行內存管控呢?首先是貝殼業務線較多,每個微服務都可以申請獨立的redis集群,運維成本是比較大的,另外如果內存超過20G,高可用的切換后,恢復的時長就可能會超過5分鍾,一定程度增加了故障發生的概率,所以這個內存的管控上還是有必要的。
那該如何優化呢?第一反應是特定業務場景的擴容,雖然說有20G內存的限制,但是如果業務場景特殊性,這個擴容也是可以支持的,不過如果在應用層面就能優化,何樂而不為?我們通過監控指標發現redis集群的cpu占用和I/O使用都是在正常的范圍,唯獨內存占用嚴重超標,經過分析發現是房源詳情大json和小程序首頁占用了較大的內存,一方面我們選擇了合適的壓縮算法,對redis大value進行壓縮,減少了redis的將近一半以上的內存占用,另一方面,我們對小程序首頁的redis使用了pconnet長連接,避免頻繁建立短連接的性能損耗。
簡單的優化,也給給團隊帶來了一些思考,以后在對面redis的優化,在平台側要保持一定的容量buffer可擴容,避免出現容量危機,另一方面,可以利用壓縮、切分等來提高性能。
1.3 沉淀核心服務
業務上,團隊完成了核心的新房二手業主等業務的功能模塊開發,在和app對齊的同時又豐富了微信體系內的消息訂閱、推送等場景,此后又開啟了小程序體系特有的業務場景開發,微信體系內的分享、滲透、拉新,以及碼上有客項目的啟動,開始通過小程序為貝殼幾十萬經紀人提供自我營銷能力。
技術上,也沉淀了一些核心能力,例如第一版小程序的分享能力的建設,經紀人通過小程序進行分享后,可以記錄核心的分享鏈條,包括經紀人用戶關系、閱讀場景、停留時長等等。