zoukankan      html  css  js  c++  java
  • 聊聊分布式那点事:抛砖篇

    工作几年,也写过了不少服务端项目,一直想把这方面的经验总结出来,每次总结也是一次更加深入思考的过程。

    要聊分布式,可以延伸到负载均衡、服务发现、服务依赖管理、异地冷备、异地双活、应用层协议、消息队列......

    以上还仅仅只是一部分,如果在做架构设计时,全部想着这些概念,瞬间就凌乱了......

    抛开场景谈架构,都是吹牛逼,好吧,这篇文章的目的就是把牛逼吹响!


    什么是分布式?

    好吧,刚刚手贱,百科了一下:

    很多人就是这么被误导的,把分布式误导成了并行计算,所以说“做环保的程序员,从不用百度开始”~~~

    分布式的本质是拆分+连接,重要的事情说三遍:

    分布式的本质是拆分+连接~~~

    分布式的本质是拆分+连接~~~

    分布式的本质是拆分+连接~~~

    所谓分布式,就是”把一个系统拆分成多个子系统并散布到不同设备“的过程。

    如果按照这个角度去理解,其实你已经分布式好多年了,比如你做的网站系统,在使用数据库的过程中需要连接独立的数据库,这其实就是分布式的。


    如何拆分?如何连接?

    好吧,别着急,还是先说说为什么要拆分?

    拆分的目的无非两个:高可用+可伸缩,重要的事情说三遍:

    拆分的目的无非两个:高可用+可伸缩~~~

    拆分的目的无非两个:高可用+可伸缩~~~

    拆分的目的无非两个:高可用+可伸缩~~~

    高可用,就是思考如何避免因为单台机器或单一服务当机导致整体不可用;

    可伸缩,就是思考如何避免在容量不足时导致整体不可扩展。

    如何拆分?

    在架构设计时,以高可用和可伸缩的目标,就分别出现了两种拆分方式:水平拆分+垂直拆分,重要的事情说三遍:

    两种拆分方式:水平拆分+垂直拆分~~~

    两种拆分方式:水平拆分+垂直拆分~~~

    两种拆分方式:水平拆分+垂直拆分~~~

    (打了太多三遍,累死了,喝点水 - -)

    水平拆分,就是为了实现可伸缩,就是业务逻辑层支持水平扩展,系统负载高时,可以通过加机器的方式来提供系统的负载能力;

    垂直拆分,就是为了实现高可用,将众多业务逻辑拆分成若干独立的子服务,某一服务挂掉时,不会导致整体不可用。


    拆分时要注意什么?

    无状态、去中心化、一致性哈希,重要的事情说三遍:

    无状态、去中心化、一致性哈希~~~

    无状态、去中心化、一致性哈希~~~

    无状态、去中心化、一致性哈希~~~

    (未完待续)

  • 相关阅读:
    Other.ini配置文件解读以及大众评委打分的最后得分两种模式选择及解析选项解释
    大作业练习:用Asp.net Mvc4做一个:学生考试成绩管理系统-简易版
    网络营销实施步骤及疑难问题汇编
    Web前端知识汇编收集B
    Web前端知识汇编收集A
    FlexItem 多行测试
    Last Work-随机出题加法游戏
    Android DisplayMetrics类获取屏幕大小
    Java简介
    Failed to resolve:junit:junit:4.12
  • 原文地址:https://www.cnblogs.com/ym123/p/4742206.html
Copyright © 2011-2022 走看看