跳到正文Seminar Week 1 Summary · Jimmy Huang's Blog所有虚拟机都拥有公网 IP,NECTAR 管理员会监控网络流量以应对可能的安全隐患。
在 Nectar 云中进行的任何形式的欺诈(或违反指南的行为)都将被视为学术不端(Misconduct)。
Oracle Cloud, Google Cloud, AWS Academy 和 Azure 账号
我们提供免费资源,但我们不负责管理这些账号(NECTAR 除外)!
这意味着,如果你的账号遇到任何问题,包括但不限于以下几点,你需要联系资源供应商或使用付费版本:注册链接过期……
分配的额度用尽……
账号被封禁……
账号密码问题……
一些云资源供应商(如 Oracle)使用机器学习异常检测技术,如果出现以下情况,他们可能会封锁你的账号:
1-Principle
Learning Outcomes
什么是分布式系统(Distributed System)
一个系统,其中位于联网计算机上的硬件或软件组件仅通过消息传递进行通信并协调其行动。[Coulouris]
一组相互独立的计算机,但对用户来说表现为一个统一且连贯的系统。[Tanenbaum]
为什么需要分布式系统?
资源共享:硬件资源(磁盘、打印机、扫描仪等)
软件资源(文件、数据库等)
其他资源(处理能力、内存、带宽)
分布式系统的后果
分布式系统的挑战
Heterogeneity 异构性
分布式系统使用具有不同特征的硬件和软件资源(异构资源):
使用标准协议
使用约定一致的消息格式和数据类型
遵循约定一致的应用程序接口(APIs)
使用中间件
使用可移植代码
Openness 开放性
开放性指的是:系统能够通过增加硬件或软件资源,以不同方式进行扩展的能力。
公布关键接口
允许通过统一的通信机制在这些公开接口上进行通信
确保所有实现都遵循已发布的标准
Security 安全性
机密性(防止信息泄露给未授权人员)
完整性(防止被篡改和破坏)
可用性(防止对访问方式的干扰)
加密(例如 Blowfish、RSA)
认证(例如密码、公钥认证)
授权(例如访问控制列表)
拒绝服务攻击
针对移动代码的安全问题(作为附件的可执行文件)
Scalability 可拓展性
如果一个系统能够应对用户数量的增长,那么它就可以被认为是可扩展的。可扩展性挑战包括:
物理资源的成本:
对于一个有 n 个用户的系统,要具备可扩展性,支持该系统所需的物理资源数量应当是 O(n)。例如,如果一个文件服务器可以支持 20 个用户,那么两个服务器应当能够支持 40 个用户。
控制性能损失:
用于搜索、查找等操作的算法复杂度也应具备可扩展性。例如,对 n 个数据项进行搜索时,需要 O(log(n)) 步的搜索算法是可扩展的,而需要 n^2 的算法则不是。
资源不能耗尽:
例如,32 位互联网 IP 地址会耗尽,因此需要新的 128 位地址版本。
避免性能瓶颈:
应采用去中心化算法来避免性能瓶颈。
Concurrency 并发性
多个客户端可以同时访问同一个资源,在某些情况下还会进行更新
处理并发的一种方法是让访问顺序化——但这会降低系统速度
由操作系统支持的信号量(Semaphores)是一种广泛接受的并发处理机制
Failure Handling 故障处理
检测(Detecting):
某些类型的故障可以被检测出来,例如可以使用校验和来检测消息中的数据损坏;而某些故障则很难被确定,例如远程服务器是否发生故障。
屏蔽(Masking):
一些已经检测到的故障可以被隐藏或减轻其影响,例如超时和消息重传。
容忍(Tolerating):
将故障报告给用户,例如 Web 服务器不可用,请稍后再试。
恢复(Recovery):
软件可以被设计为在崩溃后恢复原始状态,例如实现回滚机制。
冗余(Redundancy):
服务可以通过冗余组件来容忍故障,例如两个路由器之间存在多条路径——如果一条路径失效,就使用另一条。
Transparency 透明性
这是指:将分布式系统的各个组件对用户和应用程序员隐藏起来的特性。
服务质量(QoS)
当用户已经获得其所需的服务功能后,我们还可以进一步考察所提供服务的质量(QoS)。
分布式系统中的体系结构模式
客户端—服务器(Client-server)
客户端调用服务器中的服务,并返回结果。服务器反过来也可以成为其他服务的客户端。
对等网络(Peer-to-peer)
系统中的每个进程都扮演相似的角色,以对等体的方式协作交互(同时扮演客户端和服务器的角色)
Layering 分层
软件体系结构会将单台计算机中的软件抽象为若干层或模块。每一层软件都向下一层提供服务。这些层被称为服务层(service layers)。
平台(Platform)
中间件(Middleware)
抽象软件层
分布式系统的发展趋势
分布式系统一直处于显著变化的过程中,这可以追溯到若干重要趋势:
普适网络技术(pervasive networking technology)的出现 普适计算(ubiquitous computing)的出现,并伴随着对在分布式系统中支持用户移动性的需求 对多媒体服务需求的不断增加
将分布式系统视为一种公共事业(utility)
作为公共事业的分布式计算
分布式资源可以被看作一种商品或公共事业,类似于水或电。
资源由合适的服务提供商提供,终端用户采用租用而不是拥有的方式使用这些资源。
云计算的定义
加州大学伯克利分校的一份报告将云定义为:
“提供服务的数据中心硬件和软件”
“(1) 近乎无限计算资源的幻觉;
(2) 消除云用户的前期承诺;以及
(3) 能够按需付费使用……”
“云计算是一种模型,它能够实现对共享的、可配置的计算资源池(例如网络、服务器、存储、应用程序和服务)的无处不在、便捷、按需的网络访问;这些资源可以通过极少的管理工作或服务提供商交互而被快速配置和释放。”
云计算是一种 IT 范式,它以服务的形式提供对共享的、可配置的系统资源池的访问,这些资源可以在通常通过互联网的环境下,以极少的管理工作快速完成配置。
允许企业将其 IT 设施外包给云服务提供商
避免建立自有基础设施所需的高昂前期投入
将“公用计算(Utility Computing)”的定义变成现实:
按使用付费(例如按小时付费)
近乎无限资源的幻觉
无前期成本
就像支付水电费一样!
为什么选择云?
这个名字来源于用云朵形状的符号来抽象表示复杂的基础设施。
硬件虚拟化
虚拟化会向用户隐藏计算平台的物理特征,转而呈现一个抽象的计算平台。
控制虚拟化的软件称为管理程序(hypervisor)或虚拟机监视器(virtual machine monitor),例如 Xen、KVM、VMWare ESXi。
多核芯片、半虚拟化、硬件辅助虚拟化,以及虚拟机的在线迁移(live migration of VMs)——这些都推动了虚拟化在服务器系统中的日益广泛应用。
云用户的经济学
云部署模型
组织拥有自己的私有云
可以部署在本地,也可以部署在异地
云服务模型
软件即服务(SaaS)
平台即服务(PaaS)
基础设施即服务(IaaS)
云服务与关系
总结