4. OpenVZ

OpenVZ 容器是一个轻量级虚拟机,容器里是一个完整的操作系统环境,它的主要用途是充当虚拟私有服务器,即 VPS。OpenVZ 是在 Linux 操作系统上(修改了宿主机上的 Linux 内核)创建隔离的运行环境,每个运行环境拥有自己的 IP、Root 用户、根目录和运行库,但是共享操作系统内核,即容器中不能再安装操作系统,允许安装更多的应用软件,如图 3 所示。

现在很多的 VPS 租赁公司几乎都是采用它来创建 Linux 的 VPS。Windows 的 VPS 目前有 Windows Server Container 和 Hyper-V Container。相对于其他虚拟机软件而言,在相同配置的物理机上,用 OpenVZ 可以运行更多的容器,从而大大降低每个用户的成本。在公共云中,更多的公司倾向于采用容器。类似的开源容器还有 Linux-VServer、LXC、FreeBSD jail、Solaris Containers。

OpenVZ架构
图 3 OpenVZ架构

但是最近兴起的 Docker 容器更轻便(容器只运行一个应用程序),其在谷歌公司的大力推动下发展迅速,而且谷歌发布了构建于 Docker 之上的开源的 Kubernetes 管理平台,使得管理运行在成千上万台计算机上的数十万个 Docker 容器变得异常轻松和简单。容器和虚拟机的区别如图 4 所示。

容器和虚拟机的区别
图 4 容器和虚拟机的区别

5. VirtualBox

这是 Oracle 发布的虚拟机软件,单机版,是 VMware Workstation 的替代品,能安装在 Windows、Linux、Mac OX X 和 Solaris 操作系统上。在由 VirtualBox 创建的虚拟机上,可以安装 Windows、Linux、FreeBSD 操作系统。VirtualBox 支持虚拟机快照、睡眠和分组、虚拟机导入导出、虚拟机克隆等。

常见开源操作系统有哪些?

开源的意思是系统的源代码是面向用户开放的,可以遵循开源协议(GNU)进行使用、编译和再发布。在遵守 GNU 协议的前提下,任何人都可以免费使用,随意控制软件的运行方式。最著名的开源操作系统是 linux。

开源系统相对于不开源的操作系统,如 Windows 和 Mac,开源操作系统最大的特点就是开放源代码和自由定制,但也会因为使用者的技术水平等关系出现很多不可预知的情况及维护问题,并且由于多数硬件和软件厂商并不支持开源软件。所以在驱动和软件源方面有很大困难,这就要求个人用户在选择系统时需要注意根据自己的实际情况来选择,这也是目前个人使用开源操作系统较为困难的最主要原因。

开源系统的分类:

  • Unix-like 类:Linux(这一族开发者众多,发行版本以千计,覆盖所有平台,并支持所有文件格式和所有网络协议)、FreeBSD、OpenBSD、NetBSD(覆盖所有平台)、DrangonflyBSD、Darwin/OpenDarwin/PureDarwin、Minix、GNU Mach/GNU Hurd、L4/Fiasco/Pistachio、syllable、禅OS
  • Unix 类:Opensolaris、AuroraUX、Plan9、Inferno-Plan 9。
  • dos 类:Freedos
  • windows-like 类:ReactOS
  • 原创类:House、KolibriOS、MenuetOS、HelenOS、Openvms
  • 还有其他的开源操作系统有:XFree86、ReactOS。
1)Linux 内核

Linux 内核诞生于 1991 年,目前已超过 1500 万行代码,价值达数百亿美元。以它为核心推出的操作系统发行版最为流行的有 RedHat、Suse、Ubuntu、Android、Centos、Debian 等,大概有上百种(具体可参考排行网站 http://distrowatch.com)。如果不特别指定,这些发行版统称为 Linux 操作系统。

Linux 操作系统开源免费、稳定可靠、病毒少、性能高,作为平台软件,被广泛应用在云端、数据中心。目前除微软外,全部云中心都采用 Linux 操作系统。CentOS 是 RedHat 的克隆版,应用比较广泛,网上具有丰富的资料和社区人气,现已被红帽收购。

2)FreeBSD

FreeBSD 是由美国加州大学伯克利分校开发的免费开源的操作系统,号称世界上最稳定、最高效、最安全、版权限制最少的操作系统。其他公司或者个人可以下载源代码,进行修改后不开源,比如一些网络设备生产商修改源代码后集成到自己的产品中,修改后的代码不开源是不违法的,这点与 Linux 操作系统不同。

