设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 数据 公司
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

分布式系统你会设计了吗?不会阿里架构师来教你设计

发布时间:2019-08-22 12:18 所属栏目:117 来源:Java自闭师
导读:1. 分布式系统相关概念 1.1 模型 1.1.1 节点 节点是一个可以独立按照分布式协议完成一组逻辑的程序个体,工程中往往指进程。 1.1.2 通信 节点之间完全独立互相隔离,通信唯一方式是通过不可靠的网络。 1.1.3 存储 节点可以通过将数据写入与节点在同一台机

分布式系统你会设计了吗?不会阿里架构师来教你设计

1. 分布式系统相关概念

1.1 模型

分布式系统你会设计了吗?不会阿里架构师来教你设计

1.1.1 节点

节点是一个可以独立按照分布式协议完成一组逻辑的程序个体,工程中往往指进程。

1.1.2 通信

节点之间完全独立互相隔离,通信唯一方式是通过不可靠的网络。

1.1.3 存储

节点可以通过将数据写入与节点在同一台机器的本地存储设备保存数据

1.1.4 异常

(1) 机器down机

大型集群每日down机发生概率0.1%,后果是该机器节点不能工作、重启后失去所有内存信息。

(2) 网络异常

消息丢失:网络拥塞、路由变动、设备异常、network partition(部分不正常)

消息乱序:IP存储转发、路由不确定性、网络报文乱序

数据错误:比特错误

不可靠TCP:到达协议栈之后与到达进程之间、突然down机、分布式多个节点的tcp乱序

(3) 分布式系统的三态

任何请求都要考虑三种情况:成功、失败、超时。对于超时的请求,无法获知该请求是否被成功执行。

(4) 存储数据丢失

(5) 其他异常

IO操作缓慢、网络抖动、拥塞

1.2 副本

1.2.1 副本的概念

replica/copy 指在分布式系统中为数据或服务提供的冗余:

数据副本:在不同的节点上持久化同一份数据。例如GFS同一个chunk的数个副本

服务副本:数个节点提供相同的服务,服务不依赖本地存储,数据来自其他节点。例如Map Reduce的Job Worker

1.2.2 副本的一致性

副本的consistency是针对分布式系统而言的,不是针对某一个副本而言。根据强弱程度分为:

强一致性:任何时刻任何用户/节点都可以读到最近一次更新成功的副本数据

单调一致性:任何时刻任何用户一旦读到某个数据某次更新后的值,就不会再读到更旧的值

会话一致性:任何时刻任何用户在某次会话内一旦读到某个数据某次更新后的值,就不会在这次会话再读到更旧的值

最终一致性:各个副本的数据最终将达到一致状态,但时间不保证

弱一致性:没有实用价值,略。

1.3 衡量分布式系统的指标

1.3.1 性能

吞吐量:某一时间可以处理的数据总量

响应延迟:完成某一功能需要使用的时间

并发能力:QPS(query per second)

1.3.2 可用性

系统停服务的时间与正常服务的时间的比例

1.3.3 可扩展性

通过扩展集群机器提高系统性能、存储容量、计算能力的特性,是分布式系统特有的性质

1.3.4 一致性

副本带来的一致性问题

1.3.5:分布式架构系统的可视化监控方案

1、架构师是如何解决分布式架构系统监控难题的。

2、ELK是谁,从哪里来,要到哪里去?

3、京东海量数据检索,我们一起来感受。

4、只需点击鼠标,高逼格监控界面一键搞定。

5、你离互联网架构师到底有远?听听就知道。

6、架构师的技术栈应该是怎样的?你来问,我一定答。

分布式系统你会设计了吗?不会阿里架构师来教你设计
分布式系统你会设计了吗?不会阿里架构师来教你设计

转发 转发 转发 重要的事情说3遍 转发关注我私信会发:Java架构 领取分布式架构思维导图 以及资深架构师讲解的分布式精讲视频资料(还会提供高并发,spring源码,mybatis源码,dubbo,netty等多个知识点的视频技术分享!

2. 分布式系统原理

2.1 数据分布方式

无论计算还是存储,问题输入对象都是数据,如何拆分分布式系统的输入数据称为分布式系统的基本问题。

2.1.1 哈希方式

一种常见的哈希方式是按照数据属于的用户id计算哈希。

分布式系统你会设计了吗?不会阿里架构师来教你设计

优点:

  • 散列性:好
  • 元信息:只需要函数+服务器总量

缺点:

  • 可扩展性:差。一旦集群规模扩展,大多数数据都需要被迁移并重新分布
  • 数据倾斜:当某个用户id的数据量异常庞大时,容易达到单台服务器处理能力的上限

2.1.2 按数据范围分布

将数据按特征值的值域范围划分数据。例如将用户id的值域分为[1, 33), [33, 90), [90, 100),由三台服务器处理。注意区间大小与区间内的数据大小没有关系。

分布式系统你会设计了吗?不会阿里架构师来教你设计

优点:

  • 可扩展性:好。灵活根据数据量拆分原有数据区间

缺点:

  • 元信息:大。容易成为瓶颈。

2.1.3 按数据量分布

与按范围分布数据方式类似,元信息容易成为瓶颈

2.1.4 一致性哈希

(1) 以机器为节点

用一个hash函数计算数据(特征)的hash值,令该hash函数的值域成为一个封闭的环,将节点随机分布在环上。每个节点负责处理从自己开始顺时针到下一节点的值域上的数据。

优点:

  • 可扩展性:极好。任意动态添加、删除节点,只影响相邻节点

缺点:

  • 元信息:大而且复杂
  • 随机分布节点容易造成不均匀
  • 动态增加节点后只能缓解相邻节点
  • 一个接点异常时压力全转移到相邻节点

(2) 虚节点

虚节点,虚节点个数远大于机器个数,将虚节点均匀分布到值域环上,通过元数据找到真实机器节点。

优点:

某一个节点不可用导致多个虚节点不可用,均衡了压力

加入新节点导致增加多个虚节点,缓解了全局压力

2.1.5 副本与数据分布

前边4中数据分布方式的讨论中没有考虑数据副本的问题。

(1) 以机器为单位的副本

分布式系统你会设计了吗?不会阿里架构师来教你设计

缺点:

恢复效率:低。假如1出问题,从2 3 中全盘拷贝数据较消耗资源,为避免影响服务一般会将2下线专门做拷贝,导致正常工作的副本只有3

可扩展性:差。假如系统3台机器互为副本,只增加两台机器的情况下无法组成新的副本组。

可用性:差。一台donw机,剩下两台压力增加50%。理想情况会均摊到整个集群,而不是单个副本组

(2) 以数据段为单位的副本

例如3台服务器,10G数据,按100hash取模得到100M每个的数据段,每台服务器负责333个数据段。一旦将数据分成数据段,就可以以数据段为单位管理副本,副本与机器不再硬相关。

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读