哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

論配置化系統(tǒng)的配置流程

Linux愛好者 ? 來源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2021-03-31 14:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

描述

很多業(yè)務(wù)場(chǎng)景固定、不那么偏向“業(yè)務(wù)”的系統(tǒng)如果遇到靠譜的工程師最終會(huì)走向配置化。達(dá)到配置化的先決條件是 系統(tǒng)內(nèi)部有個(gè)”引擎“模塊,引擎讀取配置信息把業(yè)務(wù)流程生成出執(zhí)行計(jì)劃,這個(gè)執(zhí)行計(jì)劃根據(jù)業(yè)務(wù)形態(tài)可以是 DAG、鏈表、樹或是其他。有了這套系統(tǒng),日常開發(fā)就變成寫配置+豐富系統(tǒng)能力了。

舉個(gè)例子:

“用戶每次下單后統(tǒng)計(jì)其當(dāng)天完單量,并發(fā)給下游營銷系統(tǒng)其總完單量信息。下游營銷系統(tǒng)會(huì)根據(jù)用戶的完單量推送優(yōu)惠策略。

這個(gè)業(yè)務(wù)需求抽象后可以用下圖表示業(yè)務(wù)流程,黃色方塊主要和存儲(chǔ)打交道,藍(lán)色方塊是純計(jì)算流程。

論配置化系統(tǒng)的配置流程

這整個(gè)流程完全可以用配置化方式解決:

MQ消息的ETL在配置中描述需要的字段的path信息解析;

黃色方塊的operator主要操作存儲(chǔ),需要在配置中描述數(shù)據(jù)的存儲(chǔ)以及獲取相關(guān)的信息;

藍(lán)色方塊的operator是純計(jì)算流程,配置中描述schema格式即可;

最后再配個(gè)轉(zhuǎn)發(fā)mq消息的配置,不到一小時(shí)支持了一個(gè)看起來有點(diǎn)復(fù)雜的業(yè)務(wù)需求,此時(shí)你就可以美滋滋的寫周報(bào)去了~

整個(gè)流程看起來無比絲滑,但是配置化系統(tǒng)是銀彈嗎?繼續(xù)探究一下所謂的”配置“。

咋存

第一個(gè)問題是系統(tǒng)的配置存在哪里。

配置化系統(tǒng)的本質(zhì)是:引擎解析配置信息,生成operator執(zhí)行計(jì)劃操作DB和計(jì)算行為。程序員通過提前寫好通用operator,支持業(yè)務(wù)時(shí)不上線、不寫定制代碼,只寫配置信息就可以支持業(yè)務(wù),一定程度上提高了開發(fā)效率。

配置信息可以選擇存到db或是file里。如果我們目的之一是不上線即可支持業(yè)務(wù),那把配置信息寫到文件里就不是個(gè)好主意,因?yàn)樵诖a中更新文件后還得經(jīng)過上線流程,這樣會(huì)降低效率,所以把配置存到db里。

把配置文件存入像MySQL這樣的db里,還有其他好處:

前面例子中講到了完單量這個(gè)業(yè)務(wù)流程的配置信息,配置信息可以當(dāng)成一個(gè)API供上游調(diào)用,這樣的API是可以復(fù)用的,當(dāng)系統(tǒng)里有成千上萬的API后,若沒有一套管理系統(tǒng)來管理元信息,那幾乎就是災(zāi)難了。配置的元信息存到MySQL后,你可以很快樂的寫一些管理接口管理配置。

基于MySQL的備份機(jī)制還可以做配置信息備份,以防不測(cè)。

咋配

第二個(gè)問題是 配置=簡單嗎?

有了配置化系統(tǒng)之后,開發(fā)日常的工作就變成了寫配置,然而在mysql里通過SQL寫配置并不一定比寫代碼輕松愉快。。。

文章前面的例子模型可以抽象成一個(gè)形如鏈表的pipline,這樣看起來還比較簡單,但是現(xiàn)實(shí)中很多業(yè)務(wù)比這個(gè)要復(fù)雜多了,很多業(yè)務(wù)抽象出來是個(gè)好幾層的樹型結(jié)構(gòu),這種東西靠人寫SQL描述執(zhí)行計(jì)劃并不一定比寫代碼簡單多少。稍微拓展一下上面的例子:

