分布式系统中的专有名词

说在前面,在原来的中心化服务器中,我们不用考虑一致性数据安全,中心化不用考虑一致性,数据安全完全基于强大的硬件稳定,软件上我们也不用多考虑。但是巨大瓶颈是容量性能

由此产生分布式系统的设计,首要考虑的已不再是硬件,而是数据安全,首要体现就是一致性的问题。

注意作为分布式系统,根据处理不同的问题,采取不同分布方式;将大数据拆分分散在不同的服务器,提高容量;将数据处理数据储存分离,提高了性能,核心思想是一台高性能高吞吐量的服务器。所有服务器都储存同样的数据,提高了绝对数据安全,在比特币中,就是如同这样模型的分布式账本,达成了可信任的去中心化系统,核心思想是可信任防攻击的数据库服务器

进程:1 CPU 1时刻 只能执行 1进程,执行一个程序进程可能存在多个线程,火箭组装工厂如同进程,火箭如同CPU,播放器如同进程,如同一个服务

线程:

操作系统最小运算调度单位,存在并发和并发的线程,并发是不同CPU下,并行是高速切换。如同卫星工厂中的部门;播放器中的播放,暂停如同线程。

并发:

线程之间的行为,高速切换。cpu的处理被分割成切片,线程之间可以抢占CPU资源

并行:

同时发生很多事。其实并行是并发的子集,通过双核完成

辨析:并发是一种事务处理的策略,通过分散到极短时间片,让两件事情在交替进行,达到两件事情表现出同时处理的效果,在计算机上并发的两件事,都会即时得到反馈,我之所以说“即时”其实是不准确的,反馈时间绝对比单任务长,只是本来处理就短,并发处理,增长点时间,我们依然感觉不到。

一男二女是并发,二男一女是并行

锁:

多个线程在同一块内存空间下,为了防止线程冲突,不允许线程共用内存空间

集群:

  • 高可用性集群:一台服务器宕机,不会影响其他服务器的运行
  • 负载均衡集群:通过前段负载均衡起,将任务分发到后端。从而达到系统的高可用和高性能
  • 高性能计算集群
  • 网格计算:网络和传统集群的区别更像计算公共设施,而不是独立计算机。网格之间都是独立工作,资源可以共享

Kafka:

管理数据的框架,过去业务层,都是单独存储自己的数据,业务之间调度,数据冗余是小事,错综复杂的业务逻辑,保持一致性相当困难

哈希取模:

服务器集群,痛点是查询数据很麻烦,数据映射地址的表,过去使用映射表,更新工作巨大。用散列哈希的公式,常常是取模,让数据能平均散列到不同的服务器地址,从此不需要暴力查找,只需要计算公式,问题是增加或减少服务器,都会影响分母,一改全改。十分不方便

一致性哈希:

在上述散列哈希的基础上,固定一个分母,也就是固定一个巨大的数量的木桶(分母)。构成一个环,一旦发生宕机,就往后寻找有效服务器,由查到的第一个有效服务器,临时由他代替处理数据。为了减少查询时间,可以采取查询策略,如:每个桶都记录1,2,4号位

数据库分片:

水平分片(也叫水平分库)指的是将整体存储在单个数据库中的数据,通过某种策略分摊到多个表结构与其相同的数据库中,这样每个数据库中的数据量就会相对减少很多,并且可以部署在不同物理服务器上,理论上能够实现数据库的无限横向拓展。所以水平分片是数据库性能问题的最终解决方案。

全局ID:

用最少的约束保证一致性,全局唯一,单调递增。功能:防止冲突,

UUID:

通用唯一识别码,大概率上是不会重复的

高可用设计:

热备份:

在系统工作状态下备份数据

心跳检测:

服务器之间,确保对方正常工作的机制

CAP理论:

C一致性 ;A可用性;P分区容忍性

负载均衡:

服务器工作分为,响应前端请求,后端处理数据,一般通过前端负载均衡器,分担工作。通过一致性哈希平衡数据的分布,和减少查询难度

硬件异常:

简称电脑坏了,一般都是电源是最脆弱的

数据拆分:

将大包数据拆分储存在不同的数据库中。