今天小蕉跟大伙一起聊聊分布式系统的架构的套路。在开始说套路之前,大家先思考一个问题,为什么要进行分布式架构?

大多数的开发者大多数的系统可能从来没接触过分布式系统,也根本没必要进行分布式系统架构,为什么?因为在访问量或者QPS没有达到单台机器的性能瓶颈的时候,根本没必要进行分布式架构。那如果业务量上来了,一般会怎么解决呢?

首先考虑的就是机器升级。机器配置的垂直扩展,首先要找到当前性能的瓶颈点,是CPU,是内存,是硬盘,还是带宽。砸钱加CPU,砸钱换SSD硬盘,砸钱换1T内存,这通常是解决问题最直接也最高效的方法。带宽不够?加带宽,1G不够用100G。CPU 8核不够?搞32核96核。这是绝大多数公司能思考到的第一个方案,也是最高效最快最安全的方法,立竿见影。

其次就是系统拆分,将所提供服务的主流程以及支线流程梳理出来,按照流程进行系统拆分。如同一棵树,核心业务作为主干流程,其他系统按照需要进行拆分,如同树的开枝散叶。所采取的方式有这么一些,按前后端进行拆分,按照领域拆分,按团队拆分,当然通常来说这些拆分基本都要跟着组织架构走。

再不行就进行技术升级,更换更加高效或者场景适合的技术。比如从 Oracle 更换到HBase。从A数据库连接池更换到B数据库连接池。技术的变革对于业务量的支持也是非常巨大的,同一台机器不同的技术,效能发挥的程度可以说有天壤之别。

最后的最后手段才会考虑分布式架构,实在是砸不出这么多钱了,实在是没办法了。因为分布式架构肯定会带来非常多非常多的一致性问题,原本只需要访问一台机器,现在需要访问N台,那么这N台机器的一致性怎么保证,以前撑死搞个主从备份就算完了,定时同步一下数据就好,现在N台设备的数据怎么管理,甚至这个集群本身怎么管理,都会成为一个致命的问题。

所以只有等业务量到达一定程度了,单台机器扛不住了,才会开始堆钱升级机器,系统拆分,换技术,继续堆钱升级机器,系统拆分...周而复始,发现成本太高或者技术已经到达上线了。最后没办法,就选择分布式架构了。

但是分布式架构的优势也是明显的,用一群低廉的设备,来提供一个高性能高吞吐量的稳定的系统,下面开始说说常见的分布式集群的架构。

1、纯负载均衡形式

在集群前面,前置一个流量分发的组件进行流量分发,整个集群的机器提供无差别的服务,这在常见的 web 服务器中是最最常见的。目前比较主流的方式就是整个集群机器上云,根据实时的调用量进行云服务器弹性伸缩。常见的负载均衡有硬件层面的 F5、软件层面的 nginx 等。

2、领导选举型

整个集群的消息都会转发到集群的领导这里,是一种 master-slavers,区别只是这个 master 是被临时选举出来的,一旦 master 宕机,集群会立刻选举出一个新的领导,继续对外提供服务。使用领导选举型架构的典型的应用有 ElasticSearch,zookeeper。

3、区块链型

整个集群的每一个节点都可以进行记录,但是记录的内容要得到整个集群 N 个机器的认可才是合法的。典型的应用有 Bit Coin,以及 Hyperledger。

4、master-slaver型

整个集群以某台 master 为中枢,进行集群的调度。交互是这样,一般会把所有的管理类型的数据放到 master 上,而把具体的数据放到 slaver 上,实际进行调用的时候,client 先调用 master 获取数据所存放的 server 的 信息,再自行跟 slave 进行交互。典型的系统有 Hadoop。集群,HBase 集群,Redis 集群等。

5、规则型一致性Hash

这种架构类型一般出现在数据库分库分表的设计中。按照规则进行分库分表,在查询之前使用规则引擎进行库和表的确认,再对具体的应用进行访问。为什么要用一致性 Hash ?其实用什么都可以,只是对于这类应用来说一致性 Hash 比较常见而已。

好了,至此,已经把我所知道的大部分分布式集群的套路说完了,总结一下。

1、升级机器配置是最直接的升级方式。不到万不得已不会使用分布式

2、分布式的核心就是业务拆分以及流量分发。

