国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

揭秘 ChunJun:如何實現(xiàn) e2e&session 日志隔離

這篇具有很好參考價值的文章主要介紹了揭秘 ChunJun:如何實現(xiàn) e2e&session 日志隔離。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本文將從 e2e 的基本介紹,e2e 的使用與擴(kuò)展,session 日志隔離三個維度為大家?guī)?ChunJun e2e & session 日志隔離的分享。

大量具體代碼和演示請看視頻教程??

視頻課程:

https://www.bilibili.com/video/BV1ru411P7oZ/?spm_id_from=333.999.0.0

課件獲?。?/p>

https://www.dtstack.com/resources/1052?src=szsm

ChunJun 為何選擇 e2e 測試

ChunJun 項目是基于 Flink 進(jìn)行擴(kuò)展,并開發(fā)了大量插件來支持?jǐn)?shù)據(jù)同步和 SQL 執(zhí)行,當(dāng)前支持的數(shù)據(jù)源插件已經(jīng)超過50個,所以如何保證各個插件的質(zhì)量是 ChunJun 非常迫切的需求。以下是兩種測試方式:

● 單元測試

· 目的:測試代碼的單個部分(例如函數(shù)、方法或類)以確保它們按預(yù)期工作

· 速度:通常非???,因為它們只測試小的代碼片段,并且經(jīng)常在隔離的環(huán)境中運行,不依賴外部資源

· 范圍:覆蓋范圍有限,雖然單元測試可以高效得捕獲代碼的邏輯錯誤,但它們不能檢測集成錯誤或復(fù)雜的交互問題

● 端到端測試(e2e測試)

· 目的:模擬真實場景來驗證整個系統(tǒng)的行為,它從用戶的角度測試應(yīng)用程序,確保所有組件(前端、后端、數(shù)據(jù)庫、其他服務(wù)等)一起工作

· 速度:相對較慢,因為它們經(jīng)常需要啟動整個應(yīng)用程序,與真實的數(shù)據(jù)庫或外部服務(wù)進(jìn)行交互

· 范圍:更全面地測試整個應(yīng)用程序的工作流程,它們可以捕獲在單元測試中可能被遺漏的錯誤,如集成問題、配置錯誤、網(wǎng)絡(luò)問題等

使用單元測試,大量歷史插件的單測補充,成本太大,且單測的質(zhì)量以及范圍等都很難把控。而 e2e 測試只需要編寫各種插件的腳本并直接運行,并根據(jù)任務(wù)結(jié)果來判斷對應(yīng)插件的可用性,這是一種比較方便并且更加全面的測試方法,所以我們選擇了增加 e2e 模塊來驗證各個插件。

e2e 的使用與擴(kuò)展

e2e 使用-模塊介紹

ChunJun-e2e 模塊如下圖所示:

揭秘 ChunJun:如何實現(xiàn) e2e&session 日志隔離

e2e 模塊主要分為3部分:

· containers 模塊:基于 TestContainer 擴(kuò)展的各個數(shù)據(jù)源 container

· test 模塊:e2e 測試的各個插件入口

· resources 里的 docker 模塊: 各個數(shù)據(jù)源的 DockFile

ChunJun-e2e 模塊整合了 ChunJun-client 模塊,主要是借助 TestContainer 在 Docker 環(huán)境中啟動 Flink 的 standlone 環(huán)境以及各個數(shù)據(jù)源。因此只需要編寫需要測試的 json 文件之后,通過 ChunJun-client 模塊快速提交任務(wù)到 standalone 集群中進(jìn)行任務(wù)的運行,并根據(jù)任務(wù)運行結(jié)果等信息來判斷任務(wù)是否通過。

當(dāng)前 ChunJun-e2e 模塊已經(jīng)支持了 MySQL、PgSQL、Oracle、FTP、EMQX 的測試,后續(xù)社區(qū)會持續(xù)性的補充 e2e 測試的插件。

e2e 使用-代碼分析

● ChunJunFlinkStandaloneTestEnvironment

· 內(nèi)部封裝了一個 Flink 環(huán)境

· 提交任務(wù)和等待任務(wù)結(jié)束的方法

內(nèi)置的 flinkStandaloneContainer 即為任務(wù)運行時所在的 flink standlone 集群。

揭秘 ChunJun:如何實現(xiàn) e2e&session 日志隔離

