【温故而知新】构建高可用Linux服务器(三)

news2024/11/18 4:32:24

时间:2022年12月02日

作者:小蒋聊技术

邮箱:wei_wei10@163.com

微信:wei_wei10

前言

大家好,欢迎来到小蒋聊技术。小蒋准备和大家一起聊聊技术的那些事。

今天小蒋继续坚持“温故而知新”的落地实践,继续和大家分享《构建高可用Linux服务器》这本部书。

作者在第一章,全面的介绍了Linux服务器。教我们如何查看Linux服务器cpu、内存、磁盘、负载等详情情况。又给我们介绍了Linux服务器的网络配置,以及开源的监控工具nagios。

在后面的章节中,主要在介绍具体的案例,例如VPN在企业中的部署和应用,如何构建企业级邮件系统,等等。那么,我们今天就来分享一个代码版本管理的案例。

代码版本管理

版本管理(Revision  control)是一种软件工程方法,在开发的过程中,确保由不同开发人员编辑的同一档案都得到更新。代码版本管理其实就是我们在日常的开发过程中,将每天、每个阶段、每个功能等要求完成之后,将我们的代码再提供给他人的一种行为。

搭建Linux高可用集群,其实就是为了运行公司这些工作必须要使用的软件系统,例如版本管理。 对于关键业务,停机通常是灾难性的。因为停机带来的损失也是巨大的。咱们先来看一组统计数据:

应用系统

每分钟损失(美元)

呼叫中心(Call Center)

27000

企业资源计划(ERP)系统

13000

供应链管理(SCM)系统

11000

电子商务(eCommerce)系统

10000

客户服务(CustomerServiceCenter)系统

27000

随着企业越来越依赖于信息技术系统,由于系统停机而带来的损失也越拉越大。

很多公司代码版本的管理并不统一,一部分人用SVN,一部分用Git。对于习惯了使用Linux或者Mac命令行的人来说,Git的操作更方便和快捷,但是还有一部Windows的研发人员习惯使用SVN。咱们先来聊聊Git和SVN的区别。

GIT是分布式的

这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。需要做一点声明,GIT并不是目前第一个或唯一的分布式版本控制系统。还有一些系统,例如Bitkeeper, Mercurial等,也是运行在分布式模式上的。但GIT在这方面做的更好,而且有更多强大的功能特征。

GIT跟SVN一样有自己的集中式版本库或服务器。但GIT更倾向于被使用于分布式模式,也就是每个开发人员从中心版本库/服务器上chect out代码后会在自己的机器上克隆一个自己的版本库。可以这样说,如果你被困在一个不能连接网络的地方时,就像在飞机上,地下室,电梯里等,你仍然能够提交文件,查看历史版本记录,创建项目分支等。对一些人来说,这好像没多大用处,但当你突然遇到没有网络的环境时,这个将解决你的大麻烦。

同样,这种分布式的操作模式对于开源软件社区的开发来说也是个巨大的恩赐,你不必再像以前那样做出补丁包,通过email方式发送出去,你只需要创建一个分支,向项目团队发送一个推请求。这能让你的代码保持最新,而且不会在传输过程中丢失。github.com就是一个这样的优秀案例。

所以,如果使用Git,一定要按它的分布式特性使用它。

中央版本控制系统:SVN

分布式版本控制系统:Git

存储方式不同

GIT是把内容按元数据方式存储,而SVN是按文件方式存储。所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。如果你把.git目录的体积大小跟.svn比较,你会发现它们差距很大。因为 .git 目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。

分支的区别

Git 分支廉价,SVN 分支昂贵。在版本管理里,分支是很常使用的功能。在发布版本前,需要发布分支,进行大需求开发,需要 feature 分支,大团队还会有开发分支,稳定分支等。在大团队开发过程中,常常存在创建分支,切换分支的需求。

Git 分支是指针指向某次提交,而 SVN 分支是拷贝的目录。这个特性使 Git 的分支切换非常迅速,且创建成本非常低。

而且 Git 有本地分支,SVN 无本地分支。在实际开发过程中,经常会遇到有些代码没写完,但是需紧急处理其他问题,若我们使用 Git,一定要多用分支特性,它可以创建本地分支存储没写完的代码,待问题处理完后,再回到本地分支继续完成代码。

为什么要用gitlab

我们经常会听见一些名称,比如Git、gitLab、gitHub。咱们先看看这些的定义:

Git-它是一个源代码版本控制系统,可让您在本地跟踪更改并从远程资源推送或拉取更改。

