看苏宁易购的运营保障体系如何hold住818大促
運營質量的好壞關系著用戶的體驗。在日常的業務運營過程中,商品無貨、頁面或券過期、商鋪下架、視頻無法播放等問題都嚴重影響用戶體驗。如果僅憑運營的人工監控和維護來保證服務質量,不僅效率低,而且效果也不佳。業務的需求是驅使技術革新的原動力。818 前夕,面向蘇寧易購線上運營質量保障的先知平臺正式上線。
\\先知平臺的設計理念基于“As was foreseen”,正如預想的那樣,線上運營過程的服務質量是完全可控制的。先知運營保障體系包括線上故障發現、應急響應、故障定位、快速恢復,形成完整閉環,能自動化幫助運營修復線上問題。
\\下面就來看一看先知平臺背后的技術實現細節。
\\\\圖 1. 基于先知的運營保障體系
\\基于 Selenium ChomeDriver 的性能監控
\\先知平臺最基本的功能是模擬用戶(帶有真實用戶會話信息)來對頁面進行掃描(爬蟲),在瀏覽和購物的過程中發現潛在的運營問題。我們將問題分為三類:業務、功能和性能。業務類問題包括商品無貨、頁面或券過期、商鋪下架等;功能類問題包括數據埋點缺失、風控失效、推薦降級等用戶無法直觀感受,但會產生嚴重后果的問題;性能類問題包括頁面 yslow 評分、狀態碼錯誤、接口響應超時等問題。
\\技術上,我們基于 Selenium ChomeDriver 實現對頁面的掃描,它提供了一套用于 Web 應用程序的自動化爬蟲工具。這里有幾個技術實現細節值得分享:
\\下面是一個簡單 demo:
\\\// 設置 Chromedriver 路徑\System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY,\ ? ? ? ? ? ? ? ? ? ?System.getProperty(\"user.dir\") + \"/drivers/chromedriver\");\// 啟用 ChromeDrvierService 持有瀏覽器進程\ChromeDriverService chromeDriverService = new ChromeDriverService.Builder()\ ? ? ? ? ? ? ? ? ? ?.withVerbose(true)\ ? ? ? ? ? ? ? ? ? ?.usingAnyFreePort()\ ? ? ? ? ? ? ? ? ? ?.build();\// 啟用 Headless 模式\ChromeOptions options = new ChromeOptions();\options.addArguments(\"--headless\");\\// 開啟 PERFORMANCE 日志采集\DesiredCapabilities cap = DesiredCapabilities.chrome();\LoggingPreferences logPrefs = new LoggingPreferences();\logPrefs.enable(LogType.PERFORMANCE, Level.ALL);\cap.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);\cap.setCapability(ChromeOptions.CAPABILITY, options);\\driver = new ChromeDriver(chromeDriverService, cap);\\動態編譯引擎 DynamicEngine 實時加載監控腳本
\\在監控的過程中,不同的業務需要關注的指標往往不同,且隨著促銷活動的進行不斷變化。比如,之前我們沒有對商品售罄狀態的監控,運營有這樣訴求時,要求我們必須馬上能在生產環境實現對商品狀態的監控。為了做到監控腳本的熱拔插,我們自己實現了動態腳本編譯引擎 DynamicEngine,能夠實時在生產環境增加監控模板,面對需求變化具備靈活的可擴展性。
\\要實現 DynamicEngine,基于 JavaCompiler 讀取源碼,編譯診斷,輸出 class。JavaClassObject 負責文件抽象,代表源代碼或者編譯后的 class。ClassFileManager 管理 JavaClassObject,負責 JavaClassObject 的創建和保存位置,根據 Java ClassLoader 的雙親委托模式,我們需要實現自己的 DynamicClassLoader,DynamicClassLoader 繼承自 URLClassLoader,將生成的 class 動態加載到 JVM。
\\\\圖 2. DynamicEngine 類依賴圖
\\Quartz 實現定時任務調度
\\定時任務的實現基于 Java Quartz,Quartz 是目前最為成熟, 使用最廣泛的 Java 任務調度框架。Quartz 運行時由 QuartzSchedulerThread 類作為主體,循環執行調度流程。JobStore 作為中間層,按照 quartz 的并發策略執行數據庫操作,完成主要的調度邏輯。JobRunShellFactory 負責實例化 JobDetail 對象,將其放入線程池運行。LockHandler 負責獲取 LOCKS 表中的數據庫鎖。
\\\\圖 3. Java Quartz 任務調度交互圖
\\先知的監控模式包括主動監控、被動監控和漫游監控三種。主動監控是運營在后臺直接配置的監控任務。被動監控是與業務系統打通,提供公共接入 API,運營頁面或者事件生成時自動構建監控任務。漫游監控的設計初衷借鑒了 Chaos Monkey 的思想,運營很難知道下一個出問題的是哪一個活動頁面,既然如此,我們建立了從流量入口頁開始的漫游任務,會不斷爬取鏈接建立任務來發現問題。不同的監控模式的集群是隔離的,避免任務占用資源互相影響。
\\\\圖 4. 先知平臺的任務調度
\\先知智能運營的場景應用
\\前面我們所闡述的監控掃描、腳本執行和定時任務調度方案,雖然能幫助運營發現線上問題,但解決問題仍需要運營的人工干預。在某些情況下,運營并不能及時完成頁面的修復和維護,需要自動化的運營方案。所以,先知不僅僅是一個針對運營的監控告警平臺,它還能自動化修復線上問題。
\\智能運營的設計思想是,先知與推薦系統、泰坦系統(運營內容管理平臺)打通。如下圖所示,我們以促銷商品售罄問題為例,當先知發現這個問題后,先判斷這個商品坑位是否允許降級,如果允許,則調用推薦系統,根據用戶信息推薦出與此款商品偏好類似的替代商品。在通知泰坦系統,將替代商品維護到這個坑位。這樣既保證了線上熱點坑位始終有貨可賣,又滿足了用戶的購物偏好,保證了用戶體驗。
\\\\圖 5. 先知智能運營的場景應用
\\總結? ??
\\目前,先知承擔了蘇寧易購所有線上運營頁面和活動的服務保障工作,日監控任務 10 萬余個,發現并解決問題 6400 余個,幫助運營迅速定位線上問題,平均縮短解決問題時間 30 分鐘,顯著提高了易購的線上服務質量。未來,蘇寧易購將致力于把先知打造成為開放的一站式線上服務質量保障平臺,大規模監控任務并發執行、海量數據分析、智慧運營服務化都將成為蘇寧易購新的技術研究和攻關課題。
\\作者簡介
\\朱羿全,南京航空航天大學碩士研究生畢業,蘇寧易購消費者研發中心高級技術經理,主要負責易購各系統架構優化與大促保障工作。先后參與了易購整站 Https 改造、蘇寧拼購架構改造、先知業務監控平臺建設等工作。專注于打造高可靠、高性能、高并發服務系統的技術研究。
總結
以上是生活随笔為你收集整理的看苏宁易购的运营保障体系如何hold住818大促的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: foreman源NO_PUBKEY 6F
- 下一篇: 利用HttpClient 获取网页数据j