一、版本控制
1.什么是版本控制?
版本控制用于高效追蹤和管理項目開發中的代碼、配置及文檔變更歷史,確保團隊成員始終使用正確版本,并支持版本回溯、差異比較和文件恢復。它能帶來以下優勢:通過歷史記錄保障數據安全與完整性;多分支開發機制提升團隊協作效率;結合CI/CD工具實現自動化流程,簡化復雜項目管理能力。
2.什么是版本控制系統?
版本控制工具用于管理代碼變更,通過版本號或語義化標簽標記不同開發階段。它能完整記錄文件修改歷史,支持回退到任意歷史版本。該工具允許多開發者協同工作,通過分支機制隔離不同功能開發,最終將所有變更合并至主分支。版本庫是版本控制系統的核心。
3.什么是版本庫?
版本庫是版本控制系統的核心數據庫,完整保存了項目文件及其變更歷史,包括文件所有版本、元數據以及版本間的依賴關系。其核心特性包括:完整歷史記錄、分支與合并功能、分布式存儲機制。
二、分布式版本控制Git
Git 是一款開源的分布式版本控制系統(DVCS),由 Linux 創始人 Linus Torvalds 在 2005 年開發。該系統能高效管理代碼和文件變更歷史,支持團隊協作與并行開發。其分布式架構特性提供了強大的分支管理功能,可精準追蹤每個版本的變化。
1.Git工作流
工作區(Workspace):存放從倉庫中提取出來的文件的地方,供用戶直接編輯。
暫存區(Index/Stage):文件變更暫存的區域,準備提交的文件信息。
倉庫(Local Repository):存儲所有版本數據和元信息的地方。
遠程倉庫(Remote Repository):托管在遠程服務器上的共享倉庫,供他人瀏覽、下載代碼。
工作流程
2.Git版本庫操作
# --local:倉庫級(倉庫目錄下.git/config)
# --global:全局級(~/.gitconfig)
# --system:系統級(/etc/gitconfig)
git config --global user.name 用戶名 #設置全局級用戶名
git config --global init.defaultBranch 分支名 #設置全局默認分支名稱
git config --list #查看已有的Git配置
初始化版本庫
git init 項目目錄
查看Git本地倉庫狀態
git status
將文件信息添加到暫存區
git add 文件名
將暫存區文件提交到本地倉庫并附加提交信息
git commit -m "提交信息"
查看本地Git版本庫信息
git log #詳細信息
git log --pretty=oneline #簡略信息
git log --oneline #極簡信息
3.Git指針操作
還原到指定版本
git reset --hard 版本id
獲取指針移動軌跡
git reflog
4.Git分支操作
查看分支信息
git branch -v
創建分支
git branch 分支名
切換分支
git checkout 分支名
刪除分支
git branch -d 分支名
合并分支到master中
git merge 分支名
5.Git標簽管理
查看已有標簽
git tag
創建標簽
git tag 標簽名
刪除標簽
git tag -d 標簽名
三、Git服務器
Git 服務器是用于集中存儲和管理 Git 倉庫的核心節點,主要負責維護代碼版本歷史、支持團隊協作開發。它通過標準協議與本地倉庫進行數據交互,通常部署在獨立服務器上,開發者可通過網絡遠程訪問服務器中的代碼倉庫。常用的Git服務器有GitHub、Gitee碼云、GitLab。
1.GitLab
DevOps一體化平臺,集成代碼托管、CI/CD、項目管理、安全掃描等生命周期工具,支持端到端軟件交付,提供多層安全防護、操作審計日志及符合國內法規的數據存儲方案。
2.代碼托管
git remote add origin GitLub倉庫項目地址 #關聯遠程項目
git push -u origin --all #推送本地倉庫所有分支
git push -u origin --tags #推送本地倉庫所有標簽
http方式免密推送
git config --global credential.helper store #持久保存密碼設置
四、CI/CD
在DevOps理念推動下,持續集成(CI)、持續交付(CD)和持續部署(CD)等創新方法應運而生,顯著提升了軟件發布效率。CI的核心在于開發人員頻繁提交代碼至共享倉庫,借助自動化構建和測試確保代碼質量,有效規避集成問題。CD則更進一步,能夠將驗證通過的代碼自動發布到存儲庫,實現生產環境的一鍵部署。而最高級別的持續部署則是全自動化流程,所有測試通過的代碼將自動部署上線,完全無需人工參與。
1.DevOps流程
計劃:項目初期,研討業務需求,指定研發計劃。
編碼:開發團隊基于項目需求編寫業務代碼,使用Git等工具進行版本控制。
構建:通過Maven,Docker等工具打包代碼為可上線的產品。
測試:對產品進行自動化測試(如Jmeter)驗證其功能和性能。
發布:生成通過測試后的穩定版本,準備進行部署。
部署:使用Ansible、Kubernetes等工具將產品自動發布到生產環境。
運營:運維團隊監控產品在生產環境下的工作中狀態,處理異常。
監控:使用Prometheus進行日志與指標的收集,反饋信息到計劃階段優化迭代。
2.Jenkins
Jenkins 是一款開源的 ?持續集成/持續交付(CI/CD)? 自動化工具,基于 Java 開發,廣泛應用于軟件構建、測試和部署流程。支持Maven、Gradle等構建工具,能實現自定化編譯與測試,監控Git的變更,觸發預設的構建流程,快速測試代碼質量,通過流水線(Pipeline)將構建好的產品部署到測試或生產環境。
五、Elasticsearch
Elasticsearch 是一個基于 ?Lucene? 構建的開源分布式搜索引擎,專為?全文檢索、日志分析、復雜查詢?等高性能場景設計?。具備分布式存儲與計算的功能,實現數據自動分片并支持副本,提升可靠性與查詢并行度,通過粉刺、標準化的詞項映射,實現高效率全文檢索,數據寫入之后秒級可查,適用于日志監控等實時性要求較高的場景。
1.Elasticsearch服務配置
# vim /etc/elasticsearch/elasticsearch.yml
node.name: Services #23行,ES節點名稱
path.data: /var/lib/elasticsearch #33行,ES數據存儲路徑
path.logs: /var/log/elasticsearch #37行,ES日志存儲路徑
network.host: 0.0.0.0 #55行,監聽地址
http.port: 9200 #59行,HTTP端口
http.cors.enabled: true #60行,開啟HTTP跨域訪問支持
http.cors.allow-origin: "*" #61行,允許跨域的訪問范圍
啟動Elasticsearch服務,設置服務開機自啟動
systemctl enable elasticsearch --now
2.測試Ik分詞器
curl -H "Content-Type: application/json" -XPOST http://localhost:9200/_analyze?pretty -d '
{"analyzer": "standard","text": "需要分析的文本內容"
}'
3.HEAD插件
導入ES-HEAD插件
podman load -i Elasticsearch/elasticsearch-head.tar
啟動HEAD容器
podman run -d --name es-head --hostname es-head -p 9100:9100 localhost/elasticsearch-head:latest
配置ES-HEAD跨域
#sed -n '59,61p' /etc/elasticsearch/elasticsearch.yml
http.port: 9200
http.cors.enabled: true #開啟http跨域支持
http.cors.allow-origin: "*" #允許跨域的訪問范圍
六、消息隊列
消息隊列是一種進程之間通信機制,用于在不同進程或服務之間以異步、解藕的方式傳遞數據。其核心思想是將消息暫存與隊列當中,由生產者和消費者按需處理,廣泛應用于分布式系統和高并發場景?。
1.消息隊列特點
異步處理:生產者發送消息后無需等待消費者處理,提升系統響應速度?。
應用解藕:生產者和消費者通過隊列交互,降低模塊間直接依賴?。
流量削峰:緩存突發請求,避免系統因瞬間高并發崩潰。
2.RabbitMQ
RabbitMQ 是一款基于 AMQP(高級消息隊列協議)的開源消息中間件,專為分布式系統設計,可實現高效可靠的消息傳遞。它支持多語言客戶端接入,提供直觀的可視化管理界面,并具備靈活的消息分發機制,同時支持集群部署和持久化存儲。
3.工作模式
簡單模式(Simple):生產者直接發送消息到對列,消費者從隊列中消費,一對一通信。
工作隊列模式(Work Queues):多個消費者共享一個隊列,消息通過輪詢或者權重分配。
發布/訂閱模式(Fanout):交換機將消息廣播到所有綁定的隊列,無路由鍵匹配。
路由模式(Direct):交換機根據Routing Key精確匹配隊列的Binding Key,實現點對點通信。
主題模式(Topic):通過通配符實現模糊匹配。
4.RabbitMQ部署
安裝Erlang
dnf -y install erlang-25.2-1.el8.x86_64.rpm
安裝RabbitMQ
dnf -y install rabbitmq-server-3.11.5-1.el8.noarch.rpm
啟動網頁管理插件
rabbitmq-plugins enable rabbitmq_management
創建用戶
rabbitmqctl add_user 用戶名
列出已有用戶
rabbitmqctl list_users
為用戶添加標簽
abbitmqctl set_user_tags 用戶名 標簽
#超級管理員(administrator) 監控者(monitoring) 策略制定者(policymaker) 普通管理者(management) 其他(guest)
列出已有虛擬主機
rabbitmqctl list_vhosts
創建虛擬機
rabbitmqctl add_vhost /虛擬機名
設置用戶對虛擬主機的所有權限
rabbitmqctl set_permissions -p /主機名 用戶名
查看用戶權限
rabbitmqctl list_user_permissions 用戶名