99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

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

Linux愛(ài)好者 ? 來(lái)源:網(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、鏈表、樹(shù)或是其他。有了這套系統(tǒng),日常開(kāi)發(fā)就變成寫(xiě)配置+豐富系統(tǒng)能力了。

舉個(gè)例子:

“用戶(hù)每次下單后統(tǒng)計(jì)其當(dāng)天完單量,并發(fā)給下游營(yíng)銷(xiāo)系統(tǒng)其總完單量信息。下游營(yíng)銷(xiāo)系統(tǒng)會(huì)根據(jù)用戶(hù)的完單量推送優(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è)看起來(lái)有點(diǎn)復(fù)雜的業(yè)務(wù)需求,此時(shí)你就可以美滋滋的寫(xiě)周報(bào)去了~

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

咋存

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

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

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

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

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

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

咋配

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

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

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

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

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

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

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

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

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

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

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

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

咋保證HA

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

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

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

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

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

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

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

版本控制方面:前些日子逛Github時(shí)我發(fā)現(xiàn)了一個(gè)有趣的庫(kù):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ù)庫(kù),支持git就有趣多了,我們所有關(guān)于配置的更改記錄都有版本信息,基于這個(gè)庫(kù)封裝出API并集成在管理平臺(tái)中,前端渲染一個(gè)酷炫版本信息頁(yè)面。我們就可以通過(guò)點(diǎn)點(diǎn)點(diǎn)進(jìn)行g(shù)it reset操作了。

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

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

