在这篇文章里,主要记录一些名词的理解和解释
前言
记录专有名词的解释。方便自己回看
并发与并行
- 并发: 多任务下,在同一时间段内同时发生。
- 并行: 多任务下,在同一时间点上同时发生。
并发会多个任务之间是互相抢占资源的,而并行不会。
知乎上高赞例子:
- 你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。
- 你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。
- 你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。
只有在多CPU的情况中,才会发生并行。否则,看似同时发生的事情,其实都是并发执行的。
分布式、高并发、多线程
分布式是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段。
- 水平扩展: 当一台机器扛不住流量时,就通过添加机器的方式,将流量平分到所有服务器上, 所有机器都可以提供相当的服务;
- 垂直拆分: 前端有多种查询需求时,一台机器扛不住, 可以将不同的需求分发到不同的机器上,比如A机器处理余票查询的请求,B机器处理支付的请求。
高并发在解决的问题上会集中一些,其反应的是同时有多少量
高并发可以通过分布式技术去解决,将并发流量分到不同的物理服务器上。 但除此之外,还可以有很多其他优化手段:比如使用缓存系统,将所有的,静态内容放到CDN等; 还可以使用多线程技术将一台服务器的服务能力最大化。
多线程是指从软件或者硬件上实现多个线程并发执行的技术, 它更多的是解决CPU调度多个进程的问题,从而让这些进程看上去是同时执行(实际是交替运行的)。
这几个概念中,多线程解决的问题是最明确的,手段也是比较单一的, 基本上遇到的最大问题就是线程安全。
总结一下:
● 分布式是从物理资源的角度去将不同的机器组成一个整体对外服务,技术范围非常广且难度非常大,有了这个基础,高并发、高吞吐等系统很容易构建;
● 高并发是从业务角度去描述系统的能力,实现高并发的手段可以采用分布式,也可以采用诸如缓存、CDN等,当然也包括多线程;
● 多线程则聚焦于如何使用编程语言将CPU调度能力最大化。
分布式、集群
分布式(distributed)是指在多台不同的服务器中部署不同的服务模块,通过远程调用协同工作,对外提供服务。
集群(cluster)是指在多台不同的服务器中部署相同应用或服务模块,构成一个集群,通过负载均衡设备对外提供服务。
在这里感觉分布式就是上章节的垂直拆分
集群就是上章节的水平扩展
两阶段加锁(2PL)协议、两阶段提交(2PC)协议
2PL: 两阶段加锁协议: 主要用于单机事务中的一致性与隔离性。
2PC: 两阶段提交协议: 主要用于分布式事务。
QPS、TPS
QPS: Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。
TPS: 是 TransactionsPerSecond 的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
数据仓库
Data Warehouse: 简称DW,中文名数据仓库,是商业智能(BI)中的核心部分。主要是将不同数据源的数据整合到一起,通过多维分析等方式为企业提供决策支持和报表生成。
那么它与我们熟悉的传统关系型数据库有什么不同呢?
简而言之,用途不同。数据库面向事务,而数据仓库面向分析。数据库一般存储在线的业务数据, 需要对上层业务的改变做出实时反应,涉及到增删查改等操作,所以需要遵循三大范式,需要ACID。 而数据仓库中存储的则主要是历史数据,主要目的是为企业决策提供支持,所以可能存在大量数据冗余, 但利于多个维度查询,为决策者提供更多观察视角。
在传统BI领域中,数据仓库的数据同样存储在Oracle、MySQL等数据库中, 而在大数据领域中最常用的数据仓库就是Apache Hive,Hive也是Apache Kylin默认的数据源。
OLAP、OLTP
OLAP:(Online Analytical Process),联机分析处理,以多维度的方式分析数据,一般带有主观的查询需求,多应用在数据仓库。 OLTP:(Online Transaction Process),联机事务处理,侧重于数据库的增删查改等常用业务操作。
at most once、at least once、exactly once
At most once 的消息传输机制是每条消息传输零次或者一次,即消息可能会丢失
A t least once 意味着每条消息会进行多次传输尝试,至少一次成功,即消息传输可能重复但不会丢失
Exactly once 的消息传输机制是每条消息有且只有一次,即消息传输既不会丢失也不会重复
参考链接