分布式

《分布式系统原理与规范》定义:
“分布式系统是若干独立计算机的集合,这个计算机对于用户来说就像单个相关系统”
分布式系统(distributed system)是建立在网络之上的软件系统

分布式与集群的关系

  • 集群这是指几台服务器集中在一起,实现同一业务
  • 分布式中的每一个节点,够可以叫集群,但集群并不一定就是分布式

    软件架构的演变

  1. ORM :单一应用架构
  • 当网站流量小时,只需要一个应用,将所有功能部署在一起,可以减少部署节点和成本
  • 用于简化增删改查工作量的数据访问框架(ORM)是关键

image.png

  1. MVC:垂直应用架构
  • 访问量逐渐增大,单一应用增加集气带来的加速度越来越小时
    • 将应用拆分成互不相干的小应用,以提升效率
  • 用于加速前端页面开发的web框架 (MVC)是关键

image.png

  1. RPC:分布式服务框架
  • 垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立服务器
    • 形成稳定的服务中心,使前端应用可能更快速的响应多变的市场需求
  • 用于提高业务复用及整合的分布式服务框架(RPC)是关键

image.png

  1. SOA:流动计算架构
  • 服务越来越多,小服务字段浪费等问题逐渐显现
    • 需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率
  • 用于提高机器利用率的资源调度和治理中心(SOA)是关键

image.png

dubbo和spring cloud的区别

  • 传输上

    • dubbo是以rpc传输
    • SpringCloud是以http传输

      概念

      高并发

      通过设计保证系统可以并行处理请求,应对大量的流量与请求
  • tomcat支持的并发量

    • Tomcat默认支持150最大请求数
    • 当并发量在250以上,可以 考虑应用服务器的集群
    • 承载并发的数量,需要看硬件配置。CPU越多性能越高,配置给jvm的内存性能也会越高
  • 操作系统对进程中线程的数量的限制
    • Windows每个进程不允许超过2000个线程
    • linux每个进程不允许超过1000个线程
    • java每开启一个线程需要消耗1MV的JVM内存空间用作线程栈之用

高并发衡量指标

  • 响应时间RT
    • 请求做出响应的时间,既一个HTTP请求返回所用的时间
  • 吞吐量
    • 系统在单位时间内处理请求的数量
  • QPS(Query / Request Per Second)、TPS(Transaction Per Second)
  • 每秒查询(请求)数、每秒事务数
    • 专业的测试工具:Load Runner、Apache ab、Apache JMeter
  • 并发用户数

    • 承载的正常使用系统功能的用户的数量

      高可用

      服务集群部署数据库主从+双机热备
  • 主-备方式(Active-Standby方式)

    • 一台服务器处于业务激活状态(Actiive状态),另一台服务器处于业务备用状态(Standby状态)
  • 双主机方式(Active-Active方式)

    • 两个不同业务分别在服务器中互为主备状态

      注册中心

      保存服务所在地址等信息,方便调用者实时获取其他服务信息
      服务注册 => 服务提供者provider
      服务发现 => 服务消费者consumer

      负载均衡

      动态将请求发派给比较闲的服务器
      策略
  • 轮询(Round Robin)

  • 加权轮询(Weighted Round Robin)
  • 随机(Random)
  • 哈希(Hash)
  • 最小连接数(LC)
  • 最短响应时间(LRT)

    服务雪崩

    服务之间复杂调用,一个服务不可用,导致整个系统受影响不可用

    熔断

    某个服务频繁超时,直接将其短路,快速返回mock(模拟、虚拟)值

    限流

    限制某个服务每秒的调用本服务的频率

  • 防爬虫、防DDoS攻击(洪水攻击)

    API网关

    API网关作为系统的后端总入口,承载所有服务的祝贺路由转换等工作
    也可以吧安全、限流、缓存、日志 、监控、重试、熔断等放到API网关来做

    服务跟着

    跟踪服务的调用链,记录整个系统执行请求
    如:请求响应时间,判断链中的那些服务属于慢服务(可能存在问题,需要改善)

    弹性云

    Elastic Compute Service ( ECS )弹性计算服务
    动态扩容,压缩服务器休闲时能力
    比如:在618高峰时多配置些服务器,平时减少多余服务器的配置,避免资源浪费

    物联网(IoT,Internet of things)

    万物相连的互联网,是互联网基础上的延伸和扩展的网络,将各种信息传感设备与互联网结合起来形成一个巨大的网络,实现在任何时间、地点、人、机、物的互联互通

    断路器仪表盘(Breaker dashboard)

    分布式跟踪(Distributed Tracing)

    分布式处理程序链跟踪用于监视网络等待时间,并可视化通过微服务的请求流

    Spring Cloud

    SpringCloud是基于SpringBoot构建的
    SpringCloud为开发人员提供了工具,用以快速的在分布式系统中建立一些通用方案
    例如:配置管理、服务发现、断路器、智能路由、微代理、控制总线、
    一次性令牌、全局锁、领导选举、分布式会话、集群状态
    SpringCloud Netflix提供了奈飞公司的开源框架整合(OSS),SpringBoot应用通过自动配置和绑定环境和器spring的模型风格。用简单的注释,快速启动常见模式配置,并构建大型分布式系统