大并发服务器结构框架

大并发服务器结构框架

基本模型

在这里插入图片描述

  • 队列 + 连接池
    在应用服务器和数据服务器之间有一个数据访问层( DAL ),应用服务器通过 DAL 访问数据服务器,可以将底层的数据库操作对其他层透明化;所以我们给 DAL 抽象出一个统一的接口,供其他层来操作,而底层我们可以分别使用各种ORM工具,或者原生SQL去实现。
    它的主要功能:增删改服务、查询、事务管理、并发,另外事务中包括工作单元,查询中包括延迟加载。

  • 缓存(分布式)
    缓存是用来保存热点数据的;
    缓存的更新方式:

    • 缓存超时,time out
    • 缓存换页,LRU(最近最少使用)
    • LFU(最不频繁使用)
      这种机制称为 nosql(反sql),用于保存非关系型数据( key / value),例如 Redis, memcahed;一般的非关系型数据库都自带有缓存机制

数据库读写分离

在这里插入图片描述

  • 使用主从服务器,由于一般服务器的读操作 > 写操作,所以主服务器进行写操作,更多的从服务器进行读操作,实现数据服务器的读写分离
  • 当主服务器进行写操作之后,对从服务器进行更新,通过日志更新。

使用任务服务器负载均衡

在这里插入图片描述

应用服务器被动接受任务

任务服务器的作用:

  • 应用服务器上有一个接口,任务服务器可以通过接口监控应用服务器的负载(CPU / IO / 并发 / 内存换页)
  • 查询之后选取合适的应用服务器分配任务
    缺点:A有3个任务。B有5个任务,任务服务器会将新的任务交给A,但是B的5个任务比A的3个任务执行的更快,会造成分配不公平的问题

应用服务器主动索要任务

当应用服务器空闲时会主动向任务服务器索要任务,会解决上述问题,但是需要更改任务服务器的逻辑

使用多个任务服务器

应当采取心跳机制
一个出现问题,能迅速转移故障

数据量大

以上的服务器优化都是针对并发量大的问题,如果数据量大时,应当进行数据分区

数据分区:

  • 垂直分区:
  • 用户数据库
  • 业务数据库
  • 基础信息数据库
  • 水平分区:可以横向扩展

服务器性能四大杀手

  • 数据拷贝:缓存解决
  • 环境切换:多线程问题,单核服务器(采用状态机编程)
  • 内存分配:内存池
  • 锁:使用逻辑减少锁的使用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值