Java核心知识点整理大全27-笔记(已完结)

30. 云计算

30.1.1. SaaS

SaaS 是 Software-as-a-Service(软件即服务)

30.1.2. PaaS

PaaS 是 Platform-as-a-Service 的缩写,意思是平台即服务。 把服务器平台作为一种服务提供的 商业模式。通过网络进行程序提供的服务称之为 SaaS(Software as a Service),而云计算时代相 应的服务器平台或者开发环境作为服务进行提供就成为了 PaaS(Platform as a Service)。

30.1.3. IaaS

IaaS(Infrastructure as a Service),即基础设施即服务。提供给消费者的服务是对所有设施的 利用,包括处理、存储、网络和其它基本的计算资源,用户能够部署和运行任意软件,包括操作 系统和应用程序。

30.1.4. Docker

30.1.4.1. 概念

Docker 的出现一定是因为目前的后端在开发和运维阶段确实需要一种虚拟化技术解决开发环境和 生产环境环境一致的问题,通过 Docker 我们可以将程序运行的环境也纳入到版本控制中,排除因 为环境造成不同运行结果的可能。但是上述需求虽然推动了虚拟化技术的产生,但是如果没有合 适的底层技术支撑,那么我们仍然得不到一个完美的产品。本文剩下的内容会介绍几种 Docker 使 用的核心技术,如果我们了解它们的使用方法和原理,就能清楚 Docker 的实现原理。Docker 使 用客户端-服务器 (C/S) 架构模式,使用远程 API 来管理和创建 Docker 容器。Docker 容器通过 Docker 镜像来创建。

30.1.4.2. Namespaces

命名空间(namespaces)是 Linux 为我们提供的用于分离进程树、网络接口、挂载点以及进程间 通信等资源的方法。在日常使用 Linux 或者 macOS 时,我们并没有运行多个完全分离的服务器的 需要,但是如果我们在服务器上启动了多个服务,这些服务其实会相互影响的,每一个服务都能 看到其他服务的进程,也可以访问宿主机器上的任意文件,这是很多时候我们都不愿意看到的, 我们更希望运行在同一台机器上的不同服务能做到完全隔离,就像运行在多台不同的机器上一样。

Linux 的命名空间机制提供了以下七种不同的命名空间,包括 CLONE_NEWCGROUP、 CLONE_NEWIPC、CLONE_NEWNET、CLONE_NEWNS、CLONE_NEWPID、 CLONE_NEWUSER 和 CLONE_NEWUTS,通过这七个选项我们能在创建新的进程时设置新进程 应该在哪些资源上与宿主机器进行隔离。

30.1.4.3. 进程(CLONE_NEWPID 实现的进程隔离)

docker 创建新进程时传入 CLONE_NEWPID 实现的进程隔离,也就是使用 Linux 的命名空间实现 进程的隔离,Docker 容器内部的任意进程都对宿主机器的进程一无所知。当我们每次运行 docker run 或者 docker start 时,都会在创建一个用于设置进程间隔离的 Spec,同时会设置进 程相关的命名空间,还会设置与用户、网络、IPC 以及 UTS 相关的命名空间,所有命名空间相关 的设置 Spec 最后都会作为 Create 函数的入参在创建新的容器时进行设置。

30.1.4.4. Libnetwork 与网络隔离

如果 Docker 的容器通过 Linux 的命名空间完成了与宿主机进程的网络隔离,但是却有没有办法通过宿 主机的网络与整个互联网相连,就会产生很多限制,所以 Docker 虽然可以通过命名空间创建一个隔离 的网络环境,但是 Docker 中的服务仍然需要与外界相连才能发挥作用。

Docker 整个网络部分的功能都是通过 Docker 拆分出来的 libnetwork 实现的,它提供了一个连接不同 容器的实现,同时也能够为应用给出一个能够提供一致的编程接口和网络层抽象的容器网络模型。

libnetwork 中最重要的概念,容器网络模型由以下的几个主要组件组成,分别是 Sandbox、 Endpoint 和 Network。在容器网络模型中,每一个容器内部都包含一个 Sandbox,其中存储着当前 容器的网络栈配置,包括容器的接口、路由表和 DNS 设置,Linux 使用网络命名空间实现这个 Sandbox,每一个 Sandbox 中都可能会有一个或多个 Endpoint,在 Linux 上就是一个虚拟的网卡 veth,Sandbox 通过 Endpoint 加入到对应的网络中,这里的网络可能就是我们在上面提到的 Linux 网桥或者 VLAN。

每一个使用 docker run 启动的容器其实都具有单独的网络命名空间,Docker 为我们提供了四种不同 的网络模式,Host、Container、None 和 Bridge 模式。

在这一部分,我们将介绍 Docker 默认的网络设置模式:网桥模式。在这种模式下,除了分配隔离的网 络命名空间之外,Docker 还会为所有的容器设置 IP 地址。当 Docker 服务器在主机上启动之后会创建 新的虚拟网桥 docker0,随后在该主机上启动的全部服务在默认情况下都与该网桥相连。在默认情况下,每一个容器在创建时都会创建一对虚拟网卡,两个虚拟网卡组成了数据的通道,其中一个会放在创建的 容器中,会加入到名为 docker0 网桥中。

