云计算总结(未完正更)

云计算总结

第一章——大数据与云计算

大数据的定义
海量数据或巨量数据,其规模巨大到无法通过目前主流的计算机系统在合理时间内获取、存储、管理、处理并提炼以帮助使用者决策。
大数据的特点(4V+1C)

  1. 价值密度低(Value)
  2. 数据量大(Volume):存储的数据量巨大,对其分析的计算量也大。
  3. 快速(Velocity):数据增长速度快,越新的数据价值越大,要求快速处理。
  4. 多样(Variety):数据的来源及格式多样。
  5. 复杂度(Ccomplexity):对数据的处理和分析的难度大。
    云计算与大数据的关系
    云计算是处理大数据的手段。没有大数据,就不需要云计算。
  • 云计算与大数据的关系是静与动的关系
    云计算强调的是计算能力,或者看重的是存储能力
    云计算能为大数据带来的变化
  • 云计算为大数据提供了可以弹性扩展、相对便宜的存储空间和计算资源
  • 云计算IT资源庞大,分布较为广泛。
    云计算的定义
    云计算长定义
    云计算是一种商业计算模型。它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。
    云计算短定义
    云计算使通过网络按需提供可动态伸缩的廉价计算服务。
    云计算的基本思想
  1. 所有的计算能力、存储能力、和各种各样功能的应用都是通过网络从云端获得。
  2. 用户不需要不停地更能换昂贵的高性能电脑。
  3. 用户不需要购买、安装和维护各种系统和应用软件。
  4. 用户不需要担心数据的安全存储。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DiTJdLLi-1666617700378)(resources/a8feda92c96a4ac7bb16e94b6d58d870.png)]

云计算按服务类型大致分为三类:

  1. 将软件作为服务SaaS:针对性更强,它将某些特定应用软件功能封装成服务。
  2. 将平台作为服务PaaS:对资源的抽象层次更进一步,提供用户应用程序运行环境
  3. 将基础设施作为服务 :将硬件设备等基础资源封装成服务提供用户使用。

云计算的交付模型——IaaS

基础设施即服务:服务提供商将多台服务器提供给用户。主要功能如下:
资源抽象 使用资源抽象方法,能更好地调度和管理物理资源。
负载管理 使部署在急促设施上的用用能更好地应对突发情况,并更好地利用系统资源。
数据管理 数据的完整性、看可靠性和可管理性是云计算对Iaas的基本要求。
资源部署 将整个资源从创建到使用的流程自动化。
安全管理 保证基础设施和其提供资源被合法地访问和使用。
计费管理 通过细致的计费管理能使用户更灵活地使用资源。

云计算的交付模型——PaaS

平台即服务:是将服务器平台或者开发环境作为服务进行提供。
好的开发环境 通过SDK和IDE等工具让用户能在本地方便地进行应用的开发和测试。
丰富的服务 PaaS平台会以API的形式将各种各样的服务提供给上层应用。
自动的资源调度 可伸缩特性,不仅能优化系统资源,而且能自动调整资源来帮助运行于其上的应用更好的应对突发流量。
优秀的管理和监控 观察应用运行的情况和数值来衡量应用的运行状态,通过精确计量应用所消耗的资源来更好的计费。
优势:开发简单、部署简单、维护简单。

云计算的交付模型——SaaS

软件即服务,它是一种通过Internet提供软件的模式,用户无需购买软件,而是向提供商租用基于Web的软件。
随时随地地访问 在任何时候,任何地点,只要连上网络,用户就能访问这个SaaS服务。
支持公开协议 通过支持公开协议,就能方便用户使用。
安全保障 供应商需提供一定的安全机制,存储在云端的用户数据要绝对安全,并且客户端要试试一定的安全机制来保护用户。
多用户机制 更经济的支持庞大的用户规模,并提供一定的可指定性,以满足用户的特殊需求。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DgFtxCJl-1666617700380)(resources/36e77375bf0445ef92f53b95a3ab5e3f.png)]

云计算的部署模式——公有云

