<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      本地同時啟停多個中間件的優(yōu)雅方案

      "I don’t care if it works on your machine! We are not shipping your machine!" - Vidiu Platon

      “我才不管它能不能在你的機器上運行捏!我們又不會給你提供機器!” —— 韋都·柏拉圖

      0x00 大綱

      0x01 前言

      隨著微服務架構(gòu)風格的推廣應用,開發(fā)人員的本地開發(fā)和調(diào)試成本大大提高,甚至不堪重負。動不動就要依賴一攬子東西,注冊中心、Redis、MQ、基礎服務ABC……等等。

      開發(fā)人員如果手工在本地啟停多個基礎服務和中間件,將會浪費大量時間,降低開發(fā)效率。

      0x02 大公司的解決方案

      DockerKubernetes,不缺錢也不缺人的首選。什么雙活、負載均衡統(tǒng)統(tǒng)來個四五套,把寒氣也傳給運維人員。

      0x03 小作坊的解決方案

      為了節(jié)約成本,當然是要在本地啟動一整套系統(tǒng)節(jié)點啦,畢竟內(nèi)存成本比人力成本低得多。但是手工啟停太浪費時間了,這樣會導致本來就不多的摸魚時間所剩無幾。人生苦短,我用腳本。

      確定了方案,我就開始著手編排了,以一個Zookeeper + Redis(一主二從三哨兵)的啟停腳本為目標,配置過程就略過了,著重解決啟停的問題。

      試作一號

      啟動腳本

      @echo off
      color 5f
      title fake-docker
      echo ^>^>^>^>^>^>^>^>bootstrapping redis...
      start "redis-master" "c:\dev\redis-x64-3.2.100\redis-server.exe" "c:/dev/redis-x64-3.2.100/redis.master-1.conf"
      start "redis-slaver-1" "c:\dev\redis-x64-3.2.100\redis-server.exe" "c:/dev/redis-x64-3.2.100/redis.slaver-1.conf"
      start "redis-slaver-2" "c:\dev\redis-x64-3.2.100\redis-server.exe" "c:/dev/redis-x64-3.2.100/redis.slaver-2.conf"
      start "redis-sentinel-1" "c:\dev\redis-x64-3.2.100\redis-server.exe" "c:/dev/redis-x64-3.2.100/redis.sentinel-1.conf" --sentinel
      start "redis-sentinel-2" "c:\dev\redis-x64-3.2.100\redis-server.exe" "c:/dev/redis-x64-3.2.100/redis.sentinel-2.conf" --sentinel
      start "redis-sentinel-3" "c:\dev\redis-x64-3.2.100\redis-server.exe" "c:/dev/redis-x64-3.2.100/redis.sentinel-3.conf" --sentinel
      echo ^>^>^>^>^>^>^>^>done!
      echo ^>^>^>^>^>^>^>^>bootstrapping zookeeper...
      start "zookeeper-dev" "c:\dev\apache-zookeeper-3.6.3-bin\bin\zkServer.cmd"
      echo ^>^>^>^>^>^>^>^>system is hot!
      

      停止腳本

      @echo off
      color 5f
      echo ^>^>^>^>^>^>^>^>shutdowning...
      taskkill /t /f /fi "imagename eq redis-server.exe" >nul
      taskkill /t /f /fi "windowtitle eq zookeeper-dev" >nul
      echo ^>^>^>^>^>^>^>^>system is down!
      pause>nul
      

      第一個版本,解決了啟動和停止的問題,但是是手動檔的,重啟中間件的話要執(zhí)行兩個腳本。待改進的問題有兩個:

      • 重啟不方便,盡量做到一鍵啟停
      • 彈出窗口太多,體驗不佳

      第一個問題容易解決,先停后起,先執(zhí)行停止指令,再把應用拉起來。

      第二個問題有點麻煩,一開始想嘗試無窗口啟動,反復嘗試未果,后來采用了折中方案,在CMDstart命令幫助中有如下描述:

      C:\Users\Master>help start

      啟動一個單獨的窗口以運行指定的程序或命令。

      START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
      [/NODE ] [/AFFINITY ] [/WAIT] [/B]
      [command/program] [parameters]

      "title"     在窗口標題欄中顯示的標題。
      path        啟動目錄。
      B           啟動應用程序,但不創(chuàng)建新窗口。
                  應用程序已忽略 ^C 處理。除非應用程序
                  啟用 ^C 處理,否則 ^Break 是唯一可以中斷
                  該應用程序的方式。
      I           新的環(huán)境將是傳遞
                  給 cmd.exe 的原始環(huán)境,而不是當前環(huán)境。
      MIN         以最小化方式啟動窗口。
      MAX         以最大化方式啟動窗口。
      SEPARATE    在單獨的內(nèi)存空間中啟動 16 位 Windows 程序。
      SHARED      在共享內(nèi)存空間中啟動 16 位 Windows 程序。
      LOW         在 IDLE 優(yōu)先級類中啟動應用程序。
      NORMAL      在 NORMAL 優(yōu)先級類中啟動應用程序。
      HIGH        在 HIGH 優(yōu)先級類中啟動應用程序。
      REALTIME    在 REALTIME 優(yōu)先級類中啟動應用程序。
      ABOVENORMAL 在 ABOVENORMAL 優(yōu)先級類中啟動應用程序。
      BELOWNORMAL 在 BELOWNORMAL 優(yōu)先級類中啟動應用程序。
      NODE        將首選非一致性內(nèi)存結(jié)構(gòu)(NUMA)節(jié)點指定為
                  十進制整數(shù)。
      AFFINITY    將處理器關(guān)聯(lián)掩碼指定為十六進制數(shù)字。
      

      根據(jù)描述,如果start時帶上/b參數(shù),就能讓多個程序在一個窗口中寄宿。修改后得到最終版本:

      最終版本

      @echo off
      color 5f
      title %date%
      echo ^>^>^>^>^>^>^>^>cleaning up context...
      echo ^>^>^>^>^>^>^>^>killing previous runner...
      taskkill /t /f /fi "imagename eq redis-server.exe" >nul
      taskkill /t /f /fi "windowtitle eq fake-docker*" >nul
      timeout /t 3 /nobreak >nul
      rd /s /q "c:\tmp\zookeeper">nul
      echo ^>^>^>^>^>^>^>^>clean up context done!
      title fake-docker
      echo ^>^>^>^>^>^>^>^>bootstrapping redis...
      start /b "redis-master" "c:\dev\redis-x64-3.2.100\redis-server.exe" "c:/dev/redis-x64-3.2.100/redis.master-1.conf"
      start /b "redis-slaver-1" "c:\dev\redis-x64-3.2.100\redis-server.exe" "c:/dev/redis-x64-3.2.100/redis.slaver-1.conf"
      start /b "redis-slaver-2" "c:\dev\redis-x64-3.2.100\redis-server.exe" "c:/dev/redis-x64-3.2.100/redis.slaver-2.conf"
      start /b "redis-sentinel-1" "c:\dev\redis-x64-3.2.100\redis-server.exe" "c:/dev/redis-x64-3.2.100/redis.sentinel-1.conf" --sentinel
      start /b "redis-sentinel-2" "c:\dev\redis-x64-3.2.100\redis-server.exe" "c:/dev/redis-x64-3.2.100/redis.sentinel-2.conf" --sentinel
      start /b "redis-sentinel-3" "c:\dev\redis-x64-3.2.100\redis-server.exe" "c:/dev/redis-x64-3.2.100/redis.sentinel-3.conf" --sentinel
      echo ^>^>^>^>^>^>^>^>done!
      echo ^>^>^>^>^>^>^>^>bootstrapping zookeeper...
      start /b "zookeeper-dev" "c:\dev\apache-zookeeper-3.6.3-bin\bin\zkServer.cmd"
      echo ^>^>^>^>^>^>^>^>system is hot!
      

      最終版本,實現(xiàn)了一鍵啟停,只會產(chǎn)生一個命令行窗口,屬于能用的范疇了。在此基礎上,可以根據(jù)項目情況,自行添加其他中間件或基礎服務的啟停命令。

      0x04 小結(jié)

      分布式應用調(diào)試和部署不可避免會面臨幾個問題:

      應用啟停困難

      通常由于架構(gòu)的原因,為了調(diào)試某個中間節(jié)點或上游應用的功能,需要把相關(guān)的應用都啟動起來,如果手工啟停,無疑是痛苦的。

      外部系統(tǒng)不穩(wěn)定

      如果不能把整個系統(tǒng)都在本地啟動起來,那么本地就會有一部分服務依賴于外部公共環(huán)境,它們通常不止一個人甚至不止一個團隊在用。 一旦外部服務不可用,就會影響到本地的開發(fā)和測試。

      因此準備一個微型本地開發(fā)環(huán)境是有必要的,至少在開發(fā)和調(diào)試階段。況且如果最困難的啟停問題被解決了,何樂不為呢?

      posted @ 2022-12-14 10:28  程語有云  閱讀(527)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 日韩一区二区三区精彩视频| 亚洲色最新高清AV网站| 日韩V欧美V中文在线| 欧美情侣性视频| 人妻无码中文专区久久app| 国产91精品一区二区亚洲| 一道本AV免费不卡播放| 国产成人精品亚洲午夜| 亚洲一区二区三区蜜桃臀| 亚洲国产精品18久久久久久| 亚洲国产精品成人无码区| 日韩黄色av一区二区三区| 久久国产精品成人影院| 国产一区二区三区乱码| 国产精品久久久久久久9999 | 凸凹人妻人人澡人人添| 国产精品人伦一区二区三| 韩国免费a级毛片久久| 久久国产精品精品国产色婷婷| 亚洲人成人伊人成综合网无码| 成人一区二区三区在线午夜| 欧美性xxxxx极品| 日韩人妻少妇一区二区三区| 91国产自拍一区二区三区| 人与禽交av在线播放| 久久久无码精品亚洲日韩蜜臀浪潮 | 摸丰满大乳奶水www免费| 精品人妻午夜一区二区三区四区| 人妻中文字幕亚洲精品| 久久毛片少妇高潮| 久久一日本综合色鬼综合色| 色婷婷久久综合中文久久一本 | 成人无码区在线观看| 欧洲亚洲国内老熟女超碰| 性欧美VIDEOFREE高清大喷水| 国产精品成熟老女人| 亚洲高清国产拍精品5G| 浑源县| 国产精品伦人视频免费看| 亚洲高清乱码午夜电影网| 国产精品自拍午夜福利|