日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

看苏宁易购的运营保障体系如何hold住818大促

發(fā)布時(shí)間:2024/4/13 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 看苏宁易购的运营保障体系如何hold住818大促 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

運(yùn)營(yíng)質(zhì)量的好壞關(guān)系著用戶(hù)的體驗(yàn)。在日常的業(yè)務(wù)運(yùn)營(yíng)過(guò)程中,商品無(wú)貨、頁(yè)面或券過(guò)期、商鋪下架、視頻無(wú)法播放等問(wèn)題都嚴(yán)重影響用戶(hù)體驗(yàn)。如果僅憑運(yùn)營(yíng)的人工監(jiān)控和維護(hù)來(lái)保證服務(wù)質(zhì)量,不僅效率低,而且效果也不佳。業(yè)務(wù)的需求是驅(qū)使技術(shù)革新的原動(dòng)力。818 前夕,面向蘇寧易購(gòu)線(xiàn)上運(yùn)營(yíng)質(zhì)量保障的先知平臺(tái)正式上線(xiàn)。

\\

先知平臺(tái)的設(shè)計(jì)理念基于“As was foreseen”,正如預(yù)想的那樣,線(xiàn)上運(yùn)營(yíng)過(guò)程的服務(wù)質(zhì)量是完全可控制的。先知運(yùn)營(yíng)保障體系包括線(xiàn)上故障發(fā)現(xiàn)、應(yīng)急響應(yīng)、故障定位、快速恢復(fù),形成完整閉環(huán),能自動(dòng)化幫助運(yùn)營(yíng)修復(fù)線(xiàn)上問(wèn)題。

\\

下面就來(lái)看一看先知平臺(tái)背后的技術(shù)實(shí)現(xiàn)細(xì)節(jié)。

\\

\\

圖 1. 基于先知的運(yùn)營(yíng)保障體系

\\

基于 Selenium ChomeDriver 的性能監(jiān)控

\\

先知平臺(tái)最基本的功能是模擬用戶(hù)(帶有真實(shí)用戶(hù)會(huì)話(huà)信息)來(lái)對(duì)頁(yè)面進(jìn)行掃描(爬蟲(chóng)),在瀏覽和購(gòu)物的過(guò)程中發(fā)現(xiàn)潛在的運(yùn)營(yíng)問(wèn)題。我們將問(wèn)題分為三類(lèi):業(yè)務(wù)、功能和性能。業(yè)務(wù)類(lèi)問(wèn)題包括商品無(wú)貨、頁(yè)面或券過(guò)期、商鋪下架等;功能類(lèi)問(wèn)題包括數(shù)據(jù)埋點(diǎn)缺失、風(fēng)控失效、推薦降級(jí)等用戶(hù)無(wú)法直觀感受,但會(huì)產(chǎn)生嚴(yán)重后果的問(wèn)題;性能類(lèi)問(wèn)題包括頁(yè)面 yslow 評(píng)分、狀態(tài)碼錯(cuò)誤、接口響應(yīng)超時(shí)等問(wèn)題。

\\

技術(shù)上,我們基于 Selenium ChomeDriver 實(shí)現(xiàn)對(duì)頁(yè)面的掃描,它提供了一套用于 Web 應(yīng)用程序的自動(dòng)化爬蟲(chóng)工具。這里有幾個(gè)技術(shù)實(shí)現(xiàn)細(xì)節(jié)值得分享:

