- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为我的应用程序推出自己的短信验证系统。我不想开始为一项服务付费,然后让他们抬高我的价格(Urban Airship 对我这样做是为了推送通知:吸取教训)。在开发和 Beta 测试期间,我一直在使用 Twilio 进行非常基本的设置:1 个电话号码。它运行了一年多,但现在由于某种原因,消息并不总是能够传递。无论如何,我需要创建一个更好的生产系统。所以我考虑了以下规范:
现在 my Twilio phone number can send one SMS per second ;这意味着我最多可以处理每分钟 60 个满意的用户。那么如何才能获得每分钟 600 个满意的用户呢?
所以显而易见的解决方案是使用 10 个电话号码。但我该如何实现该系统呢?我的服务器是App Engine、DataStore、Java。假设我从 Twilio 购买了 10 个电话号码(当然越少越好)。如何实现该数组以便它可以处理来自用户的并发调用?以下内容就足够了吗?
public static final String[] phoneBank = {“1234567890”,”2345678901”,”3456789012”,”4567890123”,…};
public static volatile nextIndex;
public void sendSMSUsingTwilio(String message, String userPhone){
nextIndex = (nextIndex+1)%phoneBank.length;
String toPhone = phoneBank[nextIndex];
// boilerplate for sending sms with twilio goes here
//…
}
现在想象一下 1000 个用户同时调用这个函数。 nextIndex 会从 0,1,2…9,0,1…9,0,… 依次运行,直到发送所有请求为止?
所以这确实是一个并发问题。 Java AppEngine 上的并发问题将如何解决?会有交错吗?遇到瓶颈?我希望速度快、预算低:至少每分钟 600 个。所以我绝对不希望代码本身的同步浪费宝贵的时间。那么,如何最好地同步调用以增加 nextIndex
以便以定期方式平等地调用每个电话号码?同样,这是针对 Google App Engine 的。
最佳答案
您需要使用Task API 。每条消息都是一个新任务,您可以使用循环或随机分配来分配电话号码。任务完成后,App Engine 将自动拉取并执行下一个任务。您可以配置所需的吞吐率(例如每秒 10 个),App Engine 将为您管理所需的容量。
您可以尝试自己实现类似的东西,但这比您想象的要困难得多 - 您必须处理并发、重试、实例关闭、内存限制等。任务 API 会为您完成所有这些工作。
关于java - 如何在 Java App Engine 中实现原子整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29258003/
我是一名优秀的程序员,十分优秀!