分布式前世今生

诞生

访问量大(高并发)

比如最初的系统使用用户只有100,系统功能太好用了,吸引了大量的新用户,现在用户10W。

响应速度慢(性能)

之前业务简单,一个 select * from xxx, 现在要加上各种where和group by ,order by,查询时间从0.1秒变成了10秒。用户说不好用了。

功能扩展(可扩展性)

之前只卖书,现在人们用到的东西我都想卖!我就是想正确!

数据量大了(高可靠)

时间能带走一切,也会带来一些东西,比如说:麻烦!

服务崩溃了(高可用)

服务器:之前我一个人养10个人,现在让我养10W人,老板还不加工资,累死机器了,干了一年了,放个年假吧。

简单总结下:用户越来越懒了!

改进

不要问我为什么改进,反正所有的优秀都是逼出来的

背景
1.摩尔理论:价格不变时,每隔18个月,计算机的性能会提升一倍!
2.阿姆达尔定律:S(N)=1/[(1-P)+P/N]
2.MapReduce思想:把大任务分解成一堆小任务,一个人处理一个小任务,最后把各自的结果整合在一起。
      中国人古语:分而治之!
高并发问题解决方案

并发编程:一个线程忙不过来就多派几个线程!

一台机器干不了那就派多台机器来同时干!

性能瓶颈问题解决方案

引入缓存,减少DB的压力

扩展问题解决方案

程序员:又加功能,这个项目都是代码了?。

老板:再起一个项目!

客户:新项目?我还要一个注册账号,好烦哦!

架构:这个问题我能解决!


项目之间使用网络通信,同步相关的信息!
高可靠问题解决方案

增加一个备份吧(所有数据的高可靠都是通过冗余保证)

高可用问题解决方案

机器太累了,那就多雇佣几个机器,实行任务划分,减轻压力,同时还符合高内聚。

新问题

高并发新问题

线程执行某个任务的时候发现要使用的资源正在被使用,有时候这个任务已经被其他线程处理过了,现在需要一个管理者,来分配调度和协调

RPC:zookeeper,dubbo等

缓存新问题

需要缓存的数据量太大了,缓存不够用。

NoSQL:Redis等

扩展新问题

项目太多了,如何管理和控制,协调?

微服务理念诞生,服务注册,治理中心诞生

高可靠新问题

数据如何同步备份?


各种MQ

数据不一致问题如何处理?


CAP理论
高可用新问题

机器总是发生各种各样的故障,如何处理?主备已经不时用了


服务集群,各种各样的,CAP中做取舍,被舍弃的也要尽可能去“亡羊补牢”。


总结

数据备份的可靠性

负载均衡--服务集群

高可用--服务集群

拆分成微服务

NoSQL 提速


没有百分之百完美的解决方案?
只有适合业务场景的解决方案,没有绝地完美的解决方案!


posted @ 2019-01-07 10:54  苑海亮  阅读(207)  评论(0编辑  收藏  举报