• 分布式前世今生


    诞生

    访问量大(高并发)

    比如最初的系统使用用户只有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 提速


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


  • 相关阅读:
    SQL SERVER 将表字段值0和1互转的几种方法
    JS 解决 IOS 中拍照图片预览旋转 90度 BUG
    Js利用Canvas实现图片压缩
    IIS 下调用证书出现异常解决方案 (C#)
    C# 如何防止重放攻击
    RSA,JAVA私钥加密,C#公钥解密
    C# 字符串按 ASCII码 排序,注意其中的小坑
    C# dynamic类型报错:“object”不包含“xxx”的定义
    Angularjs 实现移动端在线测评效果
    C# 利用VS自带的WSDL工具生成WebService服务类
  • 原文地址:https://www.cnblogs.com/yuanhailiang/p/10231980.html
Copyright © 2020-2023  润新知