0.云与云计算概念
云:云是一种平台模式,将资源汇聚,以服务方式向外提供
云计算:云计算是一种计算模式,一种什么样的计算模式呢?
云计算是一种将①动态伸缩的②虚拟化资源③通过互联网④以服务的方式提供给用户的计算模式
1.云原生(cloud native)
计算、存储、架构都是土生土长在云上,称为云原生
4个要点:①DevOps ②持续交付 ③微服务 ④容器
云原生是基于云基础之上的软件架构思想,以及基于云进行软件开发实践的一组方法论
2.微服务
在单体架构下,代码没有明确物理边界,网站和移动端有大量相同业务逻辑的重复代码
微服务:将公用的业务逻辑抽象出来,做成公共服务,避免了大量冗余代码,使得系统分工更明确、责任更清晰
3.SQL & NOSQL
关系型数据库 | 非关系型数据库 |
MySQL,SQL server,Oracle,PostgreSQL | ①面向列、可拓展:HBase Cassandra;②键值:Redis;③面向文档:MongoDB;④图:Neo4j |
强一致性 | 最终一致性 |
优点:绝对事务和安全、复杂查询 | 优点:分布式,高并发,读写性能,可拓展 |
缺点:大规模数据读写、查询时效率低,表结构更新麻烦 | 缺点:不支持事务、不提供ACID |
4.OLTP & OLAP
5.sharing nothing & sharing data架构
两者最大的区别:
增加或减少计算资源时,需不需要data redistribution
share-nothing架构(如Teradata、Vertica)
- 表是水平切分 分散在各个节点中的
- resizing need data redistribution
- 需要很多查询优化
- 对于“star schema query”拓展性较好
- 节点宕机时,计算和存储都不可用了
- 每个数据库之间没有共享任何数据,(Redshift是第一个实时的数据仓库,采用的是sharing nothing)
- 对于不同的工作量(有时需要大量存储、有时需要大量算力),计算和存储始终是按照某一个比例分配的
share disk架构
- 虽然提供数据库强一致性,但锁独占、会限制并发
- “all data in one place”
- “every virtual warehouse can access all data”
- “independently scale in every layer”
snowflake里面share data的理解:
sharing data:①虚拟仓库集群共享存储层数据;②同一个虚拟仓库下工作节点共享缓存
6.Quorum机制
为了达到强一致性,有哪些实现方法呢?quorum机制是其中一种
强一致性最粗暴的实现方法是WARO(write all read one),只有所有副本都更新成功之后,这次写操作才算成功
假设有N个副本,W(更新成功所需要的副本数)和R(要访问的数据副本数目)要满足以下条件:
- W+R > N
- W>R
7.为什么云存储延迟反而小一些?
我们简单计算一下:
- 单体架构下,数据存储在本地磁盘,对于大小V的数据,磁盘I/O速度是t,读取数据的总时间也是t
- 分布式存储下,假设有m台机器负责存储,那么由于是分开存储读取可以并行,对于大小是V的数据,‘云磁盘’磁盘I/O时间是t/m,此外,还要加上网络I/O时间t’,因此总时间是t/m+t’,当网络传输时间比较小
m比较大时,t’比较小时,就可以满足,云存储更快
当然,由于数据备份、一致性机制、节点宕机、恢复等各种情况,实际情况会复杂的多,云存储时延可以会比较大
8.durability、availability、usability区别
- durability(耐用性、持久度):数据不丢失、不被破坏的能力,用1-数据丢失、被破坏的概率 来衡量
- availability(可用性):1 - (故障时间/总时间)
- usability: