zoukankan      html  css  js  c++  java
  • 浅谈简单场景下处理高并发的思路

    1. 单机变集群

    2. 数据库分库分表、读写分离

    常见的分库分表:

    (1)垂直分表:

      通俗的说就是“大表拆小表”。拆分是基于关系型数据库中的“列”(字段)进行的。通常情况,某个表中的字段比较多,可以新建立一张“扩展表”,将不经常使用或者长度较大的字段拆分出去放到“扩展表”中。

    (2)垂直分库:

      在“微服务”盛行的今天已经非常普及了。基本的思路就是按照业务模块来划分出不同的数据库,而不是像早期一样将所有的数据表都放到同一个数据库中。

    (3)水平分表:

      水平分表也称为横向分表,比较容易理解,就是将表中不同的数据行按照一定规律分布到不同的数据库表中(这些表保存在同一个数据库中),这样来降低单表数据量,优化查询性能。最常见的方式就是通过主键或者时间等字段进行 Hash 和取模后拆分。

    (4)水平分库分表:

    水平分库分表与上面讲到的水平分表的思想相同,唯一不同的就是将这些拆分出来的表保存在不同的数据中。这也是很多大型互联网公司所选择的做法。

    3. 加入缓存

    4. 加入消息中间件,将同步请求异步处理

    基本采用以上的几个思路都可以达到减少数据库并发请求的目的,很多时候系统崩溃也都是从数据库开始,这里要特别注意有时候硬盘满了也会造成数据库连接数占满的情况,

    所以一定要做好实时监控好硬盘状态,这个一般运营商也都有这个服务。

  • 相关阅读:
    跳跃表原理
    查看Oracle操作历史的试图
    【概念】为什么有时全表扫描比通过索引扫描效率更高
    oracle驱动表以及如何确定驱动表
    SpringBoot学习(三)-----配置Bean
    leetcode 面试题58
    leetcode 1365 有多少小于当前数字的数字
    leetcode 1342 将数字变成 0 的操作次数
    leetcode1313 解压缩编码列表
    leetcode 1071 字符串的最大公因子
  • 原文地址:https://www.cnblogs.com/pzyin/p/11414386.html
Copyright © 2011-2022 走看看