向周围所有聪明人致以问候!
我想问一下将Java企业Web应用程序部署到Amazon EC2这样的云是否可行或者是个好主意.更确切地说,我正在寻找一个应用程序的基础架构选项,该应用程序将处理数百个用户,但是CPU和内存密集型会话都很长.我正在考虑专用服务器,虚拟专用服务器(VPS)和EC2.我注意到有一个名为JBoss Cloud的项目,所以人们正致力于实现这样的部署,另一方面它似乎还没有成熟,我不确定云是否已经准备就绪应用程序,与Twitter等典型的基于云的应用程序不同.您会建议将其部署到云端吗?优缺点都有什么?
该应用程序是一个Java EE 5 Web应用程序,其主要功能是使用户能够通过组合可用的部件来组成他们自己的定制产品.它使用无状态和有状态会话bean和JPA将实体持久化到RDBMS,并通过Web服务从公司的库存系统中获取有关Parts的信息.除了外部用户之外,它还被少数内部用户使用,他们通过公司的LDAP进行身份验证.该应用程序应该处理大约300-400个并发用户构建他们的产品,并且应该具有合理的可扩展性和可用性,尽管这些质量在这个阶段仅具有中等重要性.
我提出了一个由防火墙(FW)和负载平衡器组成的架构,支持粘性会话和https(在云端,这将被EC2的Elastic Load Balancing服务和应用服务器上的FW取代,在物理架构中,负载 - 平衡器将是一个硬件),然后两个物理集群应用程序服务器与Web服务器结合(如果一个失败,用户不会丢失他/她的长期构建产品),最后是数据库服务器.数据库服务器需要一个从备份实例,如果失败则可以替换主实例.这应该提供合理的可用性和容错性,并且只要单个RDBMS可以与负载保持一致就可以提供良好的可伸缩性,这应该可以使用很长一段时间,因为大多数操作都是使用有状态bean在内存中完成的,并且只是偶尔存储或从数据库检索,数据量也很低.一个有问题的部分可能是对远程库存系统webservice的依赖,但是在应用程序中对其输出的良好缓存也应该没问题.
不幸的是,对于几百个用户所需的"普通Java EE应用程序",我只是模糊地了解系统资源(内存大小,CPU /内核的数量和速度).基于实际亚马逊产品的粗略且毫无根据的估计是1.7GB和单核,2核"现代CPU",速度大约2.5GHz(高CPU中型实例)应该足够用于两个应用服务器中的任何一个(因为我们可以通过提供更多的负载来处理更高的负载.或者,我会考虑使用大型实例(64b,7.5GB RAM,2GHz,1GHz)
所以我的问题是,这种云部署是否在技术和财务上是可行的,或者专用/ VPS服务器是否是更好的选择,以及是否有类似的实际经验.
非常感谢你!/ Jakub Holy
PS:我在云案例研究中发现了JBoss EAP,它表明可以将真实的Java EE应用程序部署到EC2云,但遗憾的是没有关于拓扑,实例类型或任何内容的详细信息: - (
我正在尝试从另一个对象返回一个double,然后将其存储到一个新的double中,但我在初始化中得到错误不兼容的类型.我在这里错过了什么?
double gradePoints = 0.0;
double other = [aCourse getGradePoints];
gradePoints = gradePoints + other;
Run Code Online (Sandbox Code Playgroud)
这是我的另一个目标
- (double) getGradePoints{
return 12.0;
}
Run Code Online (Sandbox Code Playgroud) 我刚刚重新启动我的firefox网络浏览器,因为它开始出现口吃和放慢速度.由于(我的理解)过多的内存使用,这种情况每隔一天发生一次.我注意到它启动时需要40M,然后,当我注意到减速时,它会升至1G,除非我关闭其他应用程序,否则我的机器无法提供.我试图理解为什么要解决这么难的问题背后的技术原因.
Mozilla有一个关于高内存使用量的页面:
http://support.mozilla.com/en-US/kb/High+memory+usage
但我正在寻找一个更深入和令人满意的解释.不是超级技术,但足以让这个问题更受尊重,请在这里取悦人群.
我已经在思考的一些问题(它们可能很愚蠢,所以放轻松):
应用和语言不可知的答案也非常感谢.
我在Web应用程序中调度作业时遇到问题.如果我们必须在Web应用程序中安排作业,我们可以使用java util Timer/TimerTask或Quartz(还有其他调度机制,但我考虑过Quartz).我正在考虑使用哪一个,当我点击网站http://oreilly.com/pub/a/java/archive/quartz.html?page=1时说使用计时器有一个不好的效果,因为它创建了一个线程在最后一行没有容器控制.其他页面讨论了Quartz及其功能,但我可以读到Quartz还使用线程和/或线程池来安排任务.我的猜测是这些线程也不受容器控制
任何人都可以向我澄清这是否可以安全地在我的Web应用程序中使用Quartz而不创建挂起线程或线程锁定问题?提前致谢
无论我在分配时给它的大小,它只显示固定大小.是否有可能增加它?
码:
activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:
CGRectMake(142.00, 212.00, 80.0, 80.0)];
[[self view] addSubview:activityIndicator];
[activityIndicator sizeToFit];
activityIndicator.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin |
UIViewAutoresizingFlexibleRightMargin |
UIViewAutoresizingFlexibleTopMargin |
UIViewAutoresizingFlexibleBottomMargin);
activityIndicator.hidesWhenStopped = YES;
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
Run Code Online (Sandbox Code Playgroud) 当我在XCode上构建和分析我的项目时,我在以下行获得了"警告":
NSString *contactEmail = (NSString *)ABMultiValueCopyValueAtIndex(emailInfo, 0);
Run Code Online (Sandbox Code Playgroud)
消息是:在线分配的对象上的潜在泄漏...并存储到contactEmail中.
那条线上有错误吗?
UPDATE
我用这行代码得到了相同的'警告':
ABMultiValueRef emailInfo = ABRecordCopyValue(person, kABPersonEmailProperty);
Run Code Online (Sandbox Code Playgroud)
但在这里,我不能这样做:
[emailInfo release];
Run Code Online (Sandbox Code Playgroud)
我正在为iPhone开发.
有可能做这样的事情:
INSERT INTO table(col1, col2) VALUES(something_from_another_table, value);
Run Code Online (Sandbox Code Playgroud)
随着something_from_another_table作为一个SQL命令?就像,有什么我可以做的,这是平等的:
INSERT INTO table(col1, col2) VALUES((SELECT value FROM table2 WHERE id = 3), value);
Run Code Online (Sandbox Code Playgroud) 我可以知道如果我想使用组件连接到ejabberd,我连接到端口5222还是我需要创建新端口?关于如何创建它的任何指南?
如何隐藏ListView中的项目或至少将其高度设置为零?
我已经尝试将View的可见性设置为GONE,但它仍然保持项目的空间(高度).
我正在寻找一个非常明显的东西(在其他语言中!!)它让我发疯!
我想知道如何将不确定的ProgressBar颜色从基础白/灰色变为黑色?当我更改indeterminateDrawable时,我得到的是静态图像而不是移动的动画progressBar.有没有办法简单地在xml中做到这一点?
谢谢 !
iphone ×3
android ×2
java ×2
memory-leaks ×2
objective-c ×2
amazon-ec2 ×1
c++ ×1
cloud ×1
components ×1
double ×1
ejabberd ×1
firefox ×1
insert ×1
ios ×1
java-ee ×1
jboss ×1
listview ×1
listviewitem ×1
mysql ×1
sql ×1
swift ×1
visibility ×1
xmpp ×1