lichao 发表于 2024-6-27 18:27:34

CentOS7停止维护倒计时

本帖最后由 lichao 于 2024-6-27 18:59 编辑



  由于众所周知的原因,CentOS7将于2024年6月30日停止维护。相邻版本CentOS6已于2020年11月30日停止维护,CentOS8系统已于2021年12月31日停止维护。各个公司应该都在找下一个可以替代CentOS的系统了。笔者根据自己的经验聊一聊如下问题:

* 为什么用CentOS的个人和公司这么多?
  从互联网发展至今最流行的服务器系统不外乎Windows Server,CentOS,Ubuntu,Debian,几乎任何大大小小的VPS服务商都会支持这4种系统。而在过去的十几年国内互联网公司大部分在用CentOS,公司最看重的是稳定,安全,兼容,高效,其次是开源,免费。CentOS其生态圈也足够强大,首先是用这样的系统遇到问题的概率就低,如果真遇到了也可能很快就解决。而由于这么多公司都需要CentOS自然也需要熟悉CentOS的员工了,另外CentOS生态圈也足够成熟,那么CentOS的个人用户多也是自然。至于Windows Server,一是收费所以有成本,二是效率,稳定性,专业性不及Linux。而Ubuntu这类Linux最初是强在界面,现在也逐渐成熟,有一定市场占有率。以下是专业公司统计的Linux市场占有率



* 服务器用命令行操作多还是界面操作多?
  一般专业运维/后端人员很少用界面而是使用更高效的命令行操作,所以Linux有没有界面和界面友不友好不是最重要的,从经验来说喜欢用界面的人群集中在Windows老用户,运维入门的员工还有非技术运维的员工。(可能这里会有人杠,我们如果把用命令行的人按工作效率分为ABCD四等,用界面的也分为ABCD四等,那么显而易见同级别用命令行的人的效率一定完胜界面)。

* 为什么我需要一台服务器?
  个人拥有服务器无非是这些可能:1:自建VPN翻墙,2:自己有网站论坛和博客对外分享或有资源自用,3:有个人业务需要运营软件服务,4:学习Linux运维,用学生身份免费用服务器,为进公司打工做准备

* CentOS停止维护之后应该如何选择?
  我觉得未来公司对于这个问题可能会分化,比如一部分可能会用可能不太稳定的CentOS Stream;一部分迁移到跟CentOS操作方式接近的替代品(运维脚本如果不兼容会带来较大迁移成本)如AlmaLinux,RockyLinux等;还有一部分转入其他比较稳定的发行版比如Debian,Ubuntu;一小部分转而使用稳定的商业版Linux。而个人的话继续用CentOS几年内并不会有太大影响(除非爆出重大漏洞影响到自己服务),笔者未来可能用Debian会多一些因为和iOS更近一些,另外有时候因为某些原因需要用一些小站VPS,仅有Debian和CentOS可选。这里提一下A5站长推荐的FreeBSD,本人实测其性能比同等配置的其他Linux要高40%,个人使用是一个不错的选择。

* 开发后端用什么语言?
  后端开发语言主要取决于业务需求和个人喜好,目前比较流行的是Golang/Rust/C++/Java/Python,笔者就喜欢Python,远程VSCode调试也极其方便,当然我知道Python效率不如Golang和Rust,或许有空会尝试下Rust。但就整体而言语言并非性能瓶颈,Python中性能最强的后端库是tornado,会配置的话,5$一个月的服务器带上万级别的用户没啥压力。

* 我需不需要用Nginx或类似框架?
  Nginx的核心功能为:负载均衡,反向代理。负载均衡主要解决单服务器负载过大的问题,将请求分散到空闲的服务器分担压力,(这种比较适合公司业务的计算类资源,比如一台服务器单CPU的OCR响应需要2秒,而进来的请求是100QPS,那就得用负载均衡了;而对个人业务来说负载均衡通过CDN去做更好一些,还能抗DDos)。而反向代理是用一台服务器当多台服务器使用,比如已经有服务A(AA端口),服务B(BB端口),但为了安全起见对公网隐藏这两个服务,这时候就可以暴露一个接口用Nginx去访问。

* 什么是VPC型VPS?
  其实就是VPS商只让你用仅有的几个外网端口(非80/440等常用端口),和别人共享IP以节省他们的商业带宽成本,VPS商用NAT技术将虚拟服务器端口映射到指定的外网端口上访问。

* 选择VPS时怎样选择线路?
  如果是国内业务,无疑用国内大厂云是最优的,国内IP直连延迟20-40ms,或者用国内普通服务器套他们的CDN。如果是国外业务,美国服务器+Cloudflare/Fastly等CDN,http延迟(非ping)会在200~500ms,CN2线路延迟在100+ms(BGP和其他的更慢),香港IP直连延迟70+ms。

  因为笔者使用Linux的年限不长且经验有限,所以上述观点可能是浅知拙见,仅代表个人观点。



0xAA55 发表于 2024-7-3 09:22:17