GitLab、GitHub是提供对 Git 存储库的远程访问的服务。除了托管您的代码,这些服务还提供旨在帮助管理软件开发生命周期的附加功能。这些附加功能包括管理不同人之间的代码共享、错误跟踪、wiki和其他"社交编码"工具。

  1. GitHub 是一项公开可用的免费服务,要求所有代码(除非您有付费帐户)都开放。任何人都可以看到您推送到 GitHub 的代码并提供改进建议。 GitHub 目前托管着数以万计的开源项目的源代码。一般直接在公网使用
  2. GitLab 是一种类似于 github 的服务,组织可以使用它来提供 git 存储库的内部管理。它是一个自托管的 Git 存储库管理系统,可以保护用户代码的私密性,并且可以轻松部署代码的更改,并允许您免费决定它们是公开的还是私有的。一般公司都会选用GitLab来做公司版本控制私服。

特点:

  1. GitLab 免费托管您的(私人)软件项目。
  2. GitLab 是一个管理 Git 存储库的平台。
  3. GitLab 提供免费的公共和私有存储库、问题跟踪和 wiki。
  4. GitLab 是位于 Git 之上的,有用户友好的 Web 界面层,可提高使用 Git 的速度。
  5. GitLab 提供自己的持续集成 (CI) 系统来管理项目,并提供用户界面以及 GitLab 的其他功能。

总结

其实gitlab的核心还是提供了一种简单、透明和有效的 git 工作方式,并与问题跟踪系统相结合。

使用版本控制中常见的问题是,随着时间推移,产生越来越多的分支,在那些长期维护的分支中充斥着杂乱的修改内容。

git 工作流主要的问题是:

一、默认的 master 分支只是用于发布,开发都在其他分支上。

二、对于多数应用来说过于复杂,特别是 release 和 hotfix 分支的不可部署导致使用上的复杂。

GitLab 工作流的最大原则叫做"上游优先"(upsteam first),即只存在一个主分支master,它是所有其他分支的"上游"。只有上游分支采纳的代码变化,才能应用到其他分支。

对于"持续发布"的项目,它建议在master分支以外,再建立不同的环境分支。比如,"开发环境"的分支是master,"预发环境"的分支是pre-production,"生产环境"的分支是production。

开发分支是预发分支的"上游",预发分支又是生产分支的"上游"。代码的变化,必须由"上游"向"下游"发展。比如,生产环境出现了bug,这时就要新建一个功能分支,先把它合并到master,确认没有问题,再cherry-pick到pre-production,这一步也没有问题,才进入production。

只有紧急情况,才允许跳过上游,直接合并到下游分支。

GitLab在理解上虽然需要花一些时间,但是Gitlab的理念对于项目管理来说有很大的提升,小蒋个人认为这个付出是值得的。

年龄的增长不可怕,可怕的是从未成长!

感谢大家支持小蒋,小蒋希望和大家共同成长,谢谢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/55111.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]计算机毕业设计影院管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【单片机基础】C51语言基础

文章目录1、使用C/C开发单片机的优点2、C51中的基本数据类型3、C51数据类型扩展定义4、C51中的运算符与基础语句5、二进制与十六进制转换1、使用C/C开发单片机的优点 C/C语言作为一种非常方便的语言得到了广泛的支持,如STC、STM32、arduino、乐鑫科技的单片机都支持…

【目标搜索】基于matlab运动编码粒子群算法优化 (MPSO) 无人机搜索丢失目标【含Matlab源码 2254期】

⛄一、运动编码粒子群算法简介 1 粒子群算法 PSO算法是一种基于群体智能的随机优化方法。在PSO中,粒子群模拟鸟群行为在搜索空间中探索(全局搜索)和开发(局部搜索),最终找到全局最优解。粒子的速度和位置更…

网络安全观察报告 攻击态势

设备类漏洞从未缓解 从图 5.1 中可以看到,针对设备漏洞的攻击占全部利用漏洞攻击的 43%,这和近两年智能路由器等 联网设备大规模增长密切相关。正如绿盟科技在《2017 年物联网报告》1 中提到的那样,很多智能设备 在设计之初,安全…

第3章 Thymeleaf模板渲染

文章目录第3章 Thymeleaf模板渲染3.2 Thymeleaf编程起步3.4 读取资源文件3.5 路径处理3.6 内置对象操作支持3.7 对象输出3.8 页面逻辑处理3.9 数据迭代处理3.10 包含指令3.11 Thymeleaf数据处理3.12 本章小结3.12 本章小结第3章 Thymeleaf模板渲染 3.2 Thymelea…

【OpenCV-Python】教程:3-13 Hough直线变换

OpenCV Python Hough直线变换 【目标】 理解Hough变换的概念学会使用Hough变换检测直线cv2.HoughLines(), cv2.HoughLinesP() 【理论】 Hough 变换是一个非常有用的技术,可以检测任何形状,只要那个形状可以通过数学方程表示出来,即使检测…