30.1.4.5. 资源隔离与 CGroups

Control Groups(简称 CGroups)能够隔离宿主机器上的物理资源,例如 CPU、内存、磁盘 I/O 和网 络带宽。每一个 CGroup 都是一组被相同的标准和参数限制的进程,不同的 CGroup 之间是有层级关 系的,也就是说它们之间可以从父类继承一些用于限制资源使用的标准和参数。

30.1.4.6. 镜像与 UnionFS

Linux 的命名空间和控制组分别解决了不同资源隔离的问题,前者解决了进程、网络以及文件系统 的隔离,后者实现了 CPU、内存等资源的隔离,但是在 Docker 中还有另一个非常重要的问题需 要解决 - 也就是镜像。

Docker 镜像其实本质就是一个压缩包,我们可以使用命令将一个 Docker 镜像中的文件导出,你 可以看到这个镜像中的目录结构与 Linux 操作系统的根目录中的内容并没有太多的区别,可以说 Docker 镜像就是一个文件。

30.1.4.7. 存储驱动

Docker 使用了一系列不同的存储驱动管理镜像内的文件系统并运行容器,这些存储驱动与 Docker 卷(volume)有些不同,存储引擎管理着能够在多个容器之间共享的存储。 当镜像被 docker run 命令创建时就会在镜像的最上层添加一个可写的层,也就是容器层,所有对 于运行时容器的修改其实都是对这个容器读写层的修改。

容器和镜像的区别就在于,所有的镜像都是只读的,而每一个容器其实等于镜像加上一个可读写 的层,也就是同一个镜像可以对应多个容器

UnionFS 其实是一种为 Linux 操作系统设计的用于把多个文件系统『联合』到同一个挂载点的文 件系统服务。而 AUFS 即 Advanced UnionFS 其实就是 UnionFS 的升级版,它能够提供更优秀 的性能和效率。

AUFS 只是 Docker 使用的存储驱动的一种,除了 AUFS 之外,Docker 还支持了不同的存储驱动, 包括 aufs、devicemapper、overlay2、zfs 和 vfs 等等,在最新的 Docker 中,overlay2 取代了 aufs 成为了推荐的存储驱动,但是在没有 overlay2 驱动的机器上仍然会使用 aufs 作为 Docker 的默认驱动。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一键解决GIF转PNG难题,批量处理图片,轻松优化你的图片管理!

亲爱的朋友们,你是否经常遇到需要将GIF格式的图片转换成PNG格式的困扰?批量处理图片又是否让你感到烦恼?现在,我们为你带来了一款全新的图片处理工具——轻松转换GIF到png,批量处理图片,优化你的图片管理 …

springBoot整合quartz

springBoot整合quartz 文章目录 springBoot整合quartz 导坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency>定义任务&#xff0c;不需要定义为Bean&#x…

新功能?浅谈nuclei的反制思路

code新功能&#xff1f; 写poc时&#xff0c;习惯性查官方文档的时候&#xff0c;注意到了一个新的功能&#xff1a;code 链接直达&#xff1a;https://docs.projectdiscovery.io/templates/protocols/code 大概翻译下&#xff1a; Nuclei 支持在主机操作系统上执行外部代码。…

注意力机制及Transformer-3GPT版

#pic_center R 1 R_1 R1​ R 2 R^2 R2 目录 知识框架No.1 自注意力机制(self-attention)一、输入的种类以及表示1、输入是a vector2、输入是a set of vectors(一段文字)3、输入是a set of vectors(一段音频)4、输入是a set of vectors(一段图谱)5、输入是a set of vectors(一个…

4个Pycharm高效插件

大家好&#xff0c;Pycharm是Python最受欢迎的集成开发环境之一&#xff0c;它具有良好的代码助手、漂亮的主题和快捷方式&#xff0c;使编写代码变得简单快捷。话虽如此&#xff0c;开发者仍可以通过使用一些插件来提高在Pycharm中编写Python代码的效率和乐趣&#xff0c;在市…

00后卷王真的很卷吗?

前言 都在传00后躺平、整顿职场&#xff0c;但该说不说&#xff0c;是真的卷&#xff0c;感觉我都要被卷废了... 前段时间&#xff0c;公司招了一个年轻人&#xff0c;其中有一个是00后&#xff0c;工作才一年多&#xff0c;直接跳槽到我们公司&#xff0c;薪资据说有18K&…

Docker下搭建MySQL主从复制

目录 主从复制简介 主从复制搭建 主从复制简介 主从复制&#xff0c;是用来建立一个和主数据库完全一样的数据库环境&#xff0c;称为从数据库&#xff1b;主数 据库一般是准实时的业务数据库。 主从复制的作用 做数据的热备。作为后备数据库&#xff0c;主数据库服务器故…

Elasticsearch:么是向量嵌入?