\\
  • ChomeDriver 使用的是 Headless 模式。Headless Chrome 是 Chrome 瀏覽器的無(wú)界面形態(tài),可以在不打開(kāi)瀏覽器的前提下,使用所有 Chrome 支持的特性運(yùn)行你的程序。相比于 UI 操作,Headless 模式大幅提高了我們的掃描效率和性能。\\t
  • 實(shí)現(xiàn)了針對(duì)頁(yè)面性能數(shù)據(jù)的采集。一般的爬蟲(chóng)主要是針對(duì)功能邏輯的驗(yàn)證,很少覆蓋頁(yè)面和接口的加載性能。我們參考谷歌的 Chrome DevTools Protocol,開(kāi)啟 ChromeDriver 的 PERFORMANCE 日志,可以收集到頁(yè)面交互過(guò)程中的頁(yè)面(Page)性能和網(wǎng)絡(luò)(Network)性能數(shù)據(jù)。\\t
  • 啟用 ChromeDriverService。這完全是出于提高測(cè)試性能的考慮。我們知道每次創(chuàng)建一個(gè) ChromeDriver,完成測(cè)試以后再釋放掉這個(gè)對(duì)象,等下次來(lái)了一個(gè)新的測(cè)試,仍要再新建一個(gè)對(duì)象,如此反復(fù)。這相當(dāng)于每次都打開(kāi)瀏覽器,再關(guān)閉瀏覽器,再打開(kāi)瀏覽器。這種實(shí)現(xiàn)方式并不利于高并發(fā)大規(guī)模的使用。我們希望如 Java 的池化設(shè)計(jì)思想一樣,初始化生成多個(gè)持久化的瀏覽器對(duì)象,后面每次測(cè)試都用這些瀏覽器對(duì)象進(jìn)行,這樣會(huì)極大提升測(cè)試性能,避免了往復(fù)創(chuàng)建和關(guān)閉 Chrome 進(jìn)程的過(guò)程。因此引入 ChromeDriverService,ChromeDriverService 是一個(gè)管理 ChromeDriver server 的的持久化實(shí)例。\
  • 下面是一個(gè)簡(jiǎn)單 demo:

    \\\// 設(shè)置 Chromedriver 路徑\System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY,\ ? ? ? ? ? ? ? ? ? ?System.getProperty(\"user.dir\") + \"/drivers/chromedriver\");\// 啟用 ChromeDrvierService 持有瀏覽器進(jìn)程\ChromeDriverService chromeDriverService = new ChromeDriverService.Builder()\ ? ? ? ? ? ? ? ? ? ?.withVerbose(true)\ ? ? ? ? ? ? ? ? ? ?.usingAnyFreePort()\ ? ? ? ? ? ? ? ? ? ?.build();\// 啟用 Headless 模式\ChromeOptions options = new ChromeOptions();\options.addArguments(\"--headless\");\\// 開(kāi)啟 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);\\

    動(dòng)態(tài)編譯引擎 DynamicEngine 實(shí)時(shí)加載監(jiān)控腳本

    \\

    在監(jiān)控的過(guò)程中,不同的業(yè)務(wù)需要關(guān)注的指標(biāo)往往不同,且隨著促銷(xiāo)活動(dòng)的進(jìn)行不斷變化。比如,之前我們沒(méi)有對(duì)商品售罄狀態(tài)的監(jiān)控,運(yùn)營(yíng)有這樣訴求時(shí),要求我們必須馬上能在生產(chǎn)環(huán)境實(shí)現(xiàn)對(duì)商品狀態(tài)的監(jiān)控。為了做到監(jiān)控腳本的熱拔插,我們自己實(shí)現(xiàn)了動(dòng)態(tài)腳本編譯引擎 DynamicEngine,能夠?qū)崟r(shí)在生產(chǎn)環(huán)境增加監(jiān)控模板,面對(duì)需求變化具備靈活的可擴(kuò)展性。

    \\

    要實(shí)現(xiàn) DynamicEngine,基于 JavaCompiler 讀取源碼,編譯診斷,輸出 class。JavaClassObject 負(fù)責(zé)文件抽象,代表源代碼或者編譯后的 class。ClassFileManager 管理 JavaClassObject,負(fù)責(zé) JavaClassObject 的創(chuàng)建和保存位置,根據(jù) Java ClassLoader 的雙親委托模式,我們需要實(shí)現(xiàn)自己的 DynamicClassLoader,DynamicClassLoader 繼承自 URLClassLoader,將生成的 class 動(dòng)態(tài)加載到 JVM。

    \\

    \\

    圖 2. DynamicEngine 類(lèi)依賴(lài)圖

    \\

    Quartz 實(shí)現(xiàn)定時(shí)任務(wù)調(diào)度

    \\

    定時(shí)任務(wù)的實(shí)現(xiàn)基于 Java Quartz,Quartz 是目前最為成熟, 使用最廣泛的 Java 任務(wù)調(diào)度框架。Quartz 運(yùn)行時(shí)由 QuartzSchedulerThread 類(lèi)作為主體,循環(huán)執(zhí)行調(diào)度流程。JobStore 作為中間層,按照 quartz 的并發(fā)策略執(zhí)行數(shù)據(jù)庫(kù)操作,完成主要的調(diào)度邏輯。JobRunShellFactory 負(fù)責(zé)實(shí)例化 JobDetail 對(duì)象,將其放入線(xiàn)程池運(yùn)行。LockHandler 負(fù)責(zé)獲取 LOCKS 表中的數(shù)據(jù)庫(kù)鎖。

    \\

    \\

    圖 3. Java Quartz 任務(wù)調(diào)度交互圖

    \\

    先知的監(jiān)控模式包括主動(dòng)監(jiān)控、被動(dòng)監(jiān)控和漫游監(jiān)控三種。主動(dòng)監(jiān)控是運(yùn)營(yíng)在后臺(tái)直接配置的監(jiān)控任務(wù)。被動(dòng)監(jiān)控是與業(yè)務(wù)系統(tǒng)打通,提供公共接入 API,運(yùn)營(yíng)頁(yè)面或者事件生成時(shí)自動(dòng)構(gòu)建監(jiān)控任務(wù)。漫游監(jiān)控的設(shè)計(jì)初衷借鑒了 Chaos Monkey 的思想,運(yùn)營(yíng)很難知道下一個(gè)出問(wèn)題的是哪一個(gè)活動(dòng)頁(yè)面,既然如此,我們建立了從流量入口頁(yè)開(kāi)始的漫游任務(wù),會(huì)不斷爬取鏈接建立任務(wù)來(lái)發(fā)現(xiàn)問(wèn)題。不同的監(jiān)控模式的集群是隔離的,避免任務(wù)占用資源互相影響。

    \\

    \\

    圖 4. 先知平臺(tái)的任務(wù)調(diào)度

    \\

    先知智能運(yùn)營(yíng)的場(chǎng)景應(yīng)用

    \\

    前面我們所闡述的監(jiān)控掃描、腳本執(zhí)行和定時(shí)任務(wù)調(diào)度方案,雖然能幫助運(yùn)營(yíng)發(fā)現(xiàn)線(xiàn)上問(wèn)題,但解決問(wèn)題仍需要運(yùn)營(yíng)的人工干預(yù)。在某些情況下,運(yùn)營(yíng)并不能及時(shí)完成頁(yè)面的修復(fù)和維護(hù),需要自動(dòng)化的運(yùn)營(yíng)方案。所以,先知不僅僅是一個(gè)針對(duì)運(yùn)營(yíng)的監(jiān)控告警平臺(tái),它還能自動(dòng)化修復(fù)線(xiàn)上問(wèn)題。

    \\

    智能運(yùn)營(yíng)的設(shè)計(jì)思想是,先知與推薦系統(tǒng)、泰坦系統(tǒng)(運(yùn)營(yíng)內(nèi)容管理平臺(tái))打通。如下圖所示,我們以促銷(xiāo)商品售罄問(wèn)題為例,當(dāng)先知發(fā)現(xiàn)這個(gè)問(wèn)題后,先判斷這個(gè)商品坑位是否允許降級(jí),如果允許,則調(diào)用推薦系統(tǒng),根據(jù)用戶(hù)信息推薦出與此款商品偏好類(lèi)似的替代商品。在通知泰坦系統(tǒng),將替代商品維護(hù)到這個(gè)坑位。這樣既保證了線(xiàn)上熱點(diǎn)坑位始終有貨可賣(mài),又滿(mǎn)足了用戶(hù)的購(gòu)物偏好,保證了用戶(hù)體驗(yàn)。

    \\

    \\

    圖 5. 先知智能運(yùn)營(yíng)的場(chǎng)景應(yīng)用

    \\

    總結(jié)? ??

    \\

    目前,先知承擔(dān)了蘇寧易購(gòu)所有線(xiàn)上運(yùn)營(yíng)頁(yè)面和活動(dòng)的服務(wù)保障工作,日監(jiān)控任務(wù) 10 萬(wàn)余個(gè),發(fā)現(xiàn)并解決問(wèn)題 6400 余個(gè),幫助運(yùn)營(yíng)迅速定位線(xiàn)上問(wèn)題,平均縮短解決問(wèn)題時(shí)間 30 分鐘,顯著提高了易購(gòu)的線(xiàn)上服務(wù)質(zhì)量。未來(lái),蘇寧易購(gòu)將致力于把先知打造成為開(kāi)放的一站式線(xiàn)上服務(wù)質(zhì)量保障平臺(tái),大規(guī)模監(jiān)控任務(wù)并發(fā)執(zhí)行、海量數(shù)據(jù)分析、智慧運(yùn)營(yíng)服務(wù)化都將成為蘇寧易購(gòu)新的技術(shù)研究和攻關(guān)課題。

    \\

    作者簡(jiǎn)介

    \\

    朱羿全,南京航空航天大學(xué)碩士研究生畢業(yè),蘇寧易購(gòu)消費(fèi)者研發(fā)中心高級(jí)技術(shù)經(jīng)理,主要負(fù)責(zé)易購(gòu)各系統(tǒng)架構(gòu)優(yōu)化與大促保障工作。先后參與了易購(gòu)整站 Https 改造、蘇寧拼購(gòu)架構(gòu)改造、先知業(yè)務(wù)監(jiān)控平臺(tái)建設(shè)等工作。專(zhuān)注于打造高可靠、高性能、高并發(fā)服務(wù)系統(tǒng)的技術(shù)研究。

    總結(jié)

    以上是生活随笔為你收集整理的看苏宁易购的运营保障体系如何hold住818大促的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。