“用戶每次完單后統(tǒng)計(jì)其總完單量,完單量達(dá)到不同閾值后給用戶下發(fā)不同的成就。

這個(gè)API的模型如下圖所示,它采用所謂的lambda架構(gòu),在離線中計(jì)算用戶T+1的總單量,同時(shí)根據(jù)離線總單量產(chǎn)出日期dt 補(bǔ)充在線單量,最終把兩部分?jǐn)?shù)據(jù)加起來返回給業(yè)務(wù)方結(jié)果。

論配置化系統(tǒng)的配置流程

為啥要采用這樣的架構(gòu)呢。由于離線數(shù)據(jù)的產(chǎn)出時(shí)間不固定,所以需要一個(gè)dt字段做標(biāo)識(shí)。

舉個(gè)例子,現(xiàn)在是3月20號(hào)凌晨1點(diǎn)整,此時(shí)19號(hào)的離線任務(wù)沒有跑完,此時(shí)單量計(jì)算規(guī)則為:

“用戶總完單量 = 18號(hào)總單量(離線)+19號(hào)當(dāng)天單量(在線) + 20號(hào)當(dāng)天單量(在線)。

若現(xiàn)在8點(diǎn)鐘,離線任務(wù)跑完了,此時(shí)單量計(jì)算規(guī)則為:

“用戶總完單量 = 19號(hào)總單量(離線) + 20號(hào)當(dāng)天單量(在線)。

上面這套流程已經(jīng)比較復(fù)雜了,你可以想一下這塊該如何配置,再想想如何通過SQL去描述配置。如果業(yè)務(wù)方還想在API中增加判定邏輯,比如 單量超過500單就通知下游給用戶發(fā)個(gè)章,那配置起來就更復(fù)雜了。所以把配置存到管理平臺(tái)后,還需要在平臺(tái)上搞一個(gè)牛逼的前端頁面,讓開發(fā)同學(xué)可以在界面上勾勾選,拖拖拽拽,把配置描述出來,而且支持REPL讓用戶可以debug。

咋保證HA

現(xiàn)在有了管理系統(tǒng)+MySQL去管理配置就萬事大吉了嗎?

萬事總有個(gè)意外。業(yè)務(wù)迭代過程中,系統(tǒng)開發(fā)一般會(huì)比平臺(tái)開發(fā)先行。比如你為這套牛逼的配置系統(tǒng)增加了一個(gè)feature,在這個(gè)feature集成到平臺(tái)之前,還是得寫SQL做需求。這其實(shí)有很大風(fēng)險(xiǎn)的:如果你SQL寫錯(cuò)了,在線下沒復(fù)現(xiàn)出來,業(yè)務(wù)比較著急,上線時(shí)候沒灰度就上全量集群了,系統(tǒng)就崩了~此時(shí)你慌得一批,趕緊寫了個(gè)delete的SQL去刪除那行配置,如果這個(gè)delete恰好沒加條件,且你的MySQL中沒配置SQL_SAFE_UPDATES變量,那恭喜你,這一趟折騰下來系統(tǒng)不可用時(shí)間起碼半個(gè)小時(shí),可以準(zhǔn)備跑路了~

前面那段是我編的,只是要說明需要保證配置的HA(high availability)。

我們寫代碼時(shí)會(huì)使用git來做版本控制,且像golang這種編譯型語言還會(huì)有編譯器來幫你檢查代碼是否有語法錯(cuò)誤。如果配置也像代碼一樣,那該有多好啊:

論配置化系統(tǒng)的配置流程

實(shí)際上這兩部分都是可以達(dá)到的,

編譯檢查方面:配置信息一般使用json格式表示,所謂編譯檢查一方面可以檢查json格式是否正確,另一方面可以根據(jù)業(yè)務(wù)特性檢查json配置是否符合規(guī)范。