責(zé)任編輯:lq6

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

    關(guān)注

    2

    文章

    1613

    瀏覽量

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

    關(guān)注

    0

    文章

    23

    瀏覽量

    9643

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    NVMe高速傳輸之?dāng)[脫XDMA設(shè)計(jì)之七:系統(tǒng)初始

    直接采用PCIe實(shí)現(xiàn)NVMe功能,它的系統(tǒng)初始流程主要分為鏈路訓(xùn)練、PCIe 初始和 NVMe 初始, 分別實(shí)現(xiàn) PCIe鏈路連接、
    發(fā)表于 07-04 09:14

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

    Linux系統(tǒng)管理中,網(wǎng)絡(luò)連通性、用戶(hù)權(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 ?157次閱讀

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

    儲(chǔ)能公有云平臺(tái),企業(yè)用戶(hù)如何自主個(gè)性配置?ZWS智慧儲(chǔ)能云通過(guò)靈活的多級(jí)配置功能,實(shí)現(xiàn)個(gè)性系統(tǒng)配置,幫助強(qiáng)化儲(chǔ)能企業(yè)獨(dú)特性。簡(jiǎn)介儲(chǔ)能企業(yè)
    的頭像 發(fā)表于 05-23 11:39 ?170次閱讀
    EM儲(chǔ)能網(wǎng)關(guān) ZWS智慧儲(chǔ)能云應(yīng)用(13) — 企業(yè)個(gè)性<b class='flag-5'>化</b><b class='flag-5'>配置</b>

    Linux系統(tǒng)配置優(yōu)化技巧

    應(yīng)用系統(tǒng)跑在操作系統(tǒng)上面,系統(tǒng)的性能也關(guān)系到應(yīng)用程序的性能,這里講一些Linux性能關(guān)鍵的配置信息。
    的頭像 發(fā)表于 03-04 11:27 ?449次閱讀

    hyper-v 配置,Hyper-V配置:性能優(yōu)化與高級(jí)設(shè)置

    Hyper-V配置:性能優(yōu)化與高級(jí)設(shè)置。 ? ?Hyper-V配置:性能優(yōu)化與高級(jí)設(shè)置 ? ?在虛擬環(huán)境中,Hyper-V作為一款強(qiáng)大的虛擬平臺(tái),通過(guò)合理的
    的頭像 發(fā)表于 02-08 09:49 ?1211次閱讀
    hyper-v <b class='flag-5'>配置</b>,Hyper-V<b class='flag-5'>配置</b>:性能優(yōu)化與高級(jí)設(shè)置

    詳解Linux系統(tǒng)下IP和網(wǎng)關(guān)配置

    配置IP的目的使虛擬機(jī)可以聯(lián)網(wǎng)。
    的頭像 發(fā)表于 01-03 10:01 ?1406次閱讀
    詳解Linux<b class='flag-5'>系統(tǒng)</b>下IP和網(wǎng)關(guān)<b class='flag-5'>配置</b>

    如何配置 RAID 5 存儲(chǔ)系統(tǒng)

    配置 RAID 5 存儲(chǔ)系統(tǒng)是一個(gè)涉及硬件和軟件設(shè)置的過(guò)程。以下是配置 RAID 5 存儲(chǔ)系統(tǒng)的一般步驟,以及一些注意事項(xiàng)。請(qǐng)注意,具體步驟可能會(huì)因不同的硬件和操作
    的頭像 發(fā)表于 12-27 17:02 ?2140次閱讀

    DCS控制系統(tǒng)配置與實(shí)施流程

    DCS(分布式控制系統(tǒng))控制系統(tǒng)配置與實(shí)施流程是一個(gè)復(fù)雜但有序的過(guò)程,涉及多個(gè)步驟和環(huán)節(jié)。以下是一個(gè)典型的DCS控制系統(tǒng)配置與實(shí)施
    的頭像 發(fā)表于 12-27 16:47 ?1726次閱讀

    EtherCAT轉(zhuǎn)ProfiNet網(wǎng)關(guān)配置指南:掌握核心配置要點(diǎn)

    的集成度與維護(hù)效率,促進(jìn)了工業(yè)自動(dòng)領(lǐng)域的技術(shù)進(jìn)步。 ? 來(lái)百度APP暢享高清圖片 上位機(jī)軟件安裝與配置 1. 安裝軟件包 :首先安裝EtherCAT轉(zhuǎn)ProfiNet協(xié)議網(wǎng)關(guān)EtherCAT
    的頭像 發(fā)表于 11-14 15:54 ?591次閱讀
    EtherCAT轉(zhuǎn)ProfiNet網(wǎng)關(guān)<b class='flag-5'>配置</b>指南:掌握核心<b class='flag-5'>配置</b>要點(diǎn)

    EIO24088G-V2及EIO16084G的使用(一):TwinCAT總線(xiàn)配置與使用#正運(yùn)動(dòng)技術(shù)

    總線(xiàn)配置
    正運(yùn)動(dòng)技術(shù)
    發(fā)布于 :2024年11月12日 14:32:25

    請(qǐng)問(wèn)LMX2595配置時(shí)如何進(jìn)行初始

    您好,查閱手冊(cè)說(shuō)初始按照1.r0的rest置為1;2.r0的reset置為1;3.按照寄存器表格配置寄存器;4.fcal_en置為1的順序來(lái)初始。請(qǐng)問(wèn)在第三步中,按照寄存器表配置
    發(fā)表于 11-12 06:51

    HAproxy部署配置方案

    默認(rèn)參數(shù)的配置部分。在次部分配置的參數(shù)值,默認(rèn)會(huì)自動(dòng)引用到下面frontend、backend、listen部分中,因此,如果某些參數(shù)屬于公共的配置,只需在default部分添加一次即可。而如果在
    的頭像 發(fā)表于 10-27 17:16 ?1104次閱讀
    HAproxy部署<b class='flag-5'>配置</b>方案

    固化FPGA配置芯片的方式

    每次在系統(tǒng)掉電之后,之前載入的程序?qū)?huì)丟失,系統(tǒng)上電后需要重新配置。設(shè)計(jì)者為了彌補(bǔ)這項(xiàng)缺陷,在FPGA芯片的旁邊都會(huì)設(shè)置一個(gè)flash(掉電不丟失)。
    的頭像 發(fā)表于 10-24 18:13 ?1252次閱讀
    固化FPGA<b class='flag-5'>配置</b>芯片的方式

    C2000系統(tǒng)配置應(yīng)用說(shuō)明

    電子發(fā)燒友網(wǎng)站提供《C2000系統(tǒng)配置應(yīng)用說(shuō)明.pdf》資料免費(fèi)下載
    發(fā)表于 09-14 10:12 ?1次下載
    C2000<b class='flag-5'>系統(tǒng)配置</b>應(yīng)用說(shuō)明

    陀螺儀LSM6DSV16X與AI集成(7)----FIFO數(shù)據(jù)讀取與配置

    LSM6DSV16X是一款高性能、低功耗的6軸IMU傳感器,集成了3軸加速度計(jì)和3軸陀螺儀。本文將詳細(xì)介紹如何配置和讀取LSM6DSV16X傳感器的FIFO數(shù)據(jù),包括初始、配置以及數(shù)據(jù)處理的完整
    的頭像 發(fā)表于 07-18 10:40 ?2396次閱讀
    陀螺儀LSM6DSV16X與AI集成(7)----FIFO數(shù)據(jù)讀取與<b class='flag-5'>配置</b>