海量数据和高并发的解决方案

  1. 海量数据的解决方案
    • 缓存和页面静态化

      •  缓存可以使用map(ConcurrentHashMap)直接保存在内存中,或者使用缓存框架Ehcache,Memcache,Redis等。缓存最重要的是缓存的创建时间和失效机制。缓存应该把空值定义一个类型,防止查到空的缓存后频繁查找数据库查找值,缓存适用于实时性要求不高且不频繁变化的数据
      • 页面静态化,将程序最后生成的页面保存起来,可以使用模板技术freemaker,velocity生成静态页面,也可以使用缓存服务器squid和nginx等
    • 数据库优化
      •  表结构优化
      • SQL语句优化
      • 分区:将一张表中的数据按照一定的规则分到不同的区来保存,查询数据时如果数据的范围在同一个区内那么可以只对一个区的数据进行操作,这样操作的数据量更少,速度更快。
      • 分表
      • 索引优化
      • 使用存储过程代替直接操作
    • 分离活跃数据(把不活跃的数据放到另外的数据表中,查询的时候先到活跃表中查询数据查不到再去查不活跃数据的表)
    • 批量读取和延迟修改(通过减少操作次数来提高效率)
      •  批量读取是将多次查询合并到一次中进行。可以是同一个请求中的数据批量读取也可以是多个请求的查询合并到一次进行。
      •  延迟修改,针对高并发且频繁修改和新增的数据,可以先将需要修改的数据暂时保存在缓存中,然后定时将缓存中的数据保存在数据库中,程序在读取数据时可以同时读取数据库中和缓存中的数据。  
    • 读写分离  
时间: 2024-10-15 17:48:06

海量数据和高并发的解决方案的相关文章

161219、大型网站应用之海量数据和高并发解决方案总结一二

一.网站应用背景 开发一个网站的应用程序,当用户规模比较小的时候,使用简单的:一台应用服务器+一台数据库服务器+一台文件服务器,这样的话完全可以解决一部分问题,也可以通过堆硬件的方式来提高网站应用的访问性能,当然,也要考虑成本的问题. 当问题的规模在经济条件下通过堆硬件的方式解决不了的时候,我们应该通过其他的思路去解决问题,互联网发展至今,已经提供了很多成熟的解决方案,但并不是都具有适用性,你把淘宝的技术全部都搬过来也不一定达到现在淘宝的水平,道理很简单. 当然,很多文章都在强调,一个网站的发展

大型网站应用之海量数据和高并发解决方案总结一二

一.网站应用背景 开发一个网站的应用程序,当用户规模比较小的时候,使用简单的:一台应用服务器+一台数据库服务器+一台文件服务器,这样的话完全可以解决一部分问题,也可以通过堆硬件的方式来提高网站应用的访问性能,当然,也要考虑成本的问题. 当问题的规模在经济条件下通过堆硬件的方式解决不了的时候,我们应该通过其他的思路去解决问题,互联网发展至今,已经提供了很多成熟的解决方案,但并不是都具有适用性,你把淘宝的技术全部都搬过来也不一定达到现在淘宝的水平,道理很简单. 当然,很多文章都在强调,一个网站的发展

大数据和高并发的解决方案汇总

大数据和高并发的解决方案汇总 1.3海量数据解决方案 1.使用缓存: 使用方式:1,使用程序直接保存到内存中.主要使用Map,尤其ConcurrentHashMap. 2,使用缓存框架.常用的框架:Ehcache,Memcache,Redis等. 最关键的问题是:什么时候创建缓存,以及其失效机制. 对于空数据的缓冲:最好用一个特定的类型值来保存,以区别空数据和未缓存的两种状态. 2.数据库优化: 1,表结构优化. 2,SQL语句优化,语法优化和处理逻辑优化.可记录各语句执行时间,有针对性的分析.

PHP中大数据和高并发的解决方案汇总

