《分布式与云计算课程笔记》

您所在的位置:网站首页 分布式计算框架课程大纲 《分布式与云计算课程笔记》

《分布式与云计算课程笔记》

2024-07-09 16:47| 来源: 网络整理| 查看: 265

现代的企业应用来基本上都是属于分布式系统(万物互联)。

分布式系统主要的特点是有网络的连接,主要有网络连接的系统都可以成为分布式系统。

因此分布式系统不同于大数据,更倾向于是专业基础。

分布式系统刚开始的雏形是一个局域网系统。随着技术的发展,分布式系统开始慢慢从学术界转到商业界,现在一些云计算平台和开源的框架,都属于分布式系统。从1970年开始发展,2000年成熟,现在已经有各种各样分布式系统了。

课程重点:

该课程第一部分是建设一个分布式系统会面列的主要问题和解决方案,第二部分云计算可以作为一个例子,理解前面讲的原理。

05-08是分布式系统最核心的概念

05 域名:通过网络把计算机连接起来后,如何起名,如何找到地址

06 同步:单机不面临这样的问题,每一台机器都有自己的时间

07 一致性和复制

08 容错

到了后面的云计算,会发现这些问题都是存在的,但是不同云计算的产品(比如谷歌和微软的平台)对问题的解决采用的方案是完全不一样的。

在这样复杂的情况下,很难说哪个方案最好,取决于应用场景。几乎所有的分布式系统,都很难有一个最好的解决方案,即check off 调和。

相关信息和资料:

前导课程:计算机网络,分布式系统相当于高级计算机网络。在OSI七层协议中,所有的分布式协议都属于应用层协议,但与具体的应用无关。假设底层网络协议都没有问题,现在是用软件实现应用层协议,应用层协议可以分为两种:application specific 和 application not specific(协议是否与具体的应用相关),分布式系统协议属于not specific。例如,虽然是应用层,但是应用层的协议有一些与具体的应用相关,比如写一个管理信息系统,那这个协议就与管理信息相关,就是application specific。也有一些与具体的应用无关,比如Naming协议就是如何查找相对应的名字,与具体应用无关,哪一类应用都可以建立在这个协议之上。

参考书:

1. 分布式系统第三版

2. 刘鹏的云计算实践,第二版,偏重于技术(大部分云计算的书都是偏商业的,真正偏技术的还是刘鹏的!)

除此之外,对于云计算来讲,内容就太多了,所以老师也列了一些mooc上的复杂的一些课程,而且有关云计算开源框架的一些非常多,这本书和基础关系不大,大部分偏向于工业界实用的框架,比如基于Nosql的数据管理(存储),不同开源框架Spark swam。

有关云计算的开源框架也很多,但偏向于工业界实用框架 Spark、Nosql(存储相关)、Kafka异步消息、Base分布式文件系统,这些框架都是去企业做应用开发必备的。注意分布式文件系统Nosql是在云计算里存储,而不是数据库。

数据存储:

注意在云计算的产品里用的更多的用来做存储的不是数据库,而是分布式文件系统。

在企业开发存储方案时,即真正在企业里做数据管理/数据存储的话,数据库也不是必选方案,还有分布式文件系统,两者的区别非常大。

其区别在于目的不一样:

关系数据库追求的是对关系的管理,牺牲了数据管理的能力(即到底能管多大的数据),数据库的容量是有限的,以表的方式存储,所以大数据一般不用数据库进行管理,用分布式文件系统。其次关系数据库性能差,效率低。

谷歌和亚马逊的云平台上都是分布式文件系统,但是方案不同,因为需求有很大区别。比如谷歌的设计目标是存储大文件,而不是大量的零散小文件。

数据库的好处:

对数据的约束性比较强,这是非常巨大的好处,比如在顾客和订单的一对多关系中,在数据库设计中通过外键来体现,所以order的表会有一个顾客的id(数据库中关系的维护是一对多中“多”的一方,即订单,而非顾客)。插入订单时会对顾客的id会做检查,如果id中找不到会报异常,无法插入,但分布式文件系统不会做检查。所以分布式系统把检查交给应用,即底层只负责数据存取(读写操作),所有逻辑相关都交给应用(即程序员去写),所以读取效率很高,性能很好。

所以对分布式系统和数据库的选择也是check off,在分布式系统这个复杂环境下,选择产品和解决方案是要针对需求。

其实这就是讲的Nosql,即不支持sql语句。sql是非常好用的对数据存取的工具(注意在云的文件系统里也有支持SQL的,但仍然不是数据库),因为sql好用,对程序员比较友好,如果没有sql对数据进行处理,需要用指针一个个移动,虽非常灵活,但是越灵活越难处理。

所以现在分布式文件系统在云计算里出来的工具/产品很多也支持sql,但是不支持数据的一些东西,比如很重要的关系、约束。

总之,由于分布式系统的应用开发对比单机系统非常复杂,如果处理不好会出现一些各种各样的莫名其妙的问题,所以了解核心原理和概念对于开发出正确的程序是有非常大的帮助的。

 [心琢1]面向对象和数据表的角度中,对于关系的表现是不同的。比如custom对象中对订单就是一个set集合orders,而在order对象中就是定义一个custom属性,所以在面向对象里,关系表现为reference引用。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3