至于Windows Server,一是收费所以有成本,二是效率,稳定性,专业性不及Linux。
Windows Server 专业性和稳定性其实并不比 Linux 差。

微软作为多年老牌商业编程公司,不至于比社区无门槛白给式赛博菩萨差。

C# 在服务器生态是很成熟的编程语言。

用 Windows Server 不代表就一定要用它的 GUI 界面。

另外CentOS生态圈也足够成熟,那么CentOS的个人用户多也是自然。
CentOS 的国内生态确实非常成熟,随便一个问题一搜就有很多 CSDN 的文章可以参考。

但是 CentOS 官方对于社区遇到的问题的解决方案也很“成熟”,那就是摆烂。CentOS 自带的 gcc 版本永远停留在 4.x,除非你使用 SCL 安装新版本的 toolset,而 SCL 其实是社区长草长出来的。

作为对比,Debian 是一个板子一个钉,每个大版本具有一套成熟的软件,大版本的选择决定了整套软件系统包括编译器的版本,想用旧编译器就安装小版本系统;想用新编译器就用高版本系统或者最新版本系统。Debian 的每个版本都是成熟的。我专门针对国产嵌入式机器的 buildroot 编译,购买某国产派机器,安装了很旧版本的 Debian 服务器用于交叉编译,解决了高版本 gcc 不能编译针对低版本 gcc 开发的源代码的问题。

一般专业运维/后端人员很少用界面而是使用更高效的命令行操作
然而命令行也是一种界面,一般叫 CUI 或者 TUI (Console User Interface、Terminal User Interface)

GUI 界面能支持的操作更加丰富,而 CUI 则需要用户具有一定的熟练度才能驾驭,否则对于新手小白还是 GUI 更友好。

而Ubuntu这类Linux最初是强在界面,现在也逐渐成熟,有一定市场占有率。
不得不说 Ubuntu 的商业气息很浓,而且不断更新内核补丁,这种更新有时候就能把 NVIDIA 驱动给干掉。非常不推荐生产环境使用 Ubuntu。

十分建议使用 Debian 替代 Ubuntu 用作生产环境机器。

但是 Debian 安装 NVIDIA 驱动的时候,如果开启了安全引导,则会导致引导的时候需要输入一个类似“开机密码”的东西来使 NVIDIA 驱动可以加载。Ubuntu 则通过 DKMS 相关的包自动解决了这个需要“开机密码”的问题,比较傻瓜式,也不需要关闭“安全引导”。不得不说,Ubuntu 商业气息确实浓厚。一个致命的缺点就是 Ubuntu 它自动打内核补丁会干掉这个 DKMS 导致 NVIDIA 驱动突然失效。用在生产环境的话,运维人员的工作会变得充满挑战。因为届时你会发现无论如何你也安装不上 NVIDIA 驱动。

lichao 发表于 2024-7-3 13:50:05

本帖最后由 lichao 于 2024-7-5 13:26 编辑

   微软本身就是做桌面起家的,侧重点在桌面系统和娱乐。而服务器稳定性可以从日常使用Windows窥见一二,Win笔记本开一周不重启不关机和Linux,MacOS流畅肯定不一样。从服务器市场占有率上看Linux也是远比Win多。所以我目前不认同WindowsServer比Linux更稳定的观点,大公司其实每个方面都会布局,这是一种市场策略,但真正能做好的也只是自己擅长的产品。比如腾讯做短视频,字节跳动做游戏,都不咋地   

    GCC这种可以自行编译,公司内网CentOS里同时存在好几个版本的GCC很常见。有的库需要用高版gcc编译,有的需要低版gcc,所以常见做法是在chroot或docker里编译安装gcc,这样就可以在一个系统里存在多个版本gcc,也很方便,不是说非要用包管理器去安装。有些软件包管理器没有,都是直接源码编译(需要注意的是别因为CPU占用太高导致进程被杀);某些特殊Python库也一样,直接pip安装报错,源码编译立马搞定。      

    Debian目前已经是我个人正在使用的系统了。这些发行版在未来肯定也是互相取长补短,最后也没明显的优缺点。   

    后端语言的话我只列举了我比较感兴趣的,PHP/NodeJS/C#这些我都没有列举。主要是我没有学习PHP和Node的计划,我感兴趣的主要在于“底层/跨平台”,没有此特性的语言其实对我意义不是很大,因为用不了几次。C#是微软系的,iOS上有一些游戏用了Mono框架确实用了C#。我目前选择的语言组合目前为,C/C++/Python/JS+Vue/OC,Rust是我的下一个计划。我个人看好Rust,我认为Rust未来是和C/C++同一量级的语言,而Go应在Rust之下。以前开发安卓端我用过Java,现在开发iOS的话OC是必须的,而Swift开发不了底层所以对我没啥意义,开发一个完整界面的App,OC+JS+Vue就可以搞定,开发Win/Mac界面程序可以直接Python+JS+Vue搞定,界面也能做到精美。后端的话Python又可以搞定,以后可以用Rust来代Python。


页: [1]
查看完整版本: CentOS7停止维护倒计时