<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          代碼發(fā)布平臺的設(shè)計

          共 1491字,需瀏覽 3分鐘

           ·

          2021-08-04 15:38

                  代碼上線如果采用人工方式,那就有點熬人了。尤其像咋這種粗心又大意的小伙伴,一不小心發(fā)個bug甚至直接把rm指令當(dāng)mv的用,那妥妥的要挨打。所以我們需要一條途徑讓我們的代碼上線很easy,而且只能在規(guī)定的范圍內(nèi)進(jìn)行操作。于是乎我們就需要這樣一個發(fā)布系統(tǒng),市面上的發(fā)布系統(tǒng)也就是流水線了。當(dāng)然這個流水線吶是定制化的過程,就像鏈表一樣可以添加節(jié)點,刪除節(jié)點這樣子。現(xiàn)在的問題是咋也想自己搞這么一個發(fā)布系統(tǒng)拿出來賣錢,比如一套系統(tǒng)買個幾百塊錢,價錢低也架不住市場廣泛呀。但是問題是我們?nèi)绾卧O(shè)計這個一個發(fā)布系統(tǒng)吶,我們要用那些技術(shù)組件來做這樣一個利人利己的事?

                  發(fā)布系統(tǒng)本質(zhì)上就是替代人的因素。所以我們發(fā)布系統(tǒng)模擬的就是發(fā)布代碼的程序員。所以大概的過程如下:

          其中拉代碼、編譯、打包等步驟都非常簡單,在java中采用RunTime執(zhí)行相關(guān)的命令就行。問題是如果我們的項目部署的機(jī)器很多,而且都在公網(wǎng)或者內(nèi)外中,我們總不能就這樣讓每個機(jī)器都開一個端口用來傳輸項目包吧,畢竟這樣太不安全了,也太不專業(yè)了。既然一定要開發(fā)端口,但是我們力求開放端口數(shù)量盡可能少,那么我們只能選擇開放一個端口,而且這個端口盡量和已有項目復(fù)用。這塊我們可以將打好的包上傳到制品庫中,也就是git或者svn甚至是ftp文件服務(wù)器中
          將打好的項目包上傳到制品庫,那么什么時候去讓目標(biāo)機(jī)器去獲取就又稱為一個消息通知的問題。同樣的原則我們盡量不開端口或者少開端口,如此,我們可以采用zookeeper的watcher來做這個事情。我們在每臺目標(biāo)機(jī)器上運(yùn)行這個客戶端。但是聽過zookeeper的watcher來監(jiān)聽對應(yīng)項目發(fā)布的消息。當(dāng)我們將打好的項目傳輸?shù)街破穾斓臅r候,我們就修改zookeeper中相應(yīng)項目的watcher值,然后目標(biāo)機(jī)器的客戶度監(jiān)聽到消息之后從制品庫獲取相應(yīng)版本的項目或者啟動腳本,以及項目的更新策略進(jìn)行項目的更新。于是乎,我們大概可以畫一下發(fā)布平臺的大概過程。

                  上述流程貌似一氣呵成,實現(xiàn)了我們的需求,但是問題是我怎么知道項目啟動的結(jié)果是什么樣子的,啟動過程中有沒有報錯。說的簡單點就是,我想看到我項目啟動的一些信息,再簡單的來說我想收集的是日志,so,這樣的話,又該怎么做?

                  尤其是像我們的項目是夸機(jī)器部署,具有多個機(jī)器,日志收集這塊我們馬上想到之前學(xué)redis的分布式文件分發(fā)的那塊,我們完全可以采用list數(shù)據(jù)結(jié)構(gòu)來記錄目標(biāo)機(jī)器的日志。將日志直接打入redis中,然后設(shè)置過期時間。發(fā)布者通過請求從redis中獲取項目啟動日志并展示給項目的發(fā)布者。這樣我們的發(fā)布系統(tǒng)就如下圖所示:

          在上邊的分析中我們大概的設(shè)計了這樣一個給予zk、redis的代碼發(fā)布平臺,當(dāng)然在項目中我們肯定需要設(shè)置一些超時時間或者重試的基礎(chǔ)基礎(chǔ)策略來保障代碼發(fā)布在大概率上避免一些特殊的類外事件影響。

          晚安啦~


          瀏覽 50
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  波多野吉衣无码HD | 欧美三级电影在线播放 | 亚洲性爱免费电影 | 美女视频黄久久 | 成人婷婷五月 |