博客
关于我
一文正确理解 分层架构系统 的接入层设计,以及接入层设计常见的问题和解决方案(雪崩、降级、限流、熔断)
阅读量:533 次
发布时间:2019-03-08

本文共 1030 字,大约阅读时间需要 3 分钟。

分层架构系统之接入层

定义

接入层是指直接面向用户的服务器组成的结构。一个或多个接入服务器构成接入层,它们接收用户请求并转发给应用服务器。通过隔离用户请求,接入层在非功能单一、并发小且系统全新的场景下独立出来。接入服务器因直接影响用户体验,故障或重启会显著影响用户界面,而其他服务器的模块问题则不影响用户。

优势

  • 降低耦合度,减少对其他模块的不良影响。

  • 业务层专注于处理,而非接入优化。

  • 提升消息转发安全性,减少数据丢失。

  • 优化用户体验,降低故障恢复影响。

  • 技术方案

    • 负载均衡:利用硬件或软件分配请求到多台服务器,提高性能。

    • 高可用设计:部署多台负载均衡器,通过keepalived实现集群,确保服务可用性。

    • 会话保持:维护客户端状态,便于多次请求分配到同一个服务器。

    • 配置灵活性:支持子域名和虚拟目录统一规划。

    设计方式

    1. 单IP地址接入

    • 浏览器通过DNS解析IP地址,访问服务器。
    • 缺点:无法实现高可用,扩容困难。

    2. 多IP地址随机接入

    • DNS解析多个IP地址分发请求,扩充性能。
    • 优点:零成本,部署简单,负载均衡自动优化。
    • 缺点:非高可用,需较长时间扩容。

    3. 反向代理

    • 引入Nginx作为反向代理,转发请求到多台Web服务器。
    • 优点:仅暴露一个IP,支持高可用和实时扩容。
    • 缺点:增加了时延,架构复杂。

    4. 反向代理高可用方案

    • 使用keepalived管理Nginx集群,实现高可用。
    • 优点:解决高可用性问题。
    • 缺点:资源利用率不高。

    5. 水平扩展(Linux Virtual Server)

    利用LVS进行水平扩展,通过DNS轮询扩展入口性能。

    • 优点:支持线性扩展,高可用。
    • 缺点:资源利用率和架构复杂性。

    常见技术方法

    1. 代理(Proxy)

    • Proxy服务器作为中转,分流请求到多台服务器,避免单点压力。
    • 优点:防止单点故障,支持扩容。

    2. 负载均衡策略

    • 轮询:按时间分配,确保短时间内均衡。
    • 源地址Hash:按IP分发,确保单用户请求同台。
    • 最少连接数:根据连接性能动态分配。

    3. 限流

    • 方案包括计数器、漏桶、令牌桶等,控制流量以保护系统。

    4. 服务降级

    • 遇到过载时降级非核心服务。
    • 方法包括自动预案、手动控制、功能层次和开关机制。

    5. 防雪崩

    -雪崩指多个服务因无法处理请求而接连故障。应对措施包括:

    -流量控制和错误降级,改进缓存,扩容,以及调用者降级。


    参考文献

  • 官方文档
  • 技术博客
  • 创新文章
  • 深度文章
  • 云技术文档
  • 你可能感兴趣的文章
    Netty WebSocket客户端
    查看>>
    Netty 异步任务调度与异步线程池
    查看>>
    Netty中集成Protobuf实现Java对象数据传递
    查看>>
    Netty工作笔记0006---NIO的Buffer说明
    查看>>
    Netty工作笔记0011---Channel应用案例2
    查看>>
    Netty工作笔记0013---Channel应用案例4Copy图片
    查看>>
    Netty工作笔记0014---Buffer类型化和只读
    查看>>
    Netty工作笔记0020---Selectionkey在NIO体系
    查看>>
    Vue踩坑笔记 - 关于vue静态资源引入的问题
    查看>>
    Netty工作笔记0025---SocketChannel API
    查看>>
    Netty工作笔记0027---NIO 网络编程应用--群聊系统2--服务器编写2
    查看>>
    Netty工作笔记0050---Netty核心模块1
    查看>>
    Netty工作笔记0060---Tcp长连接和短连接_Http长连接和短连接_UDP长连接和短连接
    查看>>
    Netty工作笔记0077---handler链调用机制实例4
    查看>>
    Netty工作笔记0084---通过自定义协议解决粘包拆包问题2
    查看>>
    Netty常见组件二
    查看>>
    netty底层源码探究:启动流程;EventLoop中的selector、线程、任务队列;监听处理accept、read事件流程;
    查看>>
    Netty核心模块组件
    查看>>
    Netty框架的服务端开发中创建EventLoopGroup对象时线程数量源码解析
    查看>>
    Netty源码—2.Reactor线程模型一
    查看>>