● 對 stream 插件的測試用例

test 方法里只需要 submitSyncJobOnStandLone 提交 json 腳本到 Flink 的 stabdlone 集群里,通過 waitUntilJobFinished 獲取任務(wù)結(jié)果并進(jìn)行判斷。

揭秘 ChunJun:如何實現(xiàn) e2e&session 日志隔離

e2e 使用-貢獻(xiàn) e2e 插件

貢獻(xiàn)貢獻(xiàn) e2e 插件的簡單流程:

· 編寫所需數(shù)據(jù)源的 DockerFile 文件

· 基于 TestContainer 和第一步的 DockerFile 創(chuàng)建對應(yīng)的數(shù)據(jù)源 container

· 編寫插件任務(wù) json 腳本

· 繼承 ChunjunFlinkStandaloneTestEnvironment,通過內(nèi)置的提交方法提交任務(wù)即可

揭秘 ChunJun:如何實現(xiàn) e2e&session 日志隔離

基于 TestContainer 進(jìn)行擴(kuò)展也是很簡單的,只需要繼承 GenericContainer 類,傳遞 DockerFile 文件路徑即可,TestContainer 對于 JDBC 類型數(shù)據(jù)源提供了 JdbcDatabaseContainer 抽象類。

框架所需要的環(huán)境 提交等接口都已經(jīng)在 ChunJunFlinkStandaloneTestEnvironment 提供了,只需要編寫對應(yīng)的數(shù)據(jù)源 DockerFile 和 json 腳本即可。

揭秘 ChunJun:如何實現(xiàn) e2e&session 日志隔離

session 日志隔離

session 日志隔離-介紹

Flink on session 場景下,如果 TaskManager 不關(guān)閉,那么這個 TaskManager 里的所有任務(wù)都會寫入同一個日志文件中,導(dǎo)致需要查看任務(wù)日志排查問題時,比較難查找到具體的每個任務(wù)日志。

如果 TaskManager 里的每個任務(wù)的日志都在不同的日志文件里,每個日志文件的名稱就是 jobid,那么在查看任務(wù)日志時只需要查看 jobid 的日志文件即可。

為了解決這個問題,袋鼠云內(nèi)部通過修改 Flink 源碼以及 Log4j 的擴(kuò)展,實現(xiàn)了 Flink on session 場景下,TaskManager 里每個任務(wù)的日志會寫入對應(yīng)的 jobid 日志文件里。

揭秘 ChunJun:如何實現(xiàn) e2e&session 日志隔離

Flink 源碼改動

TaskExecutor 在接受到任務(wù)之后,會轉(zhuǎn)為 Task 對象。Task 對象是一個 Runnable 實現(xiàn),內(nèi)部持有一個線程,然后通過其內(nèi)部線程執(zhí)行客戶代碼邏輯。

因此每個 Task 都由一個 Thread 對應(yīng),在 Task 整個生命周期里,其 Thread 和 Task 都是綁定的。因此在 Run 的時候,將 jobId 放入 ThreadLocal 里即可。

之后,我們需要在Flink 源碼中的org.apache.flink.runtime.taskmanager.Task#run里加上 MDC.put("jobId", jobId.toString()); 即可。

父子線程場景下需要加上下述參數(shù):

env.java.opts.taskmanager: "-DisThreadContextMapInheritable=true"
揭秘 ChunJun:如何實現(xiàn) e2e&session 日志隔離

Log4j 擴(kuò)展

Flink1.12 支持 Log4j2 進(jìn)行日志輸出,在日志隔離方案中通過擴(kuò)展 Log4j2 的 AbstractOutputStreamAppender,實現(xiàn)了通過一個自定義的 appender 來完成日志輸出。

自定義的 appender 可以根據(jù) MDC 里的 jobid 輸出到對應(yīng)的日志文件,因此其擴(kuò)展邏輯為根據(jù) MDC 里的 jobid 是否為空。如果不為空,則輸出到 jobid 對應(yīng)的文件,否則就是默認(rèn)的 taskmanager.log。

揭秘 ChunJun:如何實現(xiàn) e2e&session 日志隔離

最終日志隔離方案流程如下:

· 修改 Flink 源碼,增加 MDC.put("jobId", jobId.toString())

· 打包 Flink 源碼,將 Flink-dist 替換開源的 Flink-dist

