文档章节

面试:你懂什么是分布式系统吗?Redis分布式锁都不会?

宋庆离
 宋庆离
发布于 04/23 14:00
字数 1245
阅读 22015
收藏 12

我面试过上千个程序员,我发现有80%的程序员对于分布式系统,并没有一个很清晰的概念。分布式系统涉及到很多的技术、理论与协议,很多人也说,分布式系统是“入门容易,深入难”,有一些人简历上写着熟悉分布式系统,但是随着我深入问下只能算是管中窥豹,只见得其中一斑。

那么究竟什么是分布式系统?

分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。

分布式架构图

首先需要明确的是,只有当单个节点的处理能力无法满足日益增长的计算、存储任务的时候,且硬件的提升(加内存、加磁盘、使用更好的CPU)高昂到得不偿失的时候,应用程序也不能进一步优化的时候,我们才需要考虑分布式系统。

分布式系统的几个特性:可扩展性、高性能、高可用、一致性。这几个特性也是分布式系统的衡量指标,正是为了在不同的程度上满足这些特性(或者说达到这些指标),才会设计出各种各样的算法、协议,然后根据业务的需求在这些特性间平衡。

那么分布式锁又是怎么产生的呢?

现如今大多数互联网系统都是分布式部署的,分布式部署确实能带来性能和效率上的提升,但是当某个资源在多系统之间,具有共享性的时候,为了保证大家访问这个资源数据是一致的,这个时候我们需要用分布式锁来让多客户端互斥的对共享资源进行访问。

目前主流的有三种分布式锁,从实现的复杂度上来看,从上往下难度依次增加:

  • 基于数据库实现

  • 基于 Redis 实现

  • 基于 ZooKeeper 实现

无论哪种方式,其实都不完美,但是不同的业务也要根据自己的情况进行选型,它们之间没有最好只有更适合!为了大家能更好的学习分布式架构/缓存、高并发分流、性能调优等,我为大家准备了一套精品PHP高阶学习视频教程,为大家进阶PHP中高级、架构师做好准备

对PHP后端技术,对PHP架构技术感兴趣的朋友,欢迎加QQ群:1016515796,一起学习,相互讨论。

群内已经有管理将知识体系整理好(源码,学习视频等资料),欢迎加群免费领取。

这套精品PHP教程绝不是市场上的那些妖艳贱货可比,作为web开发的佼佼者PHP并不逊色其他语言,加上swoole后更加是如虎添翼!进军通信 、物联网行业开发百度地图、百度订单中心、虎牙、战旗TV等!年后更是霸占程序员招聘语言第二名,寒冬裁员期过后正是各大企业扩大招人的时期,现在市场初级程序员泛滥,进阶中高级程序员绝对是各大企业急需的人才,这套学习教程适合那些1-6年的PHP开发者正处于瓶颈期,想要突破自己进阶中高级、架构师!名额有限,先到先得!

部分资料截图:

还有限时精品福利:

★腾讯高级PHP工程师笔试题目     

★亿级PV高并发场景订单的处理

★laravel开发天猫商城组件服务

★战旗TV视频直播的架构项目实战

扫描下面二维码领取

对PHP后端技术,对PHP架构技术感兴趣的朋友,欢迎加QQ群:1016515796,一起学习,相互讨论。

群内已经有管理将知识体系整理好(源码,学习视频等资料),欢迎加群免费领取。

本课程深度对标腾讯T3-4标准,量身定制学习计划为web开发人员进阶中高级、架构师提升技术,为自己增值涨薪!

© 著作权归作者所有

上一篇: kubercon
下一篇: kuber
宋庆离

宋庆离

粉丝 106
博文 68
码字总数 60336
作品 0
私信 提问
加载中

评论(3)

s
sethink
搞半天原来是广告
繁华似水
繁华似水
反正我不会,反正我也不学...
诺言和岁月
诺言和岁月
擦,打广告啊
小柒2012/spring-boot-seckill

分布式秒杀系统 开发环境 JDK1.7、Maven、Mysql、Eclipse、SpringBoot1.5.10、zookeeper3.4.6、kafka_2.11、redis-2.8.4、curator-2.10.0 友情提示 由于工作原因,项目正在完善中(仅供参考)...

小柒2012
2018/05/19
0
0
Java开发:错过金三银四 你还要错过金九银十吗?面试大纲总结

前言: 一年之计在于春 金三银四已过,2018也已经年过一半多,作为一个开发人员,你是否面上了自己理想的公司,薪资达到心中理想的高度? 面试:如果不准备充分的面试,完全是浪费时间,更是...

Java大蜗牛
2018/08/16
0
0
Redis与Zookeeper实现分布式锁的区别

简介 一般而言,大多数系统实现分布式锁服务都会优先使用Redis;但阅读Zookeeper时可知,Zookeeper的一个很重要应用方向就是分布式锁。那么两者实现分布式锁服务的区别是什么呢。 实现难度 ...

沈渊
2017/10/15
0
0
2019年阿里Java面试必问:JVM与性能优化+Redis+设计模式+分布式

前言 一年之计在于春 金三银四已经要到来,2019的新的开始,作为一个开发人员,你是否面上了自己理想的公司,薪资达到心中理想的高度? 面试:如果不准备充分的面试,完全是浪费时间,更是对...

java知识分子
02/18
0
0
如何用Redlock实现分布式锁

转载请标明出处: http://blog.csdn.net/forezp/article/details/70305336 本文出自方志朋的博客 之前写过一篇文章《如何在springcloud分布式系统中实现分布式锁?》,由于自己仅仅是阅读了相...

forezp
2017/04/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

约瑟夫环(报数游戏)java实现

开端 公司组织考试,一拿到考题,就是算法里说的约瑟夫环,仔细想想 以前老师将的都忘了,还是自己琢磨把~ package basic.gzy;import java.util.Iterator;import java.util.LinkedList;...

无极之岚
40分钟前
2
0
Kernel字符设备驱动框架

Linux设备分为三大类:字符设备,块设备和网络设备,这三种设备基于不同的设备框架。相较于块设备和网络设备,字符设备在kernel中是最简单的,也是唯一没有基于设备基础框架(device结构)的...

yepanl
今天
3
0
Jenkins 中文本地化的重大进展

本文首发于:Jenkins 中文社区 我从2017年开始,参与 Jenkins 社区贡献。作为一名新成员,翻译可能是帮助社区项目最简单的方法。 本地化的优化通常是较小的改动,你无需了解项目完整的上下文...

Jenkins中文社区
昨天
4
0
Spring中如何使用设计模式

关于设计模式,如果使用得当,将会使我们的代码更加简洁,并且更具扩展性。本文主要讲解Spring中如何使用策略模式,工厂方法模式以及Builder模式。 1. 策略模式 关于策略模式的使用方式,在S...

爱宝贝丶
昨天
4
0
前后端分离-前端搭建(vue)

前端使用vue,那么怎么搭建vue呢 先安装nodejs以及npm 现在基本的nodejs都包含有npm,下载安装后, 可以在cmd命令里输入 node -v 和npm -v 分别查看安装的版本 两个都显示了版本就是安装ok ...

咸鱼-李y
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部