公有云是指为外部客户提供服务的云,它所有的服务是供别人使用,而不是自己使用。
应用程序、资源、存储和其它服务,都由云服务提供商来提供给用户,这些服务多半都是免费的,也有部分按需按使用量来付费,这种模式只能使用互联网来访问和使用。
存在的问题: 安全性(数据不存储在用户中心)和可用性(不受使用者控制)

云计算的部署模式——私有云

私有云是指企业使用自己的云,它所有的服务不是别人使用,而是供自己内部人员或分支机构使用。
私有云的部署比较适合于有众多分支机构的大型企业或政府部分。随着这些大型企业数据中心的集中化,私有云将会成为他们部署IT系统的主流模式。
优点: 安全性、可用性比公有云好一些。
缺点: 成本较大。

云计算的部署模式——混合云

混合云是指提供自己和客户共同使用的云,它所提供的服务既可以供别人使用,也可以供自己使用。
混合云是两种或两种以上的云计算模式的混合体,如公有云和私有云混合。

云计算的部署模式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oBNVEVY6-1666617700380)(resources/8622b3d2dfa04a499b08148f08f8e010.png)]

云计算关键技术包括:
虚拟化、分布式存储、分布式计算、云平台管理技术等

分布式计算与云计算

  • 分布式计算将应用分解成许多更小的部分,分配到多台计算机进行处理。
  • 云计算是分布式计算技术的一种,也是分布式计算这种科学概念的商业实现。
  • 分布式计算的优点就是发挥集体的力量,可以节省整体计算时间,大大提高计算效率。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Uxw7vMj5-1666617700381)(resources/cbd29d239e014a10879a2ec4010a1336.png)]

云计算面临的挑战

  1. 服务的可持续性: 云服务是部署及应用在互联网上的,用户难免会担心服务是否一直在用。
  2. 服务的安全性: 数据本身的保密性;数据平台软/硬件的安全性。
  3. 服务的迁移: 是否可以实现数据迁移,迁移后是否兼容。
    4.服务的性能: 云计算通过互联网进行传输,网络带宽会成为影响云服务质量的决定因素。

虚拟化与容器技术

虚拟化的定义:虚拟化就是将原本运行在真实环境上的计算机系统或组件运行在虚拟出来的环境中。
虚拟化技术的核心思想是:
利用软件或固件管理程序构成虚拟化层,把物理资源映射为虚拟资源。在虚拟资源上可以安装和部署多个虚拟机,实现多用户共享物理资源
三层含义:

  1. 虚拟化的对象是各种各样的资源。
  2. 经过虚拟化后的逻辑资源对用户隐藏了不必要的细节。
  3. 用户可以在虚拟环境中实现其在真实环境中的部分或者全部功能。
    虚拟化技术已经成为构建云计算环境的一项关键技术。
    ###虚拟化与云计算的关系
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ljjEyRNt-1666617700381)(resources/a54c9291b56149279ad6dba09c7a0c59.png)]

虚拟化技术实现了硬件无差别的封装,可以屏蔽不同硬件平台的差异性所带来的软件兼容问题,可以将硬件的资源通过虚拟化软件重新整合后分配给以用户,或者软件使用。

虚拟化的分类

服务器虚拟化定义:实现操作系统与物理计算机的分离,使得在一台物理计算机上可以同时安装和运行一个或者多个虚拟的操作系统。
虚拟机:使用系统虚拟化技术,运行在一个隔离环境中、具有完整硬件功能的逻辑计算机系统,包括操作系统和其中的应用进程。
服务器虚拟化——两种类型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bsRbOsvk-1666617700382)(resources/c9ea953be68a4d058fccbe999a122c3c.png)]