· 基于 Log4j2 擴(kuò)展 appender,并打包后的 jar 放入 Flink 的 lib 目錄下

· 修改 Flink conf 目錄下的 log4j.properties 文件,將 RollingFileAppender 替換為自定義的擴(kuò)展 apped 類即可

《數(shù)棧產(chǎn)品白皮書》:https://www.dtstack.com/resources/1004?src=szsm

《數(shù)據(jù)治理行業(yè)實踐白皮書》下載地址:https://www.dtstack.com/resources/1001?src=szsm

想了解或咨詢更多有關(guān)袋鼠云大數(shù)據(jù)產(chǎn)品、行業(yè)解決方案、客戶案例的朋友,瀏覽袋鼠云官網(wǎng):https://www.dtstack.com/?src=szbky

同時,歡迎對大數(shù)據(jù)開源項目有興趣的同學(xué)加入「袋鼠云開源框架釘釘技術(shù)qun」,交流最新開源技術(shù)信息,qun號碼:30537511,項目地址:https://github.com/DTStack文章來源地址http://www.zghlxwxcb.cn/news/detail-709783.html

到了這里,關(guān)于揭秘 ChunJun:如何實現(xiàn) e2e&session 日志隔離的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【語音識別】WeNet:面向工業(yè)落地的E2E語音識別工具

    【語音識別】WeNet:面向工業(yè)落地的E2E語音識別工具

    1、參考資料 wenet-e2e/wenet Mozilla DeepSpeech yeyupiaoling/PaddlePaddle-DeepSpeech 2、快速搭建WeNet平臺 參考 WeNet中文文檔 下載官方提供的預(yù)訓(xùn)練模型,并啟動 docker 服務(wù),加載模型,提供 websocket 協(xié)議的語音識別服務(wù)。 Note : 這里的 $PWD = \\\"/home/wenet/model\\\" 。 一定要保證 預(yù)訓(xùn)練模型文件 的存

    2024年02月06日
    瀏覽(22)
  • 探索單元測試和 E2E 測試:提升軟件質(zhì)量的關(guān)鍵步驟(下)

    探索單元測試和 E2E 測試:提升軟件質(zhì)量的關(guān)鍵步驟(下)

    ?? 前端開發(fā)工程師(主業(yè))、技術(shù)博主(副業(yè))、已過CET6 ?? 阿珊和她的貓_CSDN個人主頁 ?? ??透呒墝n}作者、在??痛蛟旄哔|(zhì)量專欄《前端面試必備》 ?? 藍(lán)橋云課簽約作者、已在藍(lán)橋云課上架的前后端實戰(zhàn)課程《Vue.js 和 Egg.js 開發(fā)企業(yè)級健康管理項目》、《帶你從入

    2024年01月20日
    瀏覽(39)
  • [E2E Test] Python Behave Selenium 一文學(xué)會自動化測試

    [E2E Test] Python Behave Selenium 一文學(xué)會自動化測試

    本文將使用Python Behave與Selenium,和同學(xué)們一起認(rèn)識自動化測試,并附上完整的實踐教程。 項目源碼已上傳:CSDN 郭麻花 Azure Repo python-behave-selenium 1. 什么是E2E Test E2E即End-to-end,意思是從頭到尾的系統(tǒng)功能測試。它通過編寫自動化測試腳本,完全從用戶的角度出發(fā),驗證系統(tǒng)功

    2024年02月09日
    瀏覽(30)
  • 高級的E2EE——交叉簽名(區(qū)塊鏈密碼簽名)(第一篇-SAS)

    ? 如果你使用了上篇文章技術(shù),在客戶端中成功實現(xiàn)了端到端加密。那么恭喜你!這是真正值得驕傲的一步,也是值得慶祝的一步!但是,您可能已經(jīng)注意到,有些事情仍處于粗糙邊緣:您必須通過比較公鑰來手動驗證所有其他設(shè)備,解密密鑰不會在您的設(shè)備之間共享等。如

    2024年01月19日
    瀏覽(28)
  • 【測試與自動化】介紹-框架-Jest-覆蓋率-異步代碼-e2e-Vue測試

    【測試與自動化】介紹-框架-Jest-覆蓋率-異步代碼-e2e-Vue測試

    了解什么是軟件測試,以及自動化方式的測試 什么是軟件測試? 定義: 在規(guī)定的條件下對程序進(jìn)行操作,以發(fā)現(xiàn)程序錯誤,衡量軟件質(zhì)量,并對其是否能滿足設(shè)計要求進(jìn)行評估的過程。 目的: 促進(jìn)目標(biāo)鑒定軟件的正確性、完整性、安全性和質(zhì)量。 本質(zhì): 其實是對軟件的

    2024年02月16日
    瀏覽(18)
  • 技術(shù)干貨|如何利用 ChunJun 實現(xiàn)數(shù)據(jù)實時同步?

    技術(shù)干貨|如何利用 ChunJun 實現(xiàn)數(shù)據(jù)實時同步?

    實時同步是 ChunJun 的?個重要特性,指在數(shù)據(jù)同步過程中,數(shù)據(jù)源與?標(biāo)系統(tǒng)之間的數(shù)據(jù)傳輸和更新?乎在同?時間進(jìn)?。 在實時同步場景中我們更加關(guān)注源端,當(dāng)源系統(tǒng)中的數(shù)據(jù)發(fā)?變化時,這些變化會?即傳輸并應(yīng)?到?標(biāo)系統(tǒng),以保證兩個系統(tǒng)中的數(shù)據(jù)保持?致。這個

    2023年04月24日
    瀏覽(18)
  • 技術(shù)干貨|如何利用 ChunJun 實現(xiàn)數(shù)據(jù)離線同步?

    技術(shù)干貨|如何利用 ChunJun 實現(xiàn)數(shù)據(jù)離線同步?

    ChunJun 是?款穩(wěn)定、易?、?效、批流?體的數(shù)據(jù)集成框架,基于計算引擎 Flink 實現(xiàn)多種異構(gòu)數(shù)據(jù)源之間的數(shù)據(jù)同步與計算。ChunJun 可以把不同來源、格式、特點性質(zhì)的數(shù)據(jù)在邏輯上或物理上有機地集中,從?為企業(yè)提供全?的數(shù)據(jù)共享,目前已在上千家公司部署且穩(wěn)定運?

    2024年02月05日
    瀏覽(17)
  • 【0214】postgres后端進(jìn)程session退出,如何通過日志分析其會話信息

    默認(rèn)情況下,新建一個postgres后端進(jìn)程會話(session),或是postgres進(jìn)程正常/異常退出時,日志中沒有很明顯的記錄用于說明postgres后端進(jìn)程的會話狀態(tài)信息。因為默認(rèn)情況下, postgresql.conf 配置文件中兩個配置選項: log_connections 和 log_disconnections 默認(rèn)級別是 off 。

    2024年02月13日
    瀏覽(19)
  • 【Node.js實戰(zhàn)】一文帶你開發(fā)博客項目之Koa2重構(gòu)(實現(xiàn)session、開發(fā)路由、聯(lián)調(diào)、日志)

    【Node.js實戰(zhàn)】一文帶你開發(fā)博客項目之Koa2重構(gòu)(實現(xiàn)session、開發(fā)路由、聯(lián)調(diào)、日志)

    個人簡介 ?? 個人主頁: 前端雜貨鋪 ???♂? 學(xué)習(xí)方向: 主攻前端方向,也會涉及到服務(wù)端 ?? 個人狀態(tài): 在校大學(xué)生一枚,已拿多個前端 offer(秋招) ?? 未來打算: 為中國的工業(yè)軟件事業(yè)效力n年 ?? 推薦學(xué)習(xí):??前端面試寶典 ??Vue2 ??Vue3 ??Vue2Vue3項目實戰(zhàn) ??

    2024年01月16日
    瀏覽(33)
  • 揭秘華為研發(fā)代碼大模型是如何實現(xiàn)的

    本文分享自華為云社區(qū)《風(fēng)靡萬千軟件開發(fā)者:揭秘華為研發(fā)代碼大模型是如何實現(xiàn)的?》,作者: DevAI 。 秉持“自己的降落傘,自己先跳”的原則,由公司裝備部門牽頭,攜手華為云PaaS作為基礎(chǔ)能力提供方,與公司各產(chǎn)品線共同研發(fā)面向產(chǎn)業(yè)的代碼大模型。在研發(fā)過程中

    2024年02月05日
    瀏覽(13)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包