首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该采取措施确保Django应用程序在编写之前能够进行缩放吗?

我应该采取措施确保Django应用程序在编写之前能够进行缩放吗?
EN

Stack Overflow用户
提问于 2015-12-23 16:18:20
回答 3查看 136关注 0票数 0

所以,我想用python2 django(-rest框架)、postgres和rest编写一个应用程序。

我知道有很多事情可以做

  • 负载均衡器后面的多服务器设置
  • 数据库复制/分片?
  • 缓存(以各种方式)
  • 将DRF序列化器替换为serpy
  • 运行在python3上
  • 在pypy上运行

我的问题是-这些(或其他事情)中的哪一件应该在项目开始时真正做好?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-19 11:16:09

编写时要考虑到可伸缩性。

可伪造性不仅限于生产服务器/环境,而且还限于开发环境。

编写时始终考虑到可伸缩性。

在发展中

开发中的可伸缩性允许您无拘无束地开发产品。

  1. 构造存储库 使用像GitFlow这样的git分支模型,这样开发人员就可以并行工作,或者单个开发人员可以切换不同的特性。使用窃听器追踪器。
  2. 设计你的应用程序. 在实际编写一行代码之前,写下您将要编写的应用程序。设计应用程序,以最小化关系(ManyToMany,ForeignKey等),导入。Django提供了可移动的应用程序架构,请放心明智地使用它。
  3. 首先编写您的测试. 这确保了您可以迁移(生产环境),升级和降级,减少痛苦和头发损失。相信我,写考试感觉很无聊,但这是值得的。
  4. 抽象模型,经理 使用抽象模型和管理器,可以消除浮雕板模型代码,并帮助您维护代码。
  5. 名称变量、类和方法的描述性. 将变量、类和方法命名为描述性的,因为您可以不看文档就知道它代表什么。
  6. 文档代码. 可以自由地记录类和方法,因此,您或其他查看代码的同行可以了解代码缩进的目的,而不是堆栈跟踪,以查看方法正在做什么。
  7. 使用调试工具栏 在开发中使用django调试工具栏,在测试API时,使用prefectch_related()select_related()来最小化/消除重复查询。
  8. 模块化代码. 模块化代码。Python和django通常鼓励使用模块。模块易于管理。使用类、更多的继承和抽象基类来重用代码。
  9. 使用连续集成 使用持续集成测试您的回购,并确保新的推送不会破坏系统。

在生产现场。

生产中的可伸缩性允许您无意间向无限用户提供产品。

  1. 用于多服务器设置的
代码语言:javascript
复制
- Stick with rest design principles.
- Eliminate sessions.
- Use distributed cache like Redis.

  1. 将DRF序列化程序替换为serpy 如果你需要更多的速度,如果你觉得舒服的话,那就从锯齿状开始。最好坚持使用Serpy,而不是重写DRF序列化程序,因为它们都看起来都是笑脸,但是要确保您不是在为丢失的1或2ms进行优化而浪费时间。
  2. 运行在上的python3 取决于您计划使用的库。
  3. 运行在pypy上的 pypy比标准实现更快。使用pypy取决于库的兼容性。兼容包的列表和兼容性的状态。

现在问题是,

这些(或其他事情)中的哪一件应该在项目开始时真正做好?

Ans:发展(1,2,3,4,5,6,7,8)生产(1,2)

票数 2
EN

Stack Overflow用户

发布于 2015-12-23 16:36:21

我不认为你需要马上开始担心这个设置。我会阻止过早的优化。相反,在生产中运行该应用程序,并对其进行分析。看看什么影响你的表现,当你达到规模-你会知道什么是瓶颈。

票数 1
EN

Stack Overflow用户

发布于 2015-12-23 16:51:47

首先和主要的事情,你必须得到正确的是一个干净和正确的数据库模式和清晰,可读性和正确的因素(干.除非是偶然的复制)和解耦的代码。如果您知道如何设计关系DB模式,并学会正确地使用Python和Django,那么到目前为止,您应该不会遇到太多问题,如果这两件事都做对了,那么就很容易扩展--在需要的地方添加缓存(Redis、Memcache或存储经常访问的数据的“预处理”版本的中间NoSQL文档数据库)、添加服务器、负载平衡等等,这取决于应用程序的需要。Django很容易扩展,除非你做一些愚蠢的事情,否则它很容易扩展。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34439775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档