热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

我与django不得不说的故事(十六,完)性能优化

唯有变化,才是永恒架构设计追求的是一种行云流水,水到渠成的感觉。没有一种架构适合于所有的场合,也没有一种应用会只用一种构架。在外部环境不断

唯有变化,才是永恒

    架构设计追求的是一种行云流水,水到渠成的感觉。没有一种架构适合于所有的场合,也没有一种应用会只用一种构架。在外部环境不断变化的过程中,我们的架构设计也会不断的进行变化。本章想讲讲django相关的性能和扩展的话题。

    先有一个感性的认识。我用ab在我的x200上进行测试django运行的普通动态页面,大约每秒可以运行200次请求左右,而如果用c++来开发的后台程序,差不多可以跑1500-2000次。但这并不是说django就很差,其它动态语言跑和c++也是有差距的。这个结果告诉我们,如果你的django程序的访问量在每秒200以下,那么你基本可以不作任何事。当你的django程序访问量在200-1000之间时,我们可以通过一些django的手段来进行优化,这个时候单机来跑依然是可行的。当访问量大于1000的时候,你又没有什么其它方面的改进,那么可能需要进行架构的改进以及进行多机部署。

    先来说说单机优化的事,说到优化,我们首先要知道我们的瓶颈在哪里。倒底是语言的瓶颈,是架构的瓶颈,还是算法瓶颈。一般来说,算法的改进可以让效率提升的最为明显,然后是架构的改进,最后才是语言的改进。

    算法的改进这里就不讲了,这个比较和业务相关。

    架构的改进,这个可以讲讲。一般认为,django系统的运行瓶颈在于模型和模板的低效率,当然可能也没那么低效。模型就是数据,也就是数据库。改进这个可能的方法就是利用django的cache系统来提供高速的数据访问,减少orm的使用。django内部提供一个cache机制,可以通过文件,数据库或者memcache用来缓存各种数据,通过中间件来接管后台的数据库管理。或者缓存某个页面,这个和php的动态页面静态化处理不知道是不是一个意思。同时models和templates也都有自己的模型类和模板的小缓存,用来自己数据的cache,这个好象是写死的。值得说一下的是,现在还有redis可以用了,django-redis-cache,木有用过呢。有了这个以后你的系统性能会有较大提高。
传说模板和模型都是可以被替换的,虽然笔者认为此法不妥,如果你把它们都替换了,那你用django来作什么,搞个web.py多爽啊。

    在架构上,当单机无法达到性能要求的时候,要作的依然是首先分析瓶颈在哪里,如果是数据库的问题,那就优化数据库,数据库分表,分区,作主从模式,这个django有一定程序的支持,可以去看官档。如果是memcache的问题,就增加memcache的机器。如果到了这一步,你将面临的就是痛苦但快乐着的系统重构,你可以放弃django选择性能更强的框架,但我不认为这样是最好的选择,因为我们可以挖的东西还有很多。

    如果你的网站一台机器已经无法满足需求了,那么恭喜你,你离成功又近了一步。

    最后的优化在于语言层面,比如怎么使用python更高效的语法描述,以及对关键点使用混合语言编程来提供效率等等,这里就不再细说了。

    此系列文章到这里就要结束了,我想,关于django的话题可以有很多,当然不限于只写一个blog。最后的最后想提一下:一切的一切都是为了产品服务,产品的一切都是为了用户的需求。而前面的一切都是为了---赚到钱。感谢稀的看的同学,也希望和你们交流。很长一段时间以来一直保持晚睡的习惯,有人如是说:熬夜,是没有勇气结束这一天;赖床,是没有勇气开始这一天。勇气这个东西在时间的面前,不知道还剩下了多少(声音越来越远,越来越小)。。。

转自:http://ddtcms.com/news/2011/12/25/wo-yu-django-bu-de-bu-shuo-de-gu-shi-shi-liu-wan--xing-neng-you-hua-jia-wai-yi-pian-hun-he-yu-yan-kai-fa/
 


推荐阅读
  • PHP语言之所以能有今天的地位,得益于PHP语言设计者一直遵从实用主义,将技术的复杂性隐藏在底层。PHP语言入门简单,容易掌握,程序健壮性好。 ... [详细]
  • http:simple-is-better.comnews1047Firefly是免费、开源、稳定、快速扩展、能“热更新”的分布式游戏服务器端框架,采用Python编 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 企业数据应用挑战及元数据管理的重要性
    本文主要介绍了企业在日常经营管理过程中面临的数据应用挑战,包括数据找不到、数据读不懂、数据不可信等问题。针对这些挑战,通过元数据管理可以实现数据的可见、可懂、可用,帮助业务快速获取所需数据。文章提出了“灵魂”三问——元数据是什么、有什么用、又该怎么管,强调了元数据管理在企业数据治理中的基础和前提作用。 ... [详细]
  • 面试经验分享:华为面试四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试
    最近有朋友去华为面试,面试经历包括四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试。80%的人都在第一轮电话面试中失败,因为缺乏基础知识。面试问题涉及 ... [详细]
  • 14亿人的大项目,腾讯云数据库拿下!
    全国人 ... [详细]
  • 玩转直播系列之消息模块演进(3)
    一、背景即时消息(IM)系统是直播系统重要的组成部分,一个稳定的,有容错的,灵活的,支持高并发的消息模块是影响直播系统用户体验的重要因素。IM长连接服务在直播系统有发挥着举足轻重的 ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • 都说Python处理速度慢,为何月活7亿的 Instagram依然在使用Python?
    点击“Python编程与实战”,选择“置顶公众号”第一时间获取Python技术干货!来自|简书作者|我爱学python链接|https:www.jian ... [详细]
  • 0x00端口渗透端口扫描端口的指纹信息(版本信息)端口所对应运行的服务常见的默认端口号.尝试弱口令端口爆破hydra端口弱口令NTScanHs ... [详细]
  • 由PHP转让Memcahce,首先,需要在server安装Memcache,如何安装Memcache这不是本文的重点,大约m ... [详细]
  • yii框架目录结构详细分析说明
    php教程|php手册yii,目录结构php教程-php手册yii框架目录结构详细分析说明猫狗大战源码,华为云电脑ubuntu,梦见放走很多爬虫,parttmpphp,seo页面描 ... [详细]
author-avatar
mobiledu2502871343
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有