服务器虚拟化的层次——寄居虚拟化

  • 寄居虚拟化的虚拟化层一般称为虚拟机监控器。
  • 通过宿主操作系统来管理和访问各类资源。
  • 没有Hypervisor层,主机操作系统负责在多个虚拟服务器之间分配硬件资源,并保证服务器彼此独立。
  • 这类虚拟化架构系统损耗比较大。
    服务器虚拟化的层次——原生虚拟化/裸机虚拟化
  • 将VMM安装在服务器硬件设备中,VMM可认为是一个操作系统,一般称为Hypervisor,只不过是非常量级的操作系统。
  • Hypervisor实现从虚拟资源到物理资源的映射。
  • Hypervisor实现了不同虚拟机的运行上下文保护与切换,保证了各个客户虚拟系统的有效隔离。
    服务器虚拟化——关键技术:CPU虚拟化
    物理CPU抽象成虚拟 CPU,任何时刻一个物理CPU只能运行一个虚拟CPU的指令。
  • 在x86体系中实现虚拟化,需要在客户操作以下加入虚拟化,来实现物理资源的共享。
  • 虚拟化x86体系结构问题的关键在于虚拟机里执行的敏感指令不能直接作用于真实硬件之上,需要被虚拟机监视器接管。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hsn35i5k-1666617700383)(resources/729afeebe4e147ccb03c33b963bb5ba0.png)]

服务器虚拟化——关键技术:内存虚拟化
内存虚拟化技术把物理内存统一管理,包装成多个虚拟的物理内存提供给若干虚拟机使用,每个虚拟机拥有各自独立的内存空间。
需要维护物理机里的内存地址块和虚拟机内部的连续内存块的映射关系,具备管理虚拟内存的机制。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UXOFaPQP-1666617700383)(resources/9470020247fa4462b4cff0eac07c59c5.png)]

服务器虚拟化——关键技术:I/O设备虚拟化
I/O设备虚拟化技术把真实的设备统一管理起来,包装成多个虚拟设备给若干个虚拟机使用,相应每个虚拟机的设别访问请求和I/O请求。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uvrGVcoM-1666617700384)(resources/871ff76ae0d3469f86545319054904fd.png)]

服务器虚拟化——关键技术:I/O设备虚拟化
将虚拟机实例从源宿主机迁移到目标宿主机,并且在目标宿主机上能够将虚拟机运行状态恢复到其在迁移之前的状态,以便能够完成应用程序的任务。
整个过程是平滑的,用户不会察觉。
保证云端负载均衡。
故障发生时也能有效恢复。

虚拟化的分类

网络虚拟化

将不同网络的硬件和软件资源结合成一个虚拟的整体,通常包括虚拟专用网和虚拟局域网
网络虚拟化用途
虚拟专用网(VPN)

  • 在大型网络中的不同计算机(节点)通过加密而组成的虚拟网络。
  • 允许远程用户访问组织内部的网络。
    虚拟局域网
  • 将一个物理网划分成多个虚拟局域网。
  • 将多个物理网划分到一个虚拟网中。

存储虚拟化

其是指将存储网络中各个分散且异构的存储设备按照一定的策略映射成一个统一的连续编址的逻辑存储空间,称为虚拟存储池,并将虚拟存储池的访问接口提供给应用系统。
将实际的物理存储实体于存储的逻辑表示分离开来,应用服务器只与分配给它们的逻辑卷(或称虚卷)打交道,而不用关心其数据时在哪个物理存储实体上。

应用虚拟化

应用虚拟化把应用对底层的系统和硬件的依赖抽象出来,从而解除应用程序提供了一个虚拟的运行环境。
好处:

  • 能够使用软件从集中位置来配置PC及其它客户端设备。
  • 方便管理者对企业终端进行统一认证、管理和调配资源。
  • 可以对客户环境进行快照、备份。

Xen

Xen是一个开放源代码虚拟机监视器,由剑桥大学开发。它打算在单个计算机上运行多达100个满特征的操作系统。操作系统必须进行显式地修改。
KVM使用Linux自身的调度器进行管理,所以相对于Xen,其核心代码很少,KVM的虚拟化需要硬件支持。 它是基于硬件的完全虚拟化,目前已称为主流的VMM之一。

2.6 Docker基础与实践

Docker核心思想:隔离;打包装箱;每个箱子相互隔离
Docker通过
隔离机制**,将服务器利用到极致。
Docker是一个开源应用容器引擎,开发者可以打包他们的应用以及依赖包到一个可移植的容器中然后发布到任何Linux机器上。
举例:
java号称“一次编译,到处运行”,因为Java虚拟机解决平台的兼容性问题,所以有java虚拟机的地方就能跑java代码。
Docker是:“一次封装,到处运行”,因为docker解决了应用环境的问题,安装了docker的平台就能跑"docker包",这样就解决了“开发环境能跑,一上线就崩”的尴尬。

