首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理高流量Java应用程序中的负载?

如何处理高流量Java应用程序中的负载?
EN

Stack Overflow用户
提问于 2012-02-21 02:28:43
回答 3查看 4.1K关注 0票数 3

我正在开发一个高流量的java web应用程序。目前我正在定义它的架构。我有一些问题:

  • 在设计处理负载的体系结构时应该考虑哪些关键因素?
  • 如何防止web应用程序下降或如何确保高可用性?

我预计一次将有数以百计的用户登录。我计划将数据保存在应用程序范围内(静态变量),以避免在数据库中查找数据。在会话中,我计划存储5kB的数据。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-21 03:33:05

我想我会考虑的关键因素是:

balancers?

  • What
  • 您需要集群感知的应用服务器吗?
  • 您需要基于硬件或软件的负载
  • 参数来确定服务器的运行状况吗?
  • ,您会负载平衡DBs吗?
  • 会增加I/O吗?CPU很重?两者都是吗?
  • ,你想利用大量的网络流量吗?如果每个用户平均拥有5K的数据,那么在考虑使用链接saturated?
  • Scale与扩展链接之前,您能够处理多少用户。确定您的应用程序最擅长的是哪一个,并利用它。
  • 会有很多DB
  • 在使用共享存储吗?

我希望这能帮到你。

票数 2
EN

Stack Overflow用户

发布于 2012-02-21 02:35:20

对于期望处理不断增长的流量的系统来说,可伸缩性非常重要。而无状态是实现简单规模系统的关键。签出http://www.playframework.org/,一个无状态的web框架。使用mongodb的播放框架(通过PlayMorphia模块),您可以轻松地实现一个可伸缩的web应用程序。

票数 0
EN

Stack Overflow用户

发布于 2019-01-08 18:58:29

我的一些考虑和最佳做法是:

  • 使用坚实的原则,并不是所有的原则都适用于所有项目,尤其是单一责任和开放/封闭原则,以帮助您更容易地扩展/定制软件以应对不断变化的需求,并且不断增长的流量
  • 将很少更改内存数据库中的配置数据,如果需要更改,则首先更新关系数据库,然后调用Restfull来刷新内存对象
  • 定义和分区逻辑,方法是估计产品增长以更快地运行搜索查询。例如,如果移动号码是通过使用模块化操作来通过考虑关系数据库或内存数据库中的单个db对象大小constraints
  • Keep数据库的最小更新来确定分区id的关键值,则通过序列化更新操作来确定分区id。如果数据状态在短时间内被更新,那么将其保存在内存中,并使用预定任务对关系数据库进行批处理更新。
  • 使用可用日志库的全部功能来记录重要和有意义的内容,更喜欢异步日志记录。
  • 通过单独的队列进行历史记录,使用批处理插入,并使用异步API逻辑通过计划的endpoints
  • Define使用它来加快执行速度,期望请求具有会话Id或返回跟踪id来请求,并在并行jobs.
  • Implement重试逻辑执行失败通知时发送响应,每个软件子系统独立且自给自足。子系统应该通过API通信和共享数据,而不是通过共享内存或磁盘存储。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9371331

复制
相关文章

相似问题

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