FreeBSD 是最理想的网络服务器操作系统之一,可以从 http://www.freebsd.org/zh_CN/where.html 网站下载。鼎鼎有名的开源 NAS 项目 FreeNAS 就是采用了这个操作系统。

3)Illumos 内核

Oracle 收购 Sun 公司之后,关闭了 OpenSolaris 开源项目,推出闭源的 Solaris 11 操作系统和一个简化版的 Solaris 11 Express。Solaris 11 可以从官方网站下载,如果商用,就需要购买服务,个人和实验室可以免费使用。

OpenSolaris 的原班人马几乎都离开了 Oracle 公司,分别加入了以 illumos 为核心的各个厂商,一时间发布了许多个开源版本,如 Napp-it to GO、NexentaStor、OmniOS、SmartOS、StormOS、illumian、OpenIndiana,可分别应用于后台服务器、桌面计算机、存储、嵌入式等领域。这些发行版都以 illumos 为核心,这一点类似于各种 Linux 发行版,如红帽、乌班图、Debian 等 Linux 操作系统发行版都是以 Linux 为核心的。

利用 Napp-it to GO 自己搭建 NAS 存储是一个低成本的存储解决方案,其中核心是 ZFS 文件系统。但是开源的各个操作系统版本中 ZFS 文件系统只到 2.8 版本,更高的版本被 Oracle 公司闭源了,Oracle 公司现在已经推出了 ZFS 3.4 版本。如果自己使用,则可以采用 Solaris 11+Napp-it 组件企业级的 NAS 存储系统。不过 Napp-it 的界面太过复杂,用户体验非常糟糕。

常用数据库有哪些(附带数据库排名)?

表 1 所示列出了每一类数据库的前 3~5 名,排名会不断变化,实时的排名参见 http://db-engines.com/en/ranking 网站。

大类类别前3~5名说明
SQL关系数据库Oracle、MySQL/MariaDB、SQL Server、PostgrcSQL、 DB2遵循“表一记录”模型。按行存储在文件中(先第 1 行,然后第 2 行……)
NoSQL时序数据库InfluxDB、RRDtool、Graphite、OpcnTSDB、Kdb+存储时间序列数据,每条记录都带有时间戳。如存储从感应器采集到的数据
键/值数据库Redis、Memcached、Riak KV、Hazelcast、Ehcache遵循“键——值”模型,是最简单的数据库管理系统
文档数据库MongoDB、Couchbase、Amazon DynamoDB、CouchDB、MarkLogic无固定结构,不同的记录允许有不同的列数和列类型。列允许包含多值,记录允许嵌套
图数椐库Neo4j、OrientDB、Titan、Virtuoso、ArangoDB以“点——边”组成的网络(图结构)来存储数据
搜索引擎Elasticsearch、Solr、Splunk、MarkLogic、Sphinx存储的目的是为了搜索,主要功能是搜索
对象数据库Caché、db4o、Versant Object Database、ObjcctStore、Matisse受面向对象编程语言的启发,把数据定义为对象并存储在数据库中,包括对象之问的关系,如继承
宽列数据库Cassandra、HBase、Accumulo按照列(由“键——值”对组成的列表)在数据文件中记录数据,以获得更好的请求及遍历效率。一行中的列数允许动态变化,且列的数目可达数百万,每条记录的关键码不同,支持多值列。

下面对排名靠前的开源数据库做一些简单介绍。

1. MySQL/MariaDB

2008 年美国 Sun 公司花费 10 亿美元收购 MySQL,一年后 Oracle 公司又花费 60 亿美元收购了 Sun 公司,从此 Sun 公司的服务器、操作系统、MySQL 等产品线全部归属 Oracle 公司。

拉力·艾立森奉行的经营哲学是“竞争不过它,我就买了它”。竞争不过,说明竞争对手的产品更具优势,所以收购它,从而变成自己的优势。几十年来,Oracle 从一家小型数据库公司变成今天覆盖硬件、平台软件、数据库、中间件、应用软件各个层次产品线的 IT 巨无霸,靠的就是美国的良好环境和总裁奉行的收购策略。

MySQL 数据库占据中小型数据库应用市场的半壁江山,在这块市场,Oracle 数据库明显占下风,巅峰时世界上超过 70% 的网站后台都采用 MySQL 数据库。但是自从被 Oracle 公司收购后,MySQL 发展明显趋缓,是继续开源还是闭源,Oracle 公司一直没下定论。于是 MySQL 的原班人马陆续离开 Oracle 公司,另立炉灶,推出了 MariaDB 开源数据库。