大数据和高并发的解决方案汇总 1.3海量数据解决方案 1.使用缓存: 使用方式:1,使用程序直接保存到内存中.主要使用Map,尤其ConcurrentHashMap. 2,使用缓存框架.常用的框架:Ehcache,Memcache,Redis等. 最关键的问题是:什么时候创建缓存,以及其失效机制. 对于空数据的缓冲:最好用一个特定的类型值来保存,以区别空数据和未缓存的两种状态. 2.数据库优化: 1,表结构优化. 2,SQL语句优化,语法优化和处理逻辑优化.可记录各语句执行时间,有针对性的分析.

转载:【高并发简单解决方案 | 靠谱崔小拽 】redis队列缓存 + mysql 批量入库 + php离线整合

需求背景:有个调用统计日志存储和统计需求,要求存储到mysql中:存储数据高峰能达到日均千万,瓶颈在于直接入库并发太高,可能会把mysql干垮. 问题分析 思考:应用网站架构的衍化过程中,应用最新的框架和工具技术固然是最优选择:但是,如果能在现有的框架的基础上提出简单可依赖的解决方案,未尝不是一种提升自我的尝试. 解决: 问题一:要求日志最好入库:但是,直接入库mysql确实扛不住,批量入库没有问题,done.[批量入库和直接入库性能差异参考文章] 问题二:批量入库就需要有高并发的消息队列,决定

面向海量数据的高并发高可用分层系统架构设计

近期参与一个互联网项目,按照该项目的需求设计了分层的系统架构,主要目的是高并发高可用,能够根据用户访问量和并发情况进行伸缩. 第一个部分是由Web服务器和应用服务器构成的负载均衡区.该区域的主要目标是分散用户的访问量,平衡各服务器的压力,提高各服务器的资源利用率,因为大多数网站都是属于IO密集型,因此可以利用线程池增加并发处理能力,采用多核多内存的资源配置模式.可以采用Apache+Tomcat或Nginx+Jboss来实现,其中消息服务器通过异步处理机制可以提高系统响应速度,增加用户体验. 第

高并发简单解决方案————redis队列缓存+mysql 批量入库

问题分析 思考:应用网站架构的衍化过程中,应用最新的框架和工具技术固然是最优选择:但是,如果能在现有的框架的基础上提出简单可依赖的解决方案,未尝不是一种提升自我的尝试. 解决: 问题一:要求日志最好入库:但是,直接入库mysql确实扛不住,批量入库没有问题,done.[批量入库和直接入库性能差异] 问题二:批量入库就需要有高并发的消息队列,决定采用redis list 仿真实现,而且方便回滚. 问题三:日志量毕竟大,保存最近30条足矣,决定用php写个离线统计和清理脚本. done,下面是小拽的

【高并发简单解决方案】redis队列缓存 + mysql 批量入库 + php离线整合

原文地址 :https://segmentfault.com/a/1190000004136250需求背景:有个调用统计日志存储和统计需求,要求存储到mysql中:存储数据高峰能达到日均千万,瓶颈在于直接入库并发太高,可能会把mysql干垮. 问题分析 思考:应用网站架构的衍化过程中,应用最新的框架和工具技术固然是最优选择:但是,如果能在现有的框架的基础上提出简单可依赖的解决方案,未尝不是一种提升自我的尝试. 解决: 问题一:要求日志最好入库:但是,直接入库mysql确实扛不住,批量入库没有问题

高并发请求解决方案

使用场景:某平台用户搜索(search)-选择商品-下单: 本公司角色:二级代理商(在香港外包公司取得数据=美国总部一致对外公布的商品信息+香港一级代理商佣金) 业务处理流程:平台(多个)用户请求-公司请求-外包(美国+一级代理商)结果-公司处理-平台 业务流程中主要是针对用户搜索(search)带来的高并发处理进行一个记录. 解决方案: LVS+Mencache(独立一台服务器 配置32g内存,liunx) LVS分发到四台“服务器”(主要是服务器没有购买下来,用普通的4G内存台式电脑替换):