首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >包子分布式系统科普系列 1

包子分布式系统科普系列 1

作者头像
包子面试培训
发布2018-04-19 10:35:21
7760
发布2018-04-19 10:35:21
举报
文章被收录于专栏:包子铺里聊IT包子铺里聊IT

欢迎大家订阅包子leetcode的视频讲解: https://www.youtube.com/c/baozitraining

通过这一段时间的观察发现,多数学员对分布式系统都不太了解。无论是刚毕业的小码农,还是工作多年的老码工, 对分布式理论,算法,及具体的实践都是知之甚少或着根本就不知道。其实现在大家热炒的云计算云技术就是把研究多年的分布式系统打个包来卖。只要了解了分布式的一些基本的理论知识就不会被各大云厂商忽悠的云里来雾里去。小编在网上找了半天也没发现很好的简单易懂的资料,所以小编决定自己写一个分享给给大家。由于小编水平有限,错误之处望大家指正并多多包涵。本系列将介绍分布式基本原理,算法,以及典型的系统实现像DynamoDB, Spanner, Cassandra。小编将以最通俗易懂的语言来讲解。开始吧!

  1. 什么是分布式系统

什么是分布式系统?简单地说就是计算在一台机器上完不成,数据在一台机器里装不下,需要几台或多台机器同时协调来共同完成任务。现在没有谁还在做单机版的系统了吧?不说自己的程序装在几百台,几千台服务器上,是不是都不好意识出来见人。下图是最普遍的,大家见的最多的而且也是最简单的系统。负载均衡器后边是一排WEB服务器, 然后来个缓存, 再后来个数据库。是不是很熟悉?之所以说它是最简单的系统, 是因为WEB服务器之间没有协同工作,是无态的。想加几个就加几个。当数据量大了,所有的压力都落到了后台数据服务器上。这个时候就要想法子把数据服务分布一下。

  1. 数据的分区(Partition)和复制(Replicate)

把数据放到多台机器上一般有两种方法。一种方法是按照数据的某一键值分块,不同块放在不同机器上。另外一种方法是完全拷贝同样数据然后放在其他机器上。分区是分而治之,不同机器可以同时处理数据的不同部分。这样系统的效率和性能就会大大提高。复制可以增加用户读数据的机器,还可以备份数据,防止数据丢失。实际应用中是先分区再复制,两者结合着用。既然数据被放到了多台机器上, 那数据不一致了怎么办?

  1. 帽子理论(CAP)

现在数据放到了几台机器上,这下不用担心后台撑不住了。用户可以从任何机器拿数据。可是新的问题出现了。要知道数据之间的复制是通过网络传输的,如果网断了,那数据就传不过去了,或者有可能丢了。然后用户在不同机器拿到的数据就不一样了。为了解决这种问题,人们引出了“鱼和熊掌不可兼得”的帽子理论。

C: 代表一致性 (Consistency), 所有机器上的数据时刻保持一致。

A: 可用性 (Availability), 某个机器出现故障,系统还能响应客户读写请求。

P: 分区容错 (Partition tolerance), 系统响应客户请求尽管机器之间的网路断了。

CAP理论指出在分布式系统里,一致性,可用性,网路分区容错,我们只能取其中两个,不可能三个兼得。这个道理很简单。当机器之间网断了,如果系统接受客户更改请求,那么数据就会不一致,如果要求数据一致,系统就不能响应客户写请求。

这个时候就要根据实际情况来取舍了。如果是银行系统,那肯定是要数据一致了。如果是社交网路系统,一致性就无所谓了,更看重的是系统可用性。

在接下来的几篇里,我们会了解具体的算法像Consistent hashing, 2PC, Paxos, Vector clock 等等。待续。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-09-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 包子铺里聊IT 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档