`
sacredlove
  • 浏览: 12367 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

整理大型网站架构演变和知识体系

 
阅读更多

1、架构演变第一步:物理分离webserver和数据库

 

2、架构演变第二步:增加页面缓存

      如用squid做页面缓存,或生产静态页面,不使用jsp

 

 

3、架构演变第三步:增加页面片段缓存

      页面缓存失效情况比较多,因此可以使用页面片段缓存,只缓存不长变部分。

 

 

4、架构演变第四步:数据缓存:缓存那些读多写少的数据。最常见的就是用户数据。如java中单JVM级/集群级缓存(Ehcache)、分布式缓存(memcached)等。

 

 

 

5、架构演变第五步: 增加webserver(集群web server):考虑负载均衡(apache的负载均衡,LVS负载均衡、F5硬件级负载均衡),数据缓存需要考虑使分布式缓存(memcached

 

6、架构演变第六步:分库:按业务将不同业务分为不同的库,部署到不同的服务器上,如用户系统单独一台、论坛等其他每个产品一台。

 

 

7、架构演变第七步:分表、DAL和分布式缓存:按照分库思想分表,需要注意一些规则。如用户系统设计时,把不经常访问的数据放到一张表(需要时加载)。DALData Access Layer):分布式数据访问层,使分表透明化,自动切表。DAL涉及到比较多的复杂技术,例如数据库连接的管理(超时、异常)、数据库操作的控制(超时、异常)、分库分表规则的封装等;

 

 

 

8、架构演变第八步:增加更多的webserverweb服务器禁止使用session,数据可存分布式缓存

 

9、架构演变第九步:数据读写分离和廉价存储方案:如使用NoSql(key-value数据库,mongodb等),数据读写分离要求对数据库的复制、standby(可将单实例数据库升级到RAC

 

 

(real application clusters 实时应用集群)数据库)等策略有深入的掌握和理解,同时会要求具备自行实现的技术;

 

 

 

 

10架构演变第十步:进入大型分布式应用时代和廉价服务器群梦想时代

 

 

 

 

 

 

七种缓存使用武器 为网站应用和访问加速发布时间:

Web应用中缓存的七种武器:

1 数据库的缓存

  通常数据库都支持对查询结果的缓存,并且有复杂的机制保证缓存的有效性。对于MySQL,Oracle这样的数据库,通过合理配置缓存对系统性能带来的提升是相当显著的。

 

2 数据连接驱动的缓存。

  诸如PHP的ADODB,J2EE的连接驱动,甚至如果把HIbernate等ORM也看成连接器的话。这里的缓存有效机制就不是那么强了,使用此步的方法实现缓存的一个最好的优点就是我们取数据的方式可以保持不变。例如,我调用

$db->CacheGetAll("select * from table"); 的语句不需要改变,可以透明实现缓存。这主要应用于一些变化不大的数据上,例如一些数据字典是不经常变化的。

 

3 系统级的缓存

  可以在系统内通过Cache库,自行对需要的数据进行缓存,例如一个树桩菜单生成十分消耗资源,那可以将这个生成的树缓存起来。这样做的缺点是,当这颗树的某些地方被更新时,你需要手动更新缓存内的东西。使用的缓存库都可以有不同的缓存方法,有的把内容放在硬盘上,有的放在内存里面,如果你把内容模拟成硬盘来缓存,速度当然也能提升不少。

4 页面级的缓存

  这个在内容管理系统里面用的最多。也就是生成静态页面。这里面缓存控制机制最为复杂,一般也没有什么包治百病的方法,只有具体情况具体分析。通常生成的静态叶面你需要有一个机制去删除过时的,或访问很少的叶面,以保证检索静态叶面的速度。

5 使用预编译叶面和加载为FastCGI的办法

  对于PHP,可以使用zend等编译引擎,对于JSP本身就是预编译。而FastCGI的原理就是将脚本预先加载起来,不用每次执行都去读,这和JSP预编成Servlet,然后加载的道理是一样的。

6 前置缓存

  可以使用Squid作为Web服务器的前置缓存。

7 做集群

  对数据库作集群,对web服务器作集群,对Squild前置机做集群

  对于新手来说,如果你的程序要是恰死,首先你要检查代码是否有错误,是否存在内存泄漏,如果都没有,那么通常问题出在数据库连接上面。

  综合应用上面的缓存方法,开发高负载的Web应用成就很容易了。

 

 

web软件设计时考虑你的性能解决方案

* 关键准则:

 1. 选择什么编程语言不是问题

 2. 选择的框架才可能影响系统的扩展和性能

 3. 我倾向于以数据库为中心设计数据结构。

 4.  分从两个方面提升性能:

  1) . 软件设计方面

        * 网页静态化

        * 独立的图片服务器

        * 可能采用中间缓存层服务器,最可能采用第三方成熟的软件

        * 数据库分表(水平分割是最终方案)

  2).  系统、网络、硬件结构

        * 集群:数据库集群,WEB集群

        * 采用:SAN

        * 提升网络接入带宽

      

 

影响性能的因素有哪些?其实只有下面几个方面:

1.持久性数据查找速度

2.持久性数据读写速度

3.逻辑复杂度

4.物理内存不够导致的虚拟存储频繁交换.

对应的解决方法:

1.建立最合适的索引,建立缓存

2.建立缓存,升级硬件

3.精简,优化逻辑

4.减少内存使用。

分享到:
评论

相关推荐

    研究现状与应用情况说明.docx

    以上知识点详细介绍了论文开题报告撰写中的几个关键环节,包括讨论现状的撰写方法与技巧、研究目标的设定、研究内容的明确、研究步骤的规划、研究方法的选择、研究成果的形式以及研究组织架构与人员分工等内容。...

    J2EE 入门学习资料(中文)

    J2EE的诞生,标志着Java技术在企业应用领域的成熟,它基于Java SE,并在此基础上增加了更多针对大型企业应用的功能,如事务处理、安全性和集群管理。 **面向Internet的编程与Java的演变** 自1994年起,随着互联网...

    数据挖掘技术在针灸治疗腰痛古代文献中的应用.pdf

    研究的主要目的是为了更好地理解古代医学文献中针灸治疗腰痛的经验,并试图从中提炼出一套系统化的知识体系。 2. 研究方法 研究首先进行了古代针灸文献的收集工作,随后对这些资料进行了筛选和整理,建立了数据库。...

    基于Atmega128AU的热电偶温度采集与PID加热控制高精度数据采集系统设计

    内容概要:本文详细介绍了基于Atmega128AU微控制器的高精度温度采集与PID加热控制系统的设计与实现。系统采用两片AD7732进行24位高精度数据采集,配合MAX31856实现热电偶温度测量,并通过PID算法对加热过程进行精确控制。文中详细描述了各个组件的配置方法、代码实现以及抗干扰措施,确保系统的高精度和稳定性。此外,系统支持Modbus RTU通信协议,便于远程监控和调试。 适合人群:具有一定嵌入式开发经验的研发人员和技术爱好者。 使用场景及目标:适用于需要高精度温度控制的工业应用场景,如实验室、热处理炉等。目标是实现稳定的温度采集和精准的加热控制,同时具备良好的抗干扰性能。 其他说明:文中提供了详细的代码片段和配置指南,帮助读者理解和复现系统设计。强调了硬件选择、软件实现和抗干扰设计的重要性,确保系统能够在复杂环境中稳定运行。

    蓝桥杯C++程序设计本科B组题目

    蓝桥杯c ++资源。蓝桥杯C++程序设计本科B组题目。

    基于DSP28X的无速度矢量控制与飞车启动的C语言实现及优化

    内容概要:本文详细介绍了无速度矢量控制(Sensorless Vector Control)和飞车启动(Flying Start)的技术实现及其优化方法,特别针对TI公司的DSP28X系列处理器进行了深入探讨。文中首先讲解了飞车启动的关键技术,如滑模观测器的应用,通过符号函数和三目运算符实现高效控制,解决了电机自由旋转时的传统难题。接着讨论了全速域追踪的实现,利用自适应滤波器进行角度补偿,确保低速高精度和高速稳定性的平衡。此外,文章还展示了如何将算法封装成Simulink可调用的S函数模块,便于调试和移植。最后,针对代码移植过程中常见的问题提供了具体的解决方案,如IQmath库的使用技巧、PWM中断优化以及硬件依赖的抽象化处理。 适合人群:具备嵌入式系统开发经验,尤其是熟悉DSP和电机控制领域的工程师和技术人员。 使用场景及目标:①适用于需要高性能电机控制系统的工业应用场景,如风机、洗衣机、电动工具等;②帮助工程师理解和掌握无速度矢量控制和飞车启动的核心技术和优化方法,提高系统的可靠性和性能。 其他说明:本文不仅提供了详细的代码实现,还分享了许多实用的经验和技巧,对于希望深入了解电机控制算法并应用于实际项目的开发者非常有帮助。

    中兴光猫G7610V2-V3.0.0P1N12固件

    中兴光猫G7610V2-V3.0.0P1N12固件

    .NET Core外卖订餐系统:基于EF Core与Vue.js的企业级应用开发

    内容概要:本文详细介绍了如何使用 .NET Core 和 Vue.js 开发一个完整的外卖订餐系统。该系统分为后台管理系统和前台客户系统,采用的技术栈包括 .NET Core、EF Core Code First、Vue.js 和 Element UI。后台部分重点讲解了如何使用 .NET Core 创建 Web API 并通过 EF Core Code First 操作数据库,涵盖数据库设计、API 设计、权限管理等内容。前台部分则展示了如何利用 Vue.js 和 Element UI 构建用户友好的交互界面,包括动态表单、图片上传等功能。此外,文章还讨论了一些常见的开发陷阱和技术难点,如数据库查询优化、订单状态机、JWT 认证等。 适合人群:具备一定编程基础,特别是对 .NET Core 和 Vue.js 有一定了解的研发人员。 使用场景及目标:适用于希望深入理解前后端分离架构、企业级应用开发流程的学习者。通过实际项目的开发,掌握 .NET Core 和 Vue.js 的核心技术,提升解决实际问题的能力。 其他说明:文中提供了详细的代码示例和最佳实践建议,帮助开发者更好地理解和应用所学知识。同时,项目结构清晰,有助于初学者逐步掌握复杂的开发技巧。

    MATLAB实现DBN-RBF深度置信网络结合RBF神经网络多输入单输出回归预测的详细项目实例(含完整的程序,GUI设计和代码详解)

    内容概要:本文介绍了MATLAB实现DBN-RBF深度置信网络结合RBF神经网络多输入单输出回归预测的详细项目实例。项目旨在通过深度置信网络(DBN)和径向基函数神经网络(RBF)的结合,设计出一种高效的回归预测模型,以应对高维数据和非线性关系的挑战。DBN用于无监督特征提取,RBF用于快速回归,两者结合显著提升了预测精度和模型泛化能力。文中详细描述了项目的背景、目标、挑战、解决方案、模型架构、代码实现、GUI设计、性能评估及未来改进方向。 适合人群:具备一定编程基础,对机器学习和深度学习有一定了解的研发人员,尤其是从事金融预测、医疗健康、智能制造等领域的工程师和技术人员。 使用场景及目标:①解决高维数据的特征提取难题,提升非线性回归的拟合精度;②通过无监督学习与快速训练能力的结合,提高模型的预测精度和泛化能力;③应用于金融预测、医疗健康、智能制造等多个领域,提供高效的回归预测工具;④通过实时数据流处理和GPU加速推理,确保系统在实时应用中的快速响应。 其他说明:此项目不仅提供了详细的理论分析和代码实现,还涵盖了系统架构设计、模型部署与应用、安全性与用户隐私保护等方面的全面指导。通过结合其他深度学习模型、多任务学习、增量学习等技术,项目具备广阔的扩展性和应用前景。系统还支持自动化CI/CD管道、API服务与业务集成、前端展示与结果导出等功能,确保了系统的高可用性和易用性。

    工业自动化中两轴同步控制的高精度实现及其应用

    内容概要:本文详细介绍了在工业自动化领域中,针对高速缠绕与横向动作往返排线进给设备的两轴同步控制技术。主要内容涵盖硬件配置、动态补偿算法、配方管理、气缸控制以及速度滤波等方面的技术细节。文中强调了通过动态补偿算法将往返误差控制在极小范围内,利用结构体数组存储不同线径的工艺参数,确保不同型号间的快速切换,并采用二阶滤波算法降低机械冲击。此外,还讨论了气缸与运动轴的协同控制,确保物料夹持的精确性和稳定性。最终实现了两轴同步误差控制在3个脉冲以内,良品率达到99.8%以上的优异表现。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对两轴同步控制有深入研究的需求者。 使用场景及目标:适用于需要高精度同步控制的工业生产设备,如绕线机、切割机等。主要目标是提高生产效率和产品质量,减少因同步误差导致的产品缺陷。 其他说明:文章不仅提供了详细的代码实现,还分享了许多实际调试的经验教训,强调了现场实测数据的重要性。同时,展示了系统的高度移植性,能够在不同品牌的PLC上快速部署和调试。

    SMS网格软件 10.0

    建模前期用到的打网格软件SMS10.0,非常好用,解压安装无需破解

    电子硬件开发:白光JBC245/T12/936-A1321/A1322 OLED焊台控制板四合一开发资料详解

    内容概要:本文详细介绍了白光JBC245/T12/936-A1321/A1322 OLED焊台控制板的开发资料,涵盖完整的C语言程序、原理图、PCB设计文件以及相关照片。资料中不仅提供了详细的硬件设计方案,如电源部分、传感器接口、OLED显示模块等,还包括了关键的PID温度控制算法、状态机式的菜单系统设计、硬件SPI驱动等软件实现细节。此外,文中还特别提到了一些开发中的注意事项和技术技巧,如抗积分饱和、温度响应优化、热电偶信号处理等。 适合人群:电子爱好者、硬件开发工程师、嵌入式系统开发者。 使用场景及目标:适用于想要深入了解焊台控制板设计与实现的技术人员,帮助他们快速掌握从硬件设计到软件编程的全流程,提高开发效率,减少调试时间。同时,也为新手提供了一个很好的学习平台,通过实际案例加深对嵌入式系统开发的理解。 其他说明:资料包内含完整的源代码、原理图、PCB设计文件及校准文档,支持多种焊咀类型的自动识别和温度控制,确保了系统的灵活性和实用性。

    Solid Works软件的模型资料

    Solid Works软件的模型资料

    车辆ACC系统的MPC控制算法及其Carsim-Matlab联合仿真实现

    内容概要:本文详细探讨了车辆自适应巡航控制系统(ACC)的设计与实现,特别是针对前车切入这一关键场景。文中介绍了MPC(模型预测控制)算法的工作原理及其在ACC系统中的应用,强调了该算法能够在保证乘车舒适性的前提下,快速减小车距和速度误差。文章还展示了如何使用Carsim 16和Matlab 16B进行联合仿真,具体包括车辆动力学建模、MPC控制器的搭建、目标函数和约束条件的定义,以及一些实用的代码片段。此外,作者分享了在实际调试过程中遇到的问题及解决方案,如传感器延迟、加速度约束设置不当等,并通过实验验证了所提方法的有效性。 适合人群:从事汽车工程、自动化控制领域的研究人员和技术人员,尤其是对智能交通系统感兴趣的读者。 使用场景及目标:适用于希望深入了解ACC系统内部工作机制的研究人员,以及需要掌握MPC算法在实际工程项目中应用的技术人员。目标是帮助读者理解并能够独立实现类似的控制系统,提升车辆行驶的安全性和舒适性。 其他说明:文章不仅提供了详细的理论解释,还包括了许多具体的代码实例,便于读者理解和实践。同时,作者还分享了一些宝贵的实践经验,有助于读者避开常见的陷阱。

    Qt双路串口通信协议解析与实现:帧头帧尾处理、数据保存及配置管理

    内容概要:本文详细介绍了基于Qt5开发的双路串口通信框架,涵盖帧头帧尾解析、数据保存、ini配置与设备通信开发等方面。文中展示了如何通过状态机驱动的方式高效处理数据包,确保通信系统的健壮性和稳定性。此外,还讨论了动态双路串口配置、数据持久化策略以及配置文件管理的具体实现方法。该框架已在多个工业场景中成功应用,表现优异。 适合人群:具有一定Qt开发经验的研发人员,尤其是从事工业设备调试和嵌入式开发的技术人员。 使用场景及目标:适用于需要同时监控多个串口数据的工业设备调试场景,旨在提供稳定可靠的双路串口通信解决方案,帮助技术人员快速理解和实现复杂的串口通信协议。 其他说明:文中提供了大量代码片段和实战技巧,强调了协议处理层与业务逻辑的解耦设计,便于二次开发和协议扩展。

    我到测试文件,用于测试用的哈

    我到测试文件,用于测试用的哈

    【自媒体生态】AI流量智能体服务:内容创作与优化多功能工具集成系统设计了文档的主要内容

    内容概要:文章介绍了自媒体生态下AI流量智能体服务,旨在解决自媒体内容创作和流量获取中的难题。AI智能体作为低成本甚至零成本的高效助手,能生成高质量的文字、音频、图片和视频内容,尤其在内容仿写、改写、爆款内容生成方面表现突出。文中具体展示了AI工具在短视频、公众号、小红书图文和私域营销等领域的应用实例,如一键改写抖音文案并生成音频、快速提取并分析博主视频文案、将抖音内容转换为小红书风格内容等。此外,还提供了个性化定制选项,如自定义工作流、调整文案风格等,极大提高了内容创作效率。 适合人群:自媒体从业者、企业营销人员以及需要提高内容创作和流量获取效率的相关人士。 使用场景及目标:①利用AI工具快速生成和优化各类自媒体平台(如抖音、小红书、公众号)所需的文字、图片、音频、视频等内容;②通过分析爆款内容逻辑,生成吸引用户的标题和文案,提升作品的曝光率和吸引力;③借助AI智能体实现多流程自动化操作,如自定义数据来源、修改写作风格等,提高工作效率。 其他说明:AI智能体不仅能生成高质量内容,还能根据用户需求进行个性化定制,支持多种内容形式的互转,帮助用户更好地适应不同平台的特点。在使用过程中,应充分利用AI工具提供的各项功能,结合自身需求,灵活调整参数设置,以达到最佳效果。

    量子器件仿真:量子通信器件仿真.zip

    量子器件仿真:量子通信器件仿真.zip

    ABAQUS与FRANC3D联合仿真在可靠性与机构疲劳研究中的应用:裂纹扩展、残余应力及腐蚀分析

    内容概要:本文详细介绍了ABAQUS与FRANC3D联合仿真在可靠性与机构疲劳研究中的应用。首先概述了这两种软件的特点及其联合仿真的优势,随后具体探讨了单细节和多细节裂纹扩展分析的方法,包括模型创建、边界条件设定和裂纹扩展路径模拟。接着,文章深入讲解了闭合效应、残余应力和腐蚀裂纹扩展的分析方法,展示了如何通过接触属性、热-结构耦合分析和用户子程序(UMAT)来模拟这些现象。此外,还涉及了疲劳寿命预测、应力强度因子和裂纹扩展速率的计算,以及共振疲劳的研究。最后,作者分享了一些实用的编程技巧和经验,帮助研究人员更好地编写相关文献并优化仿真流程。 适合人群:从事材料科学、机械工程、航空航天等领域研究的专业人士,尤其是关注结构疲劳和可靠性分析的研究人员和技术人员。 使用场景及目标:适用于需要精确模拟裂纹扩展、评估材料和结构疲劳寿命的研究项目。主要目标是提供详细的仿真方法和实践经验,帮助研究人员提高仿真精度和效率。 其他说明:文中不仅提供了具体的代码示例,还分享了许多实际操作中的注意事项和技巧,有助于读者避免常见错误并优化仿真效果。

    电子硬件课程设计资源CT2016

    CT2016电子硬件课程设计资源 本资源为电子硬件课程设计提供丰富素材,涵盖电路设计、单片机应用、传感器技术等实用内容,适合学生和爱好者学习实践。包含项目案例、参考代码及设计文档,助你快速掌握硬件开发技能,完成创新项目。高效实用,助力电子设计学习!

Global site tag (gtag.js) - Google Analytics