【Java从零到架构师第Ⅳ季】【01】分布式的基本概念—集群_分布式_微服务

  • 分布式的基本概念
  • 分布式存储
  • 分布式计算
  • 分布式系统—系统高可用
  • 系统高可用—集群
  • 主备集群
  • 主从集群
  • 高可用集群(普通集群)
  • 系统高可用—分布式
  • 系统高可用—微服务
  • 注意
  • 分布式的基本概念

分布式存储、计算、…与大数据息息相关

分布式在大数据时代是非常重要而且基础的一个概念,我们在大数据时代,面临的主要问题有:

  1. 海量数据的存储 —> 分布式存储
  2. 海量数据的运算 —> 分布式计算
  3. 高并发的请求 —> 分布式系统

分布式存储

java vip 咕泡学院 咕泡学院java架构师四期_微服务

java vip 咕泡学院 咕泡学院java架构师四期_分布式_02

PS:一个节点就是一台服务器

分布式计算

  • 分而治之
  • 强调的是把一个大的计算任务分发成多个小的计算任务,并行运算,最终把结果进行汇总
  • 对于分布式计算,我们强调的是移动运算,而不是移动数据
  • 毕竟使用网络通信传输程序相比于传输数据而言,实在是不在一个量级,自然提高了程序的运行效率,增加了程序的并发度和吞吐量、…

java vip 咕泡学院 咕泡学院java架构师四期_java vip 咕泡学院_03

java vip 咕泡学院 咕泡学院java架构师四期_MySQL_04

分布式系统—系统高可用

  • 一台机器挂了,还有其它的机器可以给用户提供服务,让用户访问,这是“系统高可用”的必备要求。

java vip 咕泡学院 咕泡学院java架构师四期_java vip 咕泡学院_05

  • 系统高可用就是首先要能够保证系统能够正常运行,就算服务器挂掉了几台(宕机),用户依然可以正常使用我们的系统;其次要提高我们的系统运行效率(并发度、吞吐量、…)
  • 所谓的系统高可用主要是指两个方面
  1. 系统的健壮性:不允许系统出现单点故障(单点故障:系统中出现一点故障,就导致整个系统瘫痪)
  2. 系统的处理能力:可以提高系统的处理能力(并发度、吞吐量、…),保证系统的运行效率
  • 系统高可用由三部分组合来实现:集群、分布式、微服务

系统高可用—集群

所谓的集群就是:原来使用的是一台服务器处理,现在使用多台服务器处理,以保障系统的运行(正常+优化)。

主备集群

  • 主要由一个主要节点提供服务,另外的节点一般处于备份状态,平时不提供工作,一旦主节点出现问题,备份节点启动运行,提供正常的服务

java vip 咕泡学院 咕泡学院java架构师四期_微服务_06

java vip 咕泡学院 咕泡学院java架构师四期_高可用_07

主从集群

  • 服务器集群有很多节点,这些节点都会提供服务,只不过身份、角色不一样,换句话说就是:提供的功能有可能是不一样的。

java vip 咕泡学院 咕泡学院java架构师四期_微服务_08

java vip 咕泡学院 咕泡学院java架构师四期_分布式_09

高可用集群(普通集群)

  • 集群中的节点提供的功能是一样的,所有的节点没有主从之分,主要用于提高系统的高可用。
  • QPS:每秒查询率(Queries-per-second)

java vip 咕泡学院 咕泡学院java架构师四期_MySQL_10

java vip 咕泡学院 咕泡学院java架构师四期_java vip 咕泡学院_11

系统高可用—分布式

分布式指的是是系统(项目)的部署方式。

  • 比如我们有一个业务系统,部署一个业务系统需要的环境:应用服务(Tomcat)+数据库服务(MySQL))
  • 如果我们把Tomcat和数据库MySQL服务部署在同一台服务器,我们称之为单机部署(单机应用),这样Tomcat和MySQL之间的网络开销可以忽略(直接走127.0.0.1不会消耗网络)
  • 如果我们把Tomcat和数据库MySQL服务部署在不同的服务器,我们称之为分布式应用。由于应用服务器和数据库服务器之间需要走网络通信,因此,我们可以把所有需要走网络通信的这种部署方式称之为“分布式部署(分布式应用)”

java vip 咕泡学院 咕泡学院java架构师四期_分布式_12

java vip 咕泡学院 咕泡学院java架构师四期_微服务_13

系统高可用—微服务

  • 什么是微服务
  • 所谓微服务指的是系统的一种架构设计方式
  • 将大的服务分为很多个小的服务(模块),然后将这些“微服务”进行分布式部署。
  • 微服务一定是分布式的,但是分布式不一定是微服务
  • 以前我们把所有的功能都放到一个项目(应用中),这种方式我们称之为单体应用
  • 随着项目开发的功能变多,我们需要根据模块来对应用进行划分,模块与模块之间通过网络接口来调用,我们称之为微服务架构
  • 主要好处:
  1. 模块化部署,避免一个模块宕机,导致整个系统不可用
  2. 可以单独针对高并发的场景(秒杀、订单、…)扩容,添加机器
  3. 方便开发人员独立开发、互不干扰

java vip 咕泡学院 咕泡学院java架构师四期_java vip 咕泡学院_14

java vip 咕泡学院 咕泡学院java架构师四期_分布式_15

注意

  • MySQL数据库默认100个连接,单机最大1500连接,最大16384。
  • MsSQL单表数据超过500万性能就会下降
  • MySQL单库数据量在5000万或者库文件大小在2G以内性能比较好

  • Windows每个进程中的线程数不允许超过2000
  • Linux每个进程中的线程数不允许超过1000
  • 在Java中每开启一个线程需要耗用1MB的JVM内存空间用于作为线程栈之用。因此,并发量上来后 可能需要修改JVM参数调优。
  • Tomcat默认配置的最大请求数是150,也就是说同时支持150个并发,当然了, Tomcat的最大并发数是可以配置的。
  • 一个Tomcat真正的并发请求数量:250左右;某个应用拥有250个以上并发的时候,应考虑应用服务器的集群。