虚拟机技术

管理系统:Hypervisor
客户机系统:运行3个相互隔离的应用,则需要使用Hypervisor启动3个客户机操作系统,也就是3个虚拟机。这些虚拟机都非常大,也许有700MB,这就意味着它们将占用2.1GB的磁盘空间。更糟糕的是,它们还会消耗很多CPU和内存。
虚拟机技术缺点:

  1. 资源占用十分多。
  2. 冗余步骤多。
  3. 启动很慢。
容器化技术

Docker引擎:
Docker守护进程。
Docker守护进程取代了Hypevisor,它是运行在操作系统之上的后台进程,负责管理Docker容器。
客户机系统:
无,主机操作系统内核共享。
隔离性差,相关信息会共享。
许多依赖直接打到镜像中,不需要安装。

Docker和虚拟机技术的不同
  • 传统虚拟机,虚拟出一套硬件,运行一个完整的操作系统。
  • 容器内的应用直接运行在宿主机的内核,容器没有自己的内核,也没有虚拟硬件,所以比较轻便
  • 每个容器间是相互隔离,每个容器都有一个属于自己的文件系统,互不影响。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3ZdL8DGi-1666617700385)(resources/abe39bc681814d8781e488dcfa04ff74.png)]

对比:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-04RTZqRa-1666617700386)(resources/cf527aaa21ad4ba9a8e9517f670fbdc3.png)]

Docker应用场景
  1. 简化配置
  2. 提高开发效率
  3. 整合服务器
  4. 多租户环境
  5. 代码流水线
  6. 隔离应用
  7. 调试能力
  8. 快速部署
Docker给我们带来的好处
  1. 秒级的交付和部署
  2. 保持环境一致性
  3. 高效的资源利用
  4. 弹性的伸缩
  5. 动态调度迁移成本低
  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Java中,泛型是一种强类型机制,它可以让你在编译时检查类型错误,从而提高代码的安全性和可读性。在使用泛型时,我们经常会遇到父类和子类的泛型转换问题。 首先,我们需要明确一点:子类泛型不能转换成父类泛型。这是因为Java中的泛型是不协变的。例如,如果有一个类A和它的子类B,那么List<A>和List<B>之间是不存在继承关系的。 下面我们来看一个例子: ```java public class Animal { //... } public class Dog extends Animal { //... } public class Test { public static void main(String[] args) { List<Animal> list1 = new ArrayList<>(); List<Dog> list2 = new ArrayList<>(); list1 = list2; // 编译错误 } } ``` 在这个例子中,我们定义了Animal类和它的子类Dog。然后我们定义了两个List,分别是List<Animal>和List<Dog>。如果将List<Dog>赋值给List<Animal>,会出现编译错误。这是因为List<Animal>和List<Dog>之间不存在继承关系。 那么,如果我们想要让子类泛型转换成父类泛型,应该怎么办呢?这时我们可以使用通配符来解决问题。通配符可以表示任意类型,包括父类和子类。例如,我们可以将List<Dog>赋值给List<? extends Animal>,这样就可以实现子类泛型转换成父类泛型了。 下面我们来看一个使用通配符的例子: ```java public class Animal { //... } public class Dog extends Animal { //... } public class Test { public static void main(String[] args) { List<Animal> list1 = new ArrayList<>(); List<Dog> list2 = new ArrayList<>(); list1 = list2; // 编译错误 List<? extends Animal> list3 = new ArrayList<>(); list3 = list2; // 正确 } } ``` 在这个例子中,我们定义了List<? extends Animal>来表示任意继承自Animal的类型。然后我们将List<Dog>赋值给List<? extends Animal>,这样就可以实现子类泛型转换成父类泛型了。 总结一下,Java中的泛型是不协变的,子类泛型不能转换成父类泛型。如果需要实现子类泛型转换成父类泛型,可以使用通配符来解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值