版本控制方面:前些日子逛Github時(shí)我發(fā)現(xiàn)了一個(gè)有趣的庫:https://github.com/dolthub/dolt??匆幌滤慕榻B:

“Dolt is a SQL database that you can fork, clone, branch, merge, push and pull just like a git repository. Connect to Dolt just like any MySQL database to run queries or update the data using SQL commands. Use the command line interface to import CSV files, commit your changes, push them to a remote, or merge your teammate‘s changes.

這玩意可以視為一個(gè)支持SQL協(xié)議和Git協(xié)議的數(shù)據(jù)庫,支持git就有趣多了,我們所有關(guān)于配置的更改記錄都有版本信息,基于這個(gè)庫封裝出API并集成在管理平臺(tái)中,前端渲染一個(gè)酷炫版本信息頁面。我們就可以通過點(diǎn)點(diǎn)點(diǎn)進(jìn)行g(shù)it reset操作了。

對(duì)于配置本身,可以有一些方式來保證高可用,在系統(tǒng)內(nèi)部,同樣可以做一些兜底操作,如下圖所示:

論配置化系統(tǒng)的配置流程

責(zé)任編輯:lq6

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    2476

    瀏覽量

    67022
  • ETL
    ETL
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    10148

原文標(biāo)題:論配置化系統(tǒng)的配置

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    RK3576 單板機(jī)系統(tǒng)使用手冊(cè):配置、升級(jí)與組件安裝指南(三)

    本文為創(chuàng)龍科技RK3576 單板機(jī)系統(tǒng)使用指南,全面覆蓋系統(tǒng)基礎(chǔ)配置、升級(jí)流程與組件安裝。詳解內(nèi)存存儲(chǔ)分區(qū)、網(wǎng)絡(luò)靜態(tài) IP 配置、OTA/U
    的頭像 發(fā)表于 04-07 11:40 ?147次閱讀
    RK3576 單板機(jī)<b class='flag-5'>系統(tǒng)</b>使用手冊(cè):<b class='flag-5'>配置</b>、升級(jí)與組件安裝指南(三)

    RK3576 單板機(jī)系統(tǒng)使用手冊(cè):配置、升級(jí)與組件安裝指南(二)

    本文為創(chuàng)龍科技RK3576 單板機(jī)系統(tǒng)使用指南,全面覆蓋系統(tǒng)基礎(chǔ)配置、升級(jí)流程與組件安裝。詳解內(nèi)存存儲(chǔ)分區(qū)、網(wǎng)絡(luò)靜態(tài) IP 配置、OTA/U
    的頭像 發(fā)表于 04-03 11:39 ?658次閱讀
    RK3576 單板機(jī)<b class='flag-5'>系統(tǒng)</b>使用手冊(cè):<b class='flag-5'>配置</b>、升級(jí)與組件安裝指南(二)

    RK3576 單板機(jī)系統(tǒng)使用手冊(cè):配置、升級(jí)與組件安裝指南(一)

    本文為創(chuàng)龍科技RK3576 單板機(jī)系統(tǒng)使用指南,全面覆蓋系統(tǒng)基礎(chǔ)配置、升級(jí)流程與組件安裝。詳解內(nèi)存存儲(chǔ)分區(qū)、網(wǎng)絡(luò)靜態(tài) IP 配置、OTA/U
    的頭像 發(fā)表于 04-02 10:46 ?204次閱讀
    RK3576 單板機(jī)<b class='flag-5'>系統(tǒng)</b>使用手冊(cè):<b class='flag-5'>配置</b>、升級(jí)與組件安裝指南(一)

    云臺(tái)電機(jī)驅(qū)動(dòng)系統(tǒng)載波參數(shù)配置與調(diào)試

    核心參數(shù)(頻率、載波比、死區(qū)時(shí)間等)的配置原則、場(chǎng)景取值標(biāo)準(zhǔn),詳細(xì)拆解從硬件適配到軟件調(diào)試的全流程步驟,并針對(duì)常見問題提供排查方案,為工程技術(shù)人員提供標(biāo)準(zhǔn)的參數(shù)
    的頭像 發(fā)表于 03-06 15:11 ?334次閱讀

    利用Last Log(Ramoops)排查系統(tǒng)問題:配置與實(shí)踐指南

    Linux 內(nèi)核的ramoops機(jī)制實(shí)現(xiàn))可在系統(tǒng)異常時(shí)保存核心日志,為事后故障分析提供關(guān)鍵依據(jù)。本文將詳細(xì)介紹其配置方法與問題排查實(shí)踐,并通過具體案例演示實(shí)戰(zhàn)流程。
    的頭像 發(fā)表于 02-05 13:54 ?486次閱讀
    利用Last Log(Ramoops)排查<b class='flag-5'>系統(tǒng)</b>問題:<b class='flag-5'>配置</b>與實(shí)踐指南

    國民技術(shù)發(fā)布N32Cube芯片配置與初始代碼生成工具

    1月30日,國民技術(shù)(NSING)正式發(fā)布N32Cube——芯片配置與初始代碼生成工具,讓時(shí)鐘、引腳與外設(shè)的配置一目了然、輕松上手!
    的頭像 發(fā)表于 02-02 15:26 ?890次閱讀
    國民技術(shù)發(fā)布N32Cube芯片<b class='flag-5'>配置</b>與初始<b class='flag-5'>化</b>代碼生成工具

    RK3562單板機(jī)系統(tǒng)使用與開發(fā)手冊(cè):基礎(chǔ)操作、升級(jí)部署與工具鏈配置(一)

    、Docker、OpenCV 等常用組件的安裝方法。文檔適配 Windows 與 Ubuntu 開發(fā)環(huán)境,步驟規(guī)范、實(shí)操性強(qiáng)。創(chuàng)龍科技通過標(biāo)準(zhǔn)流程,幫助開發(fā)者快速掌握系統(tǒng)運(yùn)維與功能拓展技能,適用于嵌入式開發(fā)與工業(yè)控制場(chǎng)景。
    的頭像 發(fā)表于 01-27 15:05 ?362次閱讀
    RK3562單板機(jī)<b class='flag-5'>系統(tǒng)</b>使用與開發(fā)手冊(cè):基礎(chǔ)操作、升級(jí)部署與工具鏈<b class='flag-5'>配置</b>(一)

    掌握 LuatIO:GPIO 復(fù)用模式初始配置流程解析

    在使用 LuatIO 進(jìn)行嵌入式應(yīng)用開發(fā)時(shí),合理配置 GPIO 的復(fù)用功能是實(shí)現(xiàn)外設(shè)控制的前提。本文全面解析 GPIO 引腳由普通 IO 轉(zhuǎn)換為復(fù)用功能引腳的初始流程,包括時(shí)鐘使能、模式選擇、速度
    的頭像 發(fā)表于 01-23 15:28 ?2391次閱讀
    掌握 LuatIO:GPIO 復(fù)用模式初始<b class='flag-5'>化</b><b class='flag-5'>配置</b>全<b class='flag-5'>流程</b>解析

    電能質(zhì)量在線監(jiān)測(cè)裝置的系統(tǒng)運(yùn)行配置參數(shù)有哪些?

    系統(tǒng)運(yùn)行配置參數(shù)是控制裝置工作模式、資源調(diào)度、故障應(yīng)對(duì)、長期穩(wěn)定運(yùn)行的核心參數(shù),直接決定裝置如何適配應(yīng)用場(chǎng)景(如無人值守、低功耗、高頻監(jiān)測(cè)),確保采樣、存儲(chǔ)、通信等核心功能有序執(zhí)行。以下是分類詳解
    的頭像 發(fā)表于 12-17 14:18 ?502次閱讀

    開啟指尖配置智能感知新時(shí)代

    HLK-LD6004雷達(dá)模組,海凌科正式推出移動(dòng)端APP配置工具,支持Android與iOS系統(tǒng)。將原本需要通過電腦GUI工具的復(fù)雜配置流程,簡化至一部手機(jī)即可完成,極大提升了開發(fā)調(diào)試
    的頭像 發(fā)表于 11-24 11:07 ?975次閱讀
    開啟指尖<b class='flag-5'>配置</b>智能感知新時(shí)代

    恩智浦配置工具助力嵌入式系統(tǒng)設(shè)計(jì)

    設(shè)計(jì)嵌入式系統(tǒng)需要硬件和軟件之間的無縫協(xié)調(diào)。恩智浦配置工具是一款全面且用戶友好的解決方案,旨在幫助開發(fā)人員簡化系統(tǒng)設(shè)置流程,加快開發(fā)進(jìn)程并減少潛在錯(cuò)誤。
    的頭像 發(fā)表于 09-22 16:37 ?2076次閱讀

    GraniStudio:IO初始以及IO資源配置例程

    1.文件運(yùn)行 導(dǎo)入工程 雙擊運(yùn)行桌面GraniStudio.exe。 通過引導(dǎo)界面導(dǎo)入IO初始以及IO資源配置例程,點(diǎn)擊導(dǎo)入按鈕。 打開IO初始以及IO資源配置例程所在路徑,選中I
    的頭像 發(fā)表于 08-22 17:34 ?1056次閱讀
    GraniStudio:IO初始<b class='flag-5'>化</b>以及IO資源<b class='flag-5'>配置</b>例程

    Linux系統(tǒng)中網(wǎng)絡(luò)配置詳解

    網(wǎng)絡(luò)配置是Linux系統(tǒng)運(yùn)維中的核心技能之一。正確理解和配置子網(wǎng)掩碼、網(wǎng)關(guān)等網(wǎng)絡(luò)參數(shù),直接影響系統(tǒng)的網(wǎng)絡(luò)連通性和性能。本文將深入探討Linux系統(tǒng)
    的頭像 發(fā)表于 07-17 11:01 ?1376次閱讀

    Jtti.ccLinux基礎(chǔ)運(yùn)維實(shí)戰(zhàn)詳細(xì)解讀網(wǎng)絡(luò)配置和用戶管理與互信設(shè)置

    Linux系統(tǒng)管理中,網(wǎng)絡(luò)連通性、用戶權(quán)限控制與主機(jī)互信是核心運(yùn)維能力。本文以CentOS/Ubuntu為例,系統(tǒng)化講解關(guān)鍵操作流程及深度優(yōu)化方案。 一、網(wǎng)絡(luò)配置:靜態(tài)IP與多網(wǎng)卡管理
    的頭像 發(fā)表于 06-25 17:28 ?1675次閱讀

    EM儲(chǔ)能網(wǎng)關(guān) ZWS智慧儲(chǔ)能云應(yīng)用(13) — 企業(yè)個(gè)性配置

    儲(chǔ)能公有云平臺(tái),企業(yè)用戶如何自主個(gè)性配置?ZWS智慧儲(chǔ)能云通過靈活的多級(jí)配置功能,實(shí)現(xiàn)個(gè)性系統(tǒng)配置,幫助強(qiáng)化儲(chǔ)能企業(yè)獨(dú)特性。簡介儲(chǔ)能企業(yè)
    的頭像 發(fā)表于 05-23 11:39 ?1017次閱讀
    EM儲(chǔ)能網(wǎng)關(guān) ZWS智慧儲(chǔ)能云應(yīng)用(13) — 企業(yè)個(gè)性<b class='flag-5'>化</b><b class='flag-5'>配置</b>
    林芝县| 枣阳市| 平南县| 海淀区| 南通市| 临海市| 姜堰市| 阜新市| 衡水市| 黎城县| 彭阳县| 临夏市| 从江县| 大悟县| 昆山市| 广西| 邮箱| 宕昌县| 南川市| 赣榆县| 灵寿县| 犍为县| 聊城市| 呼伦贝尔市| 邵阳市| 龙游县| 两当县| 万年县| 曲周县| 巴南区| 扬中市| 兴仁县| 苍南县| 福泉市| 明溪县| 宣威市| 新巴尔虎左旗| 历史| 清丰县| 临洮县| 永和县|