Java 可伸缩API设计

Java 可伸缩API设计,java,solr,Java,Solr,我会尽力用最好的方式解释这个问题 假设我的应用程序名为app1。这是一个繁重的应用程序。这里重意味着更多的代码 我的应用程序是做什么的? 它有点像RESTWeb应用程序应用程序的数据源为SOLR我们在索尔拥有约1700万张唱片。 我们传递日期范围并从solr获取数据,进行基本计算并返回响应。 我们传递密钥并获取数据。 我们在solr中计算枢轴 所有用例都非常快速。我们有大约10个solr节点。SOLR在所有情况下的响应时间均小于5秒 问题来了: 对于移动应用程序,我们正在测试5000次点击次数。

我会尽力用最好的方式解释这个问题

假设我的应用程序名为app1。这是一个繁重的应用程序。这里重意味着更多的代码

我的应用程序是做什么的? 它有点像RESTWeb应用程序应用程序的数据源为SOLR我们在索尔拥有约1700万张唱片。

我们传递日期范围并从solr获取数据,进行基本计算并返回响应。 我们传递密钥并获取数据。 我们在solr中计算枢轴

所有用例都非常快速。我们有大约10个solr节点。SOLR在所有情况下的响应时间均小于5秒

问题来了:

对于移动应用程序,我们正在测试5000次点击次数。我是说同时有5000个休息电话

应用程序正在weblogic服务器上运行。我们有8个运行应用程序的实例。这些实例从10个solr节点读取数据

5000次点击不符合SLA要求。在点击300次之后,它开始在几个RESTAPI中失败

问题来了:

如何缩放它?以便所有点击都成功

添加rest应用实例或solr节点或增强代码或

将rest API拆分为多个部分[重、轻]。重API将获得更多的solr、rest指令

还有别的办法吗


我觉得代码是用最好的方式编写的。但我同意总会有进步的。我这么说是因为这个应用程序的响应速度非常快。但在我的用例中,我如何扩展?

您是否有一个图表来解释从请求进入系统到响应发送到客户端的时间?如果您只有一个实例在weblogic和10个SOLR节点上运行,我会说您的单个实例是您的瓶颈。特别是因为你的通话平均需要5秒的工作时间,这很有可能在尖峰时段(比如你的测试)耗尽你的资源。您是否使用云提供商托管您的应用程序?@Edd我提到了8个web logic server实例。噢,天哪!抱歉,我只是想了解一下,鉴于5秒是更长的请求,平均时间是多少?100毫秒,500毫秒,1秒?你也应该给我们更多关于压力测试的信息,在压力测试期间你使用的请求有多大的不同。完全不同?如果可能,我会获取一天/周的生产日志,并使用它在较短的时间内模拟测试。您是否有一个图表来解释从请求进入系统到响应发送到客户端的时间?如果您只有一个实例在weblogic和10个SOLR节点上运行,而不是一开始我会说你的单一实例是你的瓶颈。特别是因为你的通话平均需要5秒的工作时间,这很有可能在尖峰时段(比如你的测试)耗尽你的资源。您是否使用云提供商托管您的应用程序?@Edd我提到了8个web logic server实例。噢,天哪!抱歉,我只是想了解一下,鉴于5秒是更长的请求,平均时间是多少?100毫秒,500毫秒,1秒?你也应该给我们更多关于压力测试的信息,在压力测试期间你使用的请求有多大的不同。完全不同?如果可能的话,我会获取一天/周的生产日志,并使用它在较短的时间内模拟测试。