原文:https://mp.weixin.qq.com/s?__biz=MzI1NDQ3MjQxNA==&mid=2247484852&idx=1&sn=9d900f39f777856e768441b0ef67b8f9&chksm=e9c5fc05deb27513dcab822e00d53769cca0f863210c77c3a46a858d2aabf8ccf50b3c43e18e&scene=21#wechat_redirect

分布式架构的几种实现方式相关推荐

  1. 为什么多个线程不可能同时抢到一把锁_HFL Redis_12_redis分布式锁的3种实现方式...

    HotFrameLearning(简称 HFL) Redis_12_redis分布式锁的3种实现方式 - 一.大致介绍 ``` 1.昨天介绍完redis的数据结构后,有小伙伴让本人讲讲redis的分布 ...

  2. 分布式Session的几种实现方式

    一.分布式Session的几种实现方式 1.基于数据库的Session共享 2.基于NFS共享文件系统 3.基于memcached 的session,如何保证 memcached 本身的高可用性? 4 ...

  3. memcached 分布式锁 java_分布式锁的三种实现方式

    分布式锁的三种实现方式 一.zookeeper 1.实现原理: 基于zookeeper瞬时有序节点实现的分布式锁,其主要逻辑如下(该图来自于IBM网站).大致思想即为:每个客户端对某个功能加锁时,在z ...

  4. 分布式锁以及三种加锁方式

    在很多场景中,我们为了保证数据的最终一致性,需要很多的技术方案来支持,比如分布式事务.分布式锁等.那具体什么是分布式锁,分布式锁应用在哪些业务场景.如何来实现分布式锁呢? 一 为什么要使用分布式锁 我 ...

  5. 分布式锁的三种实现方式_基于 redis 的分布式锁实现

    云龙 资深运维开发工程师,负责游戏系统配置管理平台的设计和开发,目前专注于新 CMDB 系统的开发,平时也关注运维自动化,devops,python 开发等技术. 背景 CMDB 系统里面的机器数据会 ...

  6. 分布式锁的几种实现方式

    目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题.分布式的CAP理论告诉我们"任何一个分布式系统都无法同时满足一致性(Consistency) ...

  7. 分布式锁的三种实现方式_分布式锁的几种实现方式~

    目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题.分布式的CAP理论告诉我们"任何一个分布式系统都无法同时满足一致性(Consistency) ...

  8. 分布式锁的三种实现方式_分布式锁的多种实现方式

    目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题.分布式的CAP理论告诉我们"任何一个分布式系统都无法同时满足一致性(Consistency) ...

  9. 分布式锁的几种实现方式~

    目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题.分布式的CAP理论告诉我们"任何一个分布式系统都无法同时满足一致性(Consistency) ...

最新文章

  1. html转chm后脚本错误,win10系统打开chm资料弹出窗口提示脚本出现错误的恢复办法...
  2. adb shell root
  3. c语言课程设计怎么做,C语言课程设计————写下流程图! 谢谢
  4. c++调用python的代码、函数、类
  5. 最常用最好记Linux命令
  6. DCMTK:DSRRootTemplate和DSRSubTemplate类的测试程序
  7. ubuntu 18.04 install gitlab-ce
  8. Redis持久化 RDB和AOF 比较与选择
  9. smarty 模板php,Smarty模板快速入门
  10. 超级干货:光纤知识总结最全的文章,盘它!
  11. 为啥互联网都使用缓存
  12. Android 12 灭屏流程(一) Power键灭屏
  13. python进阶练习题:IRR计算 - 盈利能力的评价【难度:2级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
  14. 原来卡布奇诺信息安全协会是干这个的呀,一起来看看吧。
  15. python3可视化-pyecharts图形库,利用Map进行地图的创建和使用
  16. week06_task_二分, 排序
  17. [转]奇文-闲话操作系统(2/4)
  18. 什么是死锁以及避免死锁
  19. Linux下shell脚本的4中执行方式
  20. usermod 命令使用说明

热门文章

  1. Java中的几种插件
  2. 机器学习的可解释性(总结)
  3. 每次启动电脑,基本都出现这个错误,很长时间的启动过程。
  4. jvm 年轻代、年老代、永久代
  5. 如何选择Python版本2还是3
  6. 使用Vmware workstation出现权限不足
  7. jquery给日期赋值_关于jQuery赋值
  8. 差商matlab编程,Matlab数值计算差商与插值
  9. geometric distribution and exponential distribution(几何分布和指数分布)
  10. backtracking及其应用