大规模图片存取的高性能解决方案

最近开始做一个j2ee网站,主要是大用户量的图片访问和上传,用spring和ibatis开源框架搭建,http服务器用apache服务器,应用服务器用jboss,数据库采用oracle10g.
其中碰到了几个技术难点,希望大家能给于意见和建议:

1,图片这种资源是存储在文件系统中好,还是存储在oracle数据库中好?以性能优先考虑,但不考虑集群。

2,提高图片存储效率有什么好的方案?

3,还有采用缓存策略,哪些数据该被缓存?


谢谢

>>最近开始做一个j2ee网站,主要是大用户量的图片访问和上传,用Spring和ibatis开源框架搭建,http服务器用apache服务器,应用服务器用jboss,数据库采用oracle10g.
>>其中碰到了几个技术难点,希望大家能给于意见和建议:

>>1,图片这种资源是存储在文件系统中好,还是存储在oracle数据库中好?以性能优先考虑,但不考虑集群。
I believe that never store no-relation data(including nearly all binary data) in relation database. So, supply a path is best.


>>2,提高图片存储效率有什么好的方案?
it's about the I/O condition. I do not know anything about your solution of storage. If it is possible, use NFS is a good choice.

>>3,还有采用缓存策略,哪些数据该被缓存?
What do you want to cache? Data, binary data? or object? or database cache?

If you just want to cache the pictures, I suggest you to try squid.


Apache with jboss is a good idea but maybe you should try NIO mode. If you just need to supply service for picture, ngnix is the second choice against apache.

ps: if you just need spring, maybe you just need a servlet container. jboss web is enough for you.

谢谢saharabear.

实际上,我们这个项目是公司的一种尝试,因为以前从来没做过这一块,所以这次专门由我们项目组来做一次探索,最主要的目标就是探求大规模图片存取时如何取得比较好的性能,也就是以性能优先。

最后您说的cache些什么?我意思是在这种以图片存取为主要功能的网站中,能否用cache取得些在性能上的突破,至于cache什么,您说直接cache图片是否能达到这种目的?

谢谢

>>最后您说的cache些什么?我意思是在这种以图片存取为主要功能的网站中,能否用cache取得些在性能上的突破,至于cache什么,您说直接cache图片是否能达到这种目的?

you must find the bottleneck. I believe you will met two side: one is I/O for picture service. the next is the database.

so, cache most pictures in squid, and use data cache to resolve the DB bottleneck.

as I said, ngnix is the alternative for static files against Apache.


squid(Here, cache your pictures)
|
|
Ngnix/Apache
|
|
JBoss Web/Container(Here, cache your data and object)
|
|
DB
|
|
NFS Storage(you should try ZFS on solaris 10, even on x86 platform)

Thank you! I will try:)