• 高并发一些处理办法


    处理高并发问题的一些方式
    1.拆表:大表拆小表(垂直拆,水平拆;分表,分区partition,分片sharding),可以在应用层实现,也可以在数据库层面实现一部分;提高系统性能。
    2.分库:把表放到不同的数据库,这也是分布式数据库的基础;提高系统性能。
    3.分布式:不同的数据库放到不同的服务器;提高系统性能。
    4.集群:使用数据库复制等技术组建集群,实现读写分离、备份等;提高系统性能、可用性。
    5.缓存:对常用的数据进行缓存。提高系统性能。
    6.备份:主从库,快照,热备,异地备份等;提高系统可用性
    架构:LVS+keepalived+Java/PHP/Python+mysql/mongodb+memcached/redis+centos+nginx/apache+sphinx/solr+Gearman+Munin+TFS

    优化的顺序是:业务、程序、部署。

    从业务上要处理好应用超出负荷时的处理,比如:目前在线人过多请稍候访问之类的提示;减少图片、附件等上传的大小限制,甚至临时取消附件功能,减少带宽和存储空间的压力;分页只支持固定的分页。

    程序上包括应用的优化和数据库的优化。有可能的话尽量使用第三方的服务减少服务器自身的压力。首页等访问量大的页面静态化,减少数据库的压力,批量的实务代替时时的处理。数据库要对业务表的锁进行细化处理,读写分离。

    部署上要数据库一台,另外两台负载均衡。使用cdn尽量把流量分离出去。增加防ddos攻击,跳高防护的等级,减少网络攻击对普通用户的影响。

    并发中的性能问题
    1,有钱就堆设备
    2,充分利用缓存(配合php的黑魔法fastcgi_finish_request非常好用)

    并发中数据一致性问题
    1,使用队列
    2,必要的自动复查
    3,数据库锁的合理利用

    负载均衡
    读写分离
    缓存,分布式缓存

    最基本的各种配置文件的优化是有必要的.

    程序方面:数据文件缓存,内存缓存,静态缓存,opcode缓存等等

    数据库方面:设计合适的表结构,表缓存优化,主从动静分离,集群,冷热数据分离等....

  • 相关阅读:
    java多线程详解(7)-线程池的使用
    mysql学习(4)-mysqldump备份和恢复数据
    mysql学习(3)-linux下mysql主从复制
    java多线程详解(5)-Threadlocal用法
    java多线程详解(4)-多线程同步技术与lock
    java多线程详解(3)-线程的互斥与同步
    iava多线程详解(2)-成员变量与局部变量访问
    java多线程详解(1)-多线程入门
    redis 的消息发布订阅
    redis 数据类型
  • 原文地址:https://www.cnblogs.com/yimingwang/p/8394699.html
Copyright © 2020-2023  润新知