向量嵌入定义 向量嵌入 (vector embeddings) 是一种将单词、句子和其他数据转换为捕获其含义和关系的数字的方法。 它们将不同的数据类型表示为多维空间中的点&#xff0c;其中相似的数据点更紧密地聚集在一起。 这些数字表示可以帮助机器更有效地理解和处理这些数据。 单词和…

Jenkins持续集成之修改jenkins工作目录

修改jenkins工作目录 一般不建议把工作目录放到默认的C盘&#xff0c;故可以更改到其他盘中 前置条件&#xff1a;先在其他盘中新建工作目录的文件&#xff1b;如下图 1、首先打开任务管理器&#xff0c;找到服务中的Jenkins进程 2、右击点击转到详细信息&#xff1b; 3、再右…

分享4个工具,轻松搞定PDF和图像中提取文本

大型语言模型已经席卷了互联网&#xff0c;导致更多的人没有认真关注使用这些模型最重要的部分&#xff1a;高质量的数据&#xff01; 本文旨在提供一些有效从任何类型文档中提取文本的技术。 Python库 本文专注于Pytesseract、easyOCR、PyPDF2和LangChain库。实验数据是一个…

shell 脚本计算距离最近的坐标

shell 脚本计算距离最近的坐标 坐标数据文件geo.log格式如下&#xff1a; beijing(116.405285,39.904989) tinajin(117.190182,39.125596) hebei(114.502461,38.045474) shanxi(112.549248,37.857014) neimenggu(111.670801,40.818311) liaoning(123.429096,41.796767) jilin(1…

012 OpenCV sobel边缘检测

目录 一、环境 二、soble原理介绍 三、源码实验 一、环境 本文使用环境为&#xff1a; Windows10Python 3.9.17opencv-python 4.8.0.74 二、soble原理介绍 Sobel边缘检测是一种广泛应用于图像处理领域的边缘检测算法&#xff0c;它通过计算图像灰度函数在水平方向和垂直…

包装材料ERP是什么?包装材料ERP有什么用

市面上的包装材料种类多种多样&#xff0c;而这些差异化的包装材料对应的产成品规格、型号、质量、销售策略和生产工艺等方面存在诸多差异。 另外&#xff0c;通常包装材料企业的营销渠道比较广泛&#xff0c;不同的销售平台有多样化的业务流程和管理方式&#xff0c;相同的商…

数字员工「取数宝」上新!4大优势,解决电商取数难题

全域电商&#xff0c;是近几年的新趋势&#xff0c;几乎所有商家都在布局全域&#xff0c;追求全域增长。但商家发现&#xff0c;随着投入成本的上涨&#xff0c;利润却没有增加。 其中最为突出的是——商家为保证全域数据的及时更新&#xff0c;通过堆人头的方式完成每日取数…

idea汉化

所有的jetbrains 汉化包下载地址&#xff0c; 包括leda &#xff0c;pycharm /&#xff0c;datagrip 等软件&#xff0c;&#xff0c;所有方法都一样&#xff1a;搜索对应的版本需要的包 下载后&#xff0c;在idea的插件中选择从磁盘加载&#xff0c;然后重启 &#xff0c;即可…

11.9密码加密,加盐算法(手动实现)

一.Spring提供了mb5加密的方法 注意:这种加密不安全,是有规律的,可以被暴力穷举(彩虹表). 二.加盐加密(每次调用都是随机的,无规律的) 1.思路: 每次调用该方法产生唯一的盐值, 加上明文密码, 再经过md5加密形成最终的密码. 三.代码实现 package com.example.demo.common;im…

C语言之结构体

一.前言引入. 我们知道在C语言中有内置类型&#xff0c;如&#xff1a;整型&#xff0c;浮点型等。但是只有这些内置类 型还是不够的&#xff0c;假设我想描述学⽣&#xff0c;描述⼀本书&#xff0c;这时单⼀的内置类型是不⾏的。描述⼀个学⽣需要名字、年龄、学号、⾝⾼、体…

【数据结构(五)】递归

文章目录 1. 递归的概念2. 递归能解决什么问题3. 递归的规则4. 递归实际应用案例4.1. 迷宫问题4.2. 八皇后问题4.2.1. 思路分析4.2.1. 代码实现 1. 递归的概念 简单的说: 递归就是方法自己调用自己&#xff0c;每次调用时传入不同的变量。递归有助于编程者解决复杂的问题&…

第二节:服务拆分(案例)

一、服务拆分注意事项 1.1 拆分原则 每个微服务&#xff0c;不要重复开发相同业务&#xff08;例如在单体项目中用到了一个查询&#xff0c;这个查询功能能够查询出订单信息、商品信息、用户信息&#xff0c;那么在拆分微服务时就不要将其写在一起了&#xff0c;订单的微服务只…

推荐3个完美替代 Navicat 的工具

现在企业&#xff0c;mysql数据库用的比较多&#xff0c;mysql数据库客户端的需求也就比较大&#xff0c;navicat就被大家所熟知。 这个工具&#xff0c;确实好用&#xff0c;功能也非常强大&#xff0c;但是&#xff0c;它的强大&#xff0c;是需要付费&#xff0c;或者用一些…