MariaDB 继承了 MySQL 小巧精悍、简洁高效、稳定可靠的特征,并与 MySQL 保持兼容。时至今日,已有 Google、Facebook 等知名企业把应用从 MySQL 切换到了 MariaDB 上,各种 Linux 发行版的操作系统默认数据库都开始采用 MariaDB;而 Apple 公司反应更快,当 Oracle 公司收购 Sun 公司时,就切换到了 PostgreSQL 数据库。

截至 2014 年年末的数据库综合排名,MySQL 继续位居第二名,但是其表现出来的颓势较明显,而 MariaDB 却具备强劲的生命力。

MariaDB 是一个开源的免费的关系数据库,截至发稿前的最新版本是 10.0.15,安装包可从 https://downloads.mariadb.org 网站下载。整个安装包大约 200MB,几乎能在所有的操作系统上安装和运行,与 Oracle 数据库、SQL Server、DB2 等商业数据库动辄好几张光盘相比,算是短小精悍了。

另外,也可以从这个网站下载数据库的源代码。对于非数据库型的 SaaS 云提供商来说,云端采用 MariaDB 是最好的选择,而且可以轻松搭建数据库集群。

2. PostgreSQL

PostgreSQL 能被苹果公司大量使用并替换早期的 MySQL 数据库,说明其一定有不俗的表现。在 2014 年年末的数据库排行榜上,PostgreSQL 位居第四位,号称世界上最先进的、最安全的开源数据库,也是面向对象的关系数据库。

华为内部局域网接入控制系统 SPES 也采用 PostgreSQL 数据库,在 Linux 操作系统上运行,极少出问题。经过十多年的磨砺,如今 PostgreSQL 数据库具备如下特点:

  • 面向对象,安全性极高,能运行在全部主流的操作系统上,完全 ACID 兼容。
  • 支持外键、连接、视图、触发器和存储过程(多语言)。
  • 支持最新的 SQL 2008 标准的数据类型,包括整型、数字型、字符型、布尔型、可变字符型、日期型、时间戳、自增长型以及各种二进制对象(如图片、声音和视频等)。
  • 提供了各种流行语言的编程接口,如 C/C++Java、.NET、Perl、Python、Ruby、Tcl、ODBC 等。

PostgreSQL 数据库同时具备很多众多令人振奋的优点,比如在线备份、数据域、表分区、表空间、嵌套事务、时刻点恢复、两段式提交、多版本并发控制、子查询等。

在 PostgreSQL 中,数据库大小没有限制,表大小上限为 32TB,一条记录的大小上限为 1.6TB,字段大小上限是 1GB,一个表包含的记录数没有限制,一条记录的字段数上限为 1600 个,一个表上创建的索引数目没有限制。

另外,SQLite 是一个非常小型的 ACID 兼容的关系数据库,适合嵌入式系统。

3. InfluxDB

InfluxDB 是一个开源的时间序列数据库,能应付极高的写和查询并发数,主要用于存储大规模的时间戳数据(每条记录自动附加时间戳),如 DevOps 监控数据、应用系统运行指标数据、物联网感应器采集的数据及实时分析的结果数据等。InfluxDB 具备如下特征:

  • 全部用 Go 语言编写,并被编译成单一运行程序,无须第三方依赖。
  • 简洁、高效地写和查询 HTTP(S)编程接口(API)。
  • 通过插件能与其他的数据采集工具集成,如 Graphite、collectd、OpenTSDB。
  • 可以搭建高可用性的 InfluxDB 环境。
  • 量身定制化的类-SQL 语言。
  • 允许给序列数据附加标签来创建索引,以便快速高效查询。
  • 通过定义策略轻松实现自动失效过时的数据。
  • 基于 Web 的管理界面。

对于一个具体的时间序列应用来说,除存储外,还需要集成数据采集、可视化和告警功能。为此,InfluxData 社区相应提供了 Telegraf(数据采集)、Chronograf(数据可视化)、Kapacitor(告警)三个开源项目,再加上 InfluxDB,能部署成一个完整的时间序列应用系统(简称为 TICK)。这四者的关系如图 1 所示。

数据采集示意图
图 1 数据采集示意图

4. Redis

Redis 是遵循 BSD 开源协议的存储系统,数据存储在内存中,因此具备极高的性能,可用作数据库、缓存和消息中间件。Redis 支持多种类型的数据结构,如字符串、哈希、列表、集合、带范围查询的有序集合、位图、hyperloglogs 和带半径查询的地理空间索引。

Redis 内置了复制、脚本语言编程、最近最少使用(LRU)淘汰、事务以及不同级别的磁盘持久化等功能,通过 Redis Sentinel 和集群自动分区机制实现高可用性。Redis 采用 C 语言编写,能运行在 Windows、MacOS X、Linux、Solaris 等操作系统上,不过 Linux 是其最佳的运行平台,无须第三方依赖,它提供了最广泛的编程语言接口。

