什么是分布式:
简而言之,系统有一个以上的进程就是分布式了。
所以严格来说大家一直都在从事分布式项目的工作,因为后台服务和数据库就是两个进程。
只是他平时面对的问题和方案已经被习以为常,并不觉得有什么问题。
这里说的分布式系统,是指后台服务被拆分成多个进程独立部署的情况。
为什么要用分布式:
两个数据
1. 一个开发者,只能承受10000行左右代码的任务量。
这里不单是技术强弱的问题。
因为项目里不只是技术,更多是业务,一个人能维护的业务代码是有限的。
超过一定任务量后,他就会频繁地发现自己要不停地重新研究自己写的代码。开发效率极低。
所以当系统复杂起来,业务复杂起来之后,根据业务将系统拆分成独立模块势在必行。
你当然可以说,可以划分模块,依然只是启动在一个进程上。
但那是理想情况,毕竟实际工作里。
谁能抵挡“他的包里正好有我要的工具类”这种诱惑。
谁又能相信开发员口中的“我绝对没有动别人的代码”这种事。
只有真正完全隔离,才能将职责彻底划分清楚。
彻底杜绝扯皮和某个模块上线导致全体人员加班待命的情况。
2. 数据库--也就是硬盘,只能承受2000左右的QPS。
有类似这样的总结,计算机中99%的技术,来自平衡CPU,内存,硬盘,网络的速度不匹配。
当然,简单的并发问题还可以用读写分离,分库分表解决。
但实际问题在于,真正实际业务中,需要高并发的数据并不是均匀分布在各个表上的。
也就是有所谓的“热数据”,比如微博的明星出轨离婚。
通常这些热数据需要的并发量,是无论怎么分库分表,也解决不了的。
而且为了某个热数据过度的分库分表也是得不偿失的。
因此我们需要缓存,缓存技术复杂起来后,需要独立的框架,独立的部署。
这也促成了分布式架构的势在必行。
我们天天说的分布式技术究竟具体指的什么问题,哪些问题,和我们平时说的那些框架技术又是什么关系。
可分三大类问题
1.分布式本身带来的问题。
2.高并发问题。
3.高可用问题。
在之后的文章里分三篇详解---但毕竟只是大纲,起一个学习索引的作用。
网友评论