[附源码]计算机毕业设计springboot小区疫情事件处理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

传感器_三相-双极性-开关型-霍尔传感器 速度+电角度解算理解

1 前言 最近项目上涉及到使用三相-双极性-开关型-霍尔传感器解算 电机转速 、电角度的问题。结合自己的理解请教前辈,终有所得,下面做一个学习的记录。 主要以思路为主,不涉及代码。 2 正文 2.1 什么是三相? 所谓三相-双极性-…

毕设项目 - SSM农业商品信息管理权限后台子系统(含源码+论文)

文章目录1 项目简介2 实现效果2.1 界面展示3 设计方案3.1 概述3.2 系统流程3.3 系统结构设计4 项目获取1 项目简介 Hi,各位同学好呀,这里是M学姐! 今天向大家分享一个今年(2022)最新完成的毕业设计项目作品,【基于SSM的农业商品…

(算法设计与分析)第四章贪心算法-第一节:贪心算法概述

文章目录一:贪心算法(1)概述(2)特点(3)框架二:典型贪心算法问题(1)无重叠区间①:题目描述②:解题思路③:完整代码&#xf…

【Android App】人脸识别中扫描识别二维码实战解析(附源码和演示 超详细)

需要源码请点赞关注收藏后评论区留言私信~~~ 一、扫描识别二维码 不仅可以利用zxing库生成二维码,同样利用zxing库可以扫描二维码并解析得到原始文本,此时除了给build.gradle添加如下一行依赖配置 implementation com.google.zxing:core:3.4.1 还需要…

一文读懂什么是云原生|推荐收藏

Forrester数据显示,在2021年,全球云原生应用持续上升,组织中容器和无服务器技术的使用率在一年内都增长了75%以上。 Gartner预测,到2025年,将会有超过95%的新数字工作负载被部署在云原生平台上。 “未来的软件一定是长…

Qt第二十六章:QWidget、QMainWindow自定义标题栏

工具类(读者直接复制到项目中) class QCustomTitleBar:def __init__(self, window: QtWidgets):self.window window# 默认标题栏高度 必须设self.DEFAULT_TITILE_BAR_HEIGHT 40# 存储父类的双击事件self.mouseDoubleClickEvent_parent self.window.mo…

【数学】旋转后仍为函数图像问题

∣旋转后仍为函数图像问题NightguardSeries.∣\begin{vmatrix}\huge{\textsf{ 旋转后仍为函数图像问题 }}\\\texttt{ Nightguard Series. }\end{vmatrix}∣∣∣∣∣​ 旋转后仍为函数图像问题 Nightguard Series. ​∣∣∣∣∣​ ♣例1\clubsuit \textsf{例1}♣例1 f(x)ln⁡(x…

经典bloom算法(**布隆过滤器**)-levelDB拆分

bloom算法(布隆过滤器) 原理 先说一下什么是布隆过滤器,Bloom Filter是1970年由布隆提出的,它实际上是一个很长的二进制向量,和一系列随机值映射的函数,主要用于判断一个元素是否在一个集合中。 通常判断一个元素是否在一个集合…

Hasse diagram

In order theory, a Hasse diagram (/ˈhsə/; German: [ˈhasə]) is a type of mathematical diagram used to represent a finite partially ordered set, in the form of a drawing of its transitive reduction. Concretely, for a partially ordered set (S, ≤) one rep…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java高校学生宿舍管理信息系统3x4rz

做毕业设计一定要选好题目。毕设想简单,其实很简单。这里给几点建议: 1:首先,学会收集整理,年年专业都一样,岁岁毕业人不同。很多人在做毕业设计的时候,都犯了一个错误,那就是不借鉴…

記錄下用google colab 进行GPU(TPU)训练

文章目录温馨提示打开网站上传资源下载资源到google colab温馨提示 需要科学上网,没有的话可以点这个 https://shandianpro.com/#/register?codewCXwkCOU下个clashx进行 挂载 https://download.csdn.net/download/monk96/87231589 配置自行百度 打开网站 google…

Win11系统提示backgroundtaskhost.exe系统错误解决方法

Win11系统提示backgroundtaskhost.exe系统错误解决方法分享。backgroundTaskHost.exe是与Microsoft Cortana的虚拟助手相关联的关键系统进程。近期有Win11用户在电脑的使用中遇到了系统提示“backgroundTaskHost.exe – ApplicATIon Error”的错误,今天我们一起来看…

[附源码]计算机毕业设计JAVA学生考试成绩分析系统

[附源码]计算机毕业设计JAVA学生考试成绩分析系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM my…