b***i 发帖数: 3043 | 1 本人做网站是用java在google app engine上做的,其技术本质和MS的Azure应该没有什
么不同,和Amazon AWS有显著不同,就是不需要考虑vm之下所有问题,包括Linux的更
新问题,apache等的配置,也不需要考虑数据库,所有数据均通过DataStore的java
api来存贮,访问,也可以通过MemCache来快速访问。MemCache是可能失效的,是分布
式的。
为了网站速度,我想能不能做servlet内部的HashMap作Cache。主要我这个网站是进行
文件发布的,支持版本控制。那么,一个文件除非是测试版,否则folder/name/rev这
个作为key的文件object的内容不会改变。那么,如果是测试版,我一定是通过
DataStore来读取文件,因为文件随时可以通过后台更新。如果版本是发行版,那么我
可以通过servlet内部的HashMap来查找文件的2进制内容,如果不存在,则去DataStore
查找,然后放入servlet内部的HashMap来。我这么做会不会快一些?版本从A开始,如
果更新则为B, 之后为C等。DataStore同时还负责查找该文件的版本号,而版本号必须
通过MemCache/Datastore进行,不能通过HashMap,因为这个变量是变的。 |
g*****g 发帖数: 34805 | 2 通常的做法是Cache,而不是用HashMap。HashMap是strong reference,而做cache,你
更希望soft reference。另一个好处就是现有的一些Cache架构可以让你配置内存和二
级缓存的使用,以及eviction policy。一个很流行的类库是ehCache。貌似现在也支持
GAE了。
DataStore
【在 b***i 的大作中提到】 : 本人做网站是用java在google app engine上做的,其技术本质和MS的Azure应该没有什 : 么不同,和Amazon AWS有显著不同,就是不需要考虑vm之下所有问题,包括Linux的更 : 新问题,apache等的配置,也不需要考虑数据库,所有数据均通过DataStore的java : api来存贮,访问,也可以通过MemCache来快速访问。MemCache是可能失效的,是分布 : 式的。 : 为了网站速度,我想能不能做servlet内部的HashMap作Cache。主要我这个网站是进行 : 文件发布的,支持版本控制。那么,一个文件除非是测试版,否则folder/name/rev这 : 个作为key的文件object的内容不会改变。那么,如果是测试版,我一定是通过 : DataStore来读取文件,因为文件随时可以通过后台更新。如果版本是发行版,那么我 : 可以通过servlet内部的HashMap来查找文件的2进制内容,如果不存在,则去DataStore
|
b***i 发帖数: 3043 | 3 学了,原来还有Cache这个interface。这个ehCache是分布式的还是就是servlet内部使
用的?如果是分布式的,跟GAE自己的有什么好处?
如果是servlet内部的,那到比HashMap好,内存不会不够了。
【在 g*****g 的大作中提到】 : 通常的做法是Cache,而不是用HashMap。HashMap是strong reference,而做cache,你 : 更希望soft reference。另一个好处就是现有的一些Cache架构可以让你配置内存和二 : 级缓存的使用,以及eviction policy。一个很流行的类库是ehCache。貌似现在也支持 : GAE了。 : : DataStore
|
c*********e 发帖数: 16335 | 4 多少用户的网站?
DataStore
【在 b***i 的大作中提到】 : 本人做网站是用java在google app engine上做的,其技术本质和MS的Azure应该没有什 : 么不同,和Amazon AWS有显著不同,就是不需要考虑vm之下所有问题,包括Linux的更 : 新问题,apache等的配置,也不需要考虑数据库,所有数据均通过DataStore的java : api来存贮,访问,也可以通过MemCache来快速访问。MemCache是可能失效的,是分布 : 式的。 : 为了网站速度,我想能不能做servlet内部的HashMap作Cache。主要我这个网站是进行 : 文件发布的,支持版本控制。那么,一个文件除非是测试版,否则folder/name/rev这 : 个作为key的文件object的内容不会改变。那么,如果是测试版,我一定是通过 : DataStore来读取文件,因为文件随时可以通过后台更新。如果版本是发行版,那么我 : 可以通过servlet内部的HashMap来查找文件的2进制内容,如果不存在,则去DataStore
|
b***i 发帖数: 3043 | 5 the design should be scalable, only 100MB data to be distributed. Every
hour could be 10000 users, each spends 10 minutes, 10MB per user hour use,
totally 100 http access. I hope one GAE instance can handle 10000 users /
hour
a user might visit one time per day to one time per week.. Gae can scale
when more users use the website. There is really nothing to prevent scale.
【在 c*********e 的大作中提到】 : 多少用户的网站? : : DataStore
|
g*****g 发帖数: 34805 | 6 ehCache是个local cache,跟memcached比,是java实现的,可以在JVM内跑。可以定义
eviction policy,可以定义大小从而控制内存使用。ehCache也可以做成分布式的,但
GAE估计不支持。
【在 b***i 的大作中提到】 : 学了,原来还有Cache这个interface。这个ehCache是分布式的还是就是servlet内部使 : 用的?如果是分布式的,跟GAE自己的有什么好处? : 如果是servlet内部的,那到比HashMap好,内存不会不够了。
|
b***i 发帖数: 3043 | 7 很好,我到时候比较一下效率。
【在 g*****g 的大作中提到】 : ehCache是个local cache,跟memcached比,是java实现的,可以在JVM内跑。可以定义 : eviction policy,可以定义大小从而控制内存使用。ehCache也可以做成分布式的,但 : GAE估计不支持。
|