• 面试准备专题——高并发高性能网站设计


    #高并发应对方案

    架构方面

    • 分层

    对系统架构的分层,分为展示层,业务层,服务层,数据层等,可以使得分工明确,实现解耦,便于管理

    按业务种类分层,可以实现服务化,解耦。

    • 分布式(即模块服务化)

    不同的功能模块以服务的方式在不同服务器上提供,可以分解单台服务器的负担

    • 集群

    在分布式的基础上,对访问频率高的模块再进行集群部署,通过负载均衡协同对外提供服务,可以分解高并发量模块对服务器的压力

    前端

    • DNS

    实现同一个域名转发到不同IP,负载均衡。

    • CDN

    就近访问,用户将会访问存放热点资源和静态资源的最近的服务器。

    反向代理(缓存静态资源,无需后端服务支持)

    应用层

    • 应用缓存

    即应用服务器本地缓存热点资源(对象形式),减少对数据库访问次数

    • 分布式缓存

    数据特征:热点数据,读比写多,不会马上失效),例如terracotta的bigmemory

    • 异步

    一方面可以应用在单机多线程中,将业务线程放入队列处理。另一方面可以应用在分布式系统中,通过分布式消息实现服务请求相应的异步

    异步可以加快网站响应速度,有效实现高并发的销峰。

    数据库

    读写分离(主从数据库)

    数据库拆分(垂直/水平)

    必用数据库(容灾)

    框架缓存(例如Hibernate的一二级缓存)

    #高并发带来的问题和解决方案

    事务问题(一致性)

    容器事务管理

    锁机制

    隔离机制

    状态问题(session)

    • 用cooke记录sesion

    缺点是有大小限制,另外不稳定,客户端可能关闭浏览器导致数据丢失,且不安全

    • session复制

    即集群中的服务器都持有一份sesion,每次有数据变化时需要同步给其他服务器,适合小规模网站

    • session绑定

    由负载均衡服务器将客户的IP/cookie与session绑定,实现会话粘滞。

    但这种方案缺乏高可用性,因为客户的关闭浏览器可能会改变cookie,客户端IP也可能变化,服务器端也可能宕机导致session丢失。

    • session服务器

    包含两个层面,

    一个是利用分布式缓存,可以实现会话的保持,适合一般集群需求

    另一个是独立session服务器,适合更高要求的需求,例如单点登录(SSO)

  • 相关阅读:
    泛社交泛泛之交也很重要
    iOS 切后台挂机
    iOS 导航栏translucent用法
    iOS 中UIButton中文字换行
    iOS 给UIimageView添加UITapGestureRecognizer手势点击事件
    iOS15UITableView多了白条,导航栏和Tabbar变成白色和标题变黑处理总结属性变化和原来基本的导航栏属性总结记录(看到就更新)
    iOS延时定时功能
    iOS uiview添加背景图案
    iOS 导航栏返回把样式带回前面怎么办
    iOS 识别图片二维码demo,复制粘贴即用
  • 原文地址:https://www.cnblogs.com/fysola/p/6429071.html
Copyright © 2020-2023  润新知