5. MongoDB

MongoDB 是排名第一的文档数据库,属于 NoSQL 大类,诞生于 2009 年,正好是云计算兴起的前夜。MongoDB 采用 C++ 语言开发,能运行在 Windows、MacOS X、Linux、Solaris 操作系统上,提供了绝大部分计算机语言的编程接口。保存在 MongoDB 中的一条记录称为一个文档,类似 JSON 语法,例如:

img

从上面的例子可以看出,一个文档就是“键:值”对的集合。

MongoDB 的主要优势包括:高性能、富查询语言(支持 CRUD、数据聚合、文本搜索和地理空间查询)、高可靠性、自动伸缩架构、支持多存储引擎。MongoDB 适合文档存储、检索和加工的应用场合,如大数据分析。

6. Neo4j

Neo4j 是一个用 Java 语言开发的图数据库,它将结构化数据存储在由“点—边”组成的网络(数学术语叫“图”)上而不是表中。与关系数据库相比,图数据库擅长处理大量复杂、互连接、低结构化的数据。这些数据变化迅速,需要频繁查询,如果使用关系数据库,那么这些查询会导致大量的表连接,因此会产生性能上的问题。

Neo4j 重点解决了拥有大量连接的传统关系数据库在查询时出现的性能衰退问题。Neo4j 还提供了非常快的图算法、推荐系统和 OLAP 风格的分析,而这一切在目前的关系数据库系统中都无法实现。Neo4j 提供了广泛使用的 REST 接口,能够方便地集成到基于 Java、PHP、.NET 和 JavaScript 的环境里。

Neo4j 使用 Cypher 语言进行增删改操作,例如:

img

img

创建了两个节点:变量“e1”和“e2”,标签“员工”,属性“{……}”。

img

创建了一条边,最终形成下图,如图 2 所示。

最终形成
图 2 最终形成

7. Elasticsearch

Elasticsearch 是一个高度可扩展的开源全文搜索和分析引擎,用于存储、搜索和近乎实时地分析大规模数据。Elasticsearch 常被人们用于构建具备复杂搜索功能的应用系统,比如维基百科和优步的搜索,再比如网店中搜索商品、商业智能、日志收集与分析、价格告警等。利用 Elasticsearch 实现的数据采集、存储和可视化套件 ELK(Elasticsearch、Logstash、Kibana)在日志分析领域应用最为广泛。

8. Caché

大概 20 年前,人们提出了后关系型数据库的概念,目前已有不少产品,其中由 InterSystems 公司开发的 Caché 是后关系型数据库中的领头羊,它提供 3 种方式访问数据:对象访问、SQL 访问、直接对多维数据数组访问,而且 3 种访问方式能够并发访问同一数据。多维数据结构和多种数据库访问方式构成了后关系型数据库的基础。

Caché 数据库具备如下一些特点:

1)速度快

Caché 数据库在同等条件下查询相同数据,比 Oracle 等普通数据库要快 7~20 倍。

2)节省存储空间

存储空间可能节省 2/3,而基于 Caché 的应用程序,比原来基于关系型数据库的应用程序运行有可能快 20 倍。

3)使用简单

Caché 数据库支持标准 SQL 语句,因此不太熟悉 M 语言的用户依然可以轻松对数据库中的数据进行操作。

4)接口容易

Caché 数据库支持 ODBC 标准接口,因此在与其他系统进行数据交换时非常容易,同时 Caché 亦可以将数据输出为文本文件格式,以供其他系统访问调用。

5)真正的三层结构

Caché 数据库能够在真正意义上实现 3 层结构,实现真正的分布式服务,便于做横向扩张。

为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。

本份面试集锦涵盖了

  • 174 道运维工程师面试题
  • 128道k8s面试题
  • 108道shell脚本面试题
  • 200道Linux面试题
  • 51道docker面试题
  • 35道Jenkis面试题
  • 78道MongoDB面试题
  • 17道ansible面试题
  • 60道dubbo面试题
  • 53道kafka面试
  • 18道mysql面试题
  • 40道nginx面试题
  • 77道redis面试题
  • 28道zookeeper

总计 1000+ 道面试题, 内容 又全含金量又高

  • 174道运维工程师面试题

1、什么是运维?

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

3、现在给你三百台服务器,你怎么对他们进行管理?

4、简述raid0 raid1raid5二种工作模式的工作原理及特点

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

7、Tomcat和Resin有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