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