使用 EhCache 关于临时目录的一个注意事项

Posted on

使用 EhCache 关于临时目录的一个注意事项 - 讨论区 - 开源中国社区

当前访客身份:游客 [ 登录 | 加入开源中国 ]

当前位置:讨论区 » 技术分享 » EhCache

软件 代码 讨论区 新闻 博客 红薯

使用 EhCache 关于临时目录的一个注意事项

红薯 发表于 8-20 09:24 3年前, 0回/524阅 讨论区 » 技术分享

【杭州】开源中国-源创会第十三期开始报名 我要报名» 一般 ehcache 的配置中默认的 diskStore 的路径设置的是 java.io.tmpdir ,等于是当前系统的临时目录。

但是在 Tomcat 和 Resin 这两个应用服务器上,临时目录是有区别的,在 Tomcat 上运行的应用通过 java.io.tmpdir 系统变量获取到的路径是 Tomcat 目录下的 temp 子目录,而 Resin 返回的是系统的临时目录,linux下可能就是 /tmp

在 Linux 下如果我们使用的是 root 账号来启动 Tomcat 和 Resin 的话,那这个问题就不存在。但是我们非常不建议用 root 来启动 Tomcat 和 Resin,这时候我们会单独的创建一个非特权账号,假设该账号名为 www 来运行应用服务器。

我们需要将 Tomcat 和 Resin 所在的目录授权给 www 账号,这样应用服务器的日志文件才能正常的写入,但是由于 Resin 的临时目录是对应系统的 /tmp 目录,因此如果应用中使用了 ehcache 并设置了存储路径为 java.io.tmpdir ,你就会发现启动的时候报错,提示没有在 /tmp 目录下创建文件的权限,这是因为 www 账号没有写 tmp 目录的权限。

解决的办法就是修改 ehcache 的 diskStore 配置的值为 user.home ,将存储文件路径指定到用户的主目录下即可。

而 Tomcat 就没有这个问题,因为它的临时目录在 {tomcat}/temp ,而整个 {tomcat} 都已经授权给 www 账号了。

标签: EhCache 缓存 补充话题说明»

分享到 **

收藏 **

3 **

举报 **

0 | 0 **

按默认排序 | 显示最新评论 | 回页面顶部 共有0个评论 发表评论»

非会员用户) ")")") 回评论顶部 | 回页面顶部 有什么技术问题吗? 我要提问

全部(4786)...红薯的其他问题

© 开源中国社区(OsChina.NET) | 关于我们 | 广告联系 | @新浪微博 | 开源中国手机版 | 粤ICP备12009483号-3

企业网络信息安全保护措施的探讨与实践

Posted on

企业网络信息安全保护措施的探讨与实践

企业网络信息安全保护措施的探讨与实践

原文链接:http://www.securitycn.net/html/research/service/2337.html

随着企业网络的普及和网络开放性,共享性,互连程度的扩大,网络的信息安全问题也越来越引起人们的重视。一个安全的计算机网络应该具有可靠性、可用性、完整性、保密性和真实性等特点。计算机网络不仅要保护计算机网络设备安全和计算机网络系统安全,还要保护数据安全。

网络安全风险分析



计算机系统本身的脆弱性和通信设施的脆弱性共同构成了计算机网络的潜在威胁。信息网络化使信息公开化、信息利用自由化,其结果是信息资源的共享和互动,任何人都可以在网上发布信息和获取信息。



这样,网络信息安全问题就成为危害网络发展的核心问题,与外界的因特网连接使信息受侵害的问题尤其严重。目前企业网络信息的不安全因素来自病毒、黑客、木马、垃圾邮件等几个方面。



计算机病毒是一种危害计算机系统和网络安全的破坏性程序。它可以直接破坏计算机数据信息,也可以大量占用磁盘空间、抢占系统资源从而干扰了系统的正常运行。



随着Internet技术的发展、企业网络环境的日趋成熟和企业网络应用的增多,病毒的感染、传播的能力和途径也由原来的单一、简单变得复杂、隐蔽,尤其是Internet环境和企业网络环境为病毒传播、生存提供了环境。



黑客攻击已经成为近年来经常发生的事情,网络中服务器被攻击的事件层出不穷。黑客利用计算机系统、网络协议及数据库等方面的漏洞和缺陷,采用破解口令(password cracking)、天窗(trapdoor)、后门(backdoor)、特洛伊木马(Trojan horse)等手段侵入计算机系统,进行信息破坏或占用系统资源,使得用户无法使用自己的机器。



一般大型企业的网络都拥有Internet连接,同时对外提供的WWW和EMAIL等服务。因此企业内部网络通过Internet连接外部进行大量的信息交换,而其中大约80%信息是电子邮件,邮件中又有一半以上的邮件是垃圾邮件,这一比例还在逐年上升。



企业局域网内部的信息安全更是不容忽视的。网络内部各节点之间通过网络共享网络资源,就可能因无意中把重要的涉密信息或个人隐私信息存放在共享目录下,因此造成信息泄漏;甚至存在内部人员编写程序通过网络进行传播,或者利用黑客程序入侵他人主机的现象。因此,网络安全不仅要防范外部网,同时更防范内部网。



网络安全措施



由此可见,有众多的网络安全风险需要考虑,因此,企业必须采取统一的安全策略来保证网络的安全性。一个完整的安全技术和产品包括:身份认证、访问控制、流量监测、网络加密技术、防火墙、入侵检测、防病毒、漏洞扫描等;而造成安全事件的原因则包括技术因素、管理因素以及安全架构设计上的疏漏等问题。



1.外部入侵的防范措施



(1)网络加密(Ipsec)



IP层是TCP/IP网络中最关键的一层,IP作为网络层协议,其安全机制可对其上层的各种应用服务提供透明的覆盖式安全保护。因此,IP安全是整个TCP/IP安全的基础,是网络安全的核心。IPSec是目前唯一一种能为任何形式的Internet通信提供安全保障的协议。IPSec允许提供逐个数据流或者逐个连接的安全,所以能实现非常细致的安全控制。对于用户来说,便可以对于不同的需要定义不同级别地安全保护(即不同保护强度的IPSec通道)。IPSec为网络数据传输提供了数据机密性、数据完整性、数据来源认证、抗重播等安全服务,使得数据在通过公共网络传输时,不用担心被监视、篡改和伪造。



IPSec是通过使用各种加密算法、验证算法、封装协议和一些特殊的安全保护机制来实现这些目的,而这些算法及其参数是保存在进行IPSec通信两端的SA(Security Association,安全联盟),当两端的SA中的设置匹配时,两端就可以进行IPSec通信了。



在虚拟专用网(VPN)中主要采用了IPSec技术。



(2)防火墙



防火墙是一种网络安全保障手段,是网络通信时执行的一种访问控制尺度,其主要目标就是通过控制进、出一个网络的权限,在内部和外部两个网络之间建立一个安全控制点,对进、出内部网络的服务和访问进行控制和审计,防止外部网络用户以非法手段通过外部网络进入内部网络,访问、干扰和破坏内部网络资源。在逻辑上,防火墙是一个分离器,一个限制器,也是一个分析器,有效地监视了内部网络和Internet之间的任何活动,保证了内部网络的安全。



防火墙有软、硬件之分,实现防火墙功能的软件,称为软件防火墙。软件防火墙运行于特定的计算机上,它需要计算机操作系统的支持。基于专用的硬件平台的防火墙系统,称为硬件防火墙。它们也是基于PC架构,运行一些经过裁剪和简化的操作系统,承载防火墙软件。



(3)入侵检测



部署入侵检测产品,并与防火墙联动,以监视局域网外部绕过或透过防火墙的攻击,并及时触发联动的防火墙及时关闭该连接;同时监视主服务器网段的异常行为,以防止来自局域网内部的攻击或无意的误用及滥用行为。入侵检测是防火墙的合理补充,帮助系统对付网络攻击,扩展了系统管理员的安全管理能力。



2.内部非法活动的防范措施



(1)身份认证



网络安全身份认证是指登录计算机网络时系统对用户身份的确认技术。是网络安全的第一道防线,也是最重要的一道防线。用户在访问安全系统之前,首先经过身份认证系统识别身份,然后访问监控器根据用户的身份和授权数据库决定用户是否能够访问某个资源。授权数据库由安全管理员按照需要进行配置。



审计系统根据审计设置记录用户的请求和行为,同时入侵检测系统实时或非实时地检测是否有入侵行为。访问控制和审计系统都要依赖于身份认证系统提供的用户的身份。身份认证在安全系统中的地位极其重要,是最基本的安全服务,其它的安全服务都要依赖于它。一旦身份认证系统被攻破,那么系统的所有安全措施将形同虚设。黑客攻击的目标往往就是身份认证系统,因此身份认证实在是网络安全的关键。



(2)访问控制



访问控制决定了用户可以访问的网络范围、使用的协议、端口;能访问系统的何种资源以及如何使用这些资源。



在路由器上可以建立访问控制列表,它是应用在路由器接口的指令列表,这些指令列表用来告诉路由器哪些数据包可以接收、哪些数据包需要拒绝。至于数据包是被接收还是被拒绝,可以由类似于源地址、目的地址、端口号、协议等特定指示条件来决定。



建立访问控制列表后,可以限制网络流量,提高网络性能,对通信流量起到控制的手段,这也是对网络访问的基本安全手段。由于访问控制列表ACL(Access Control List)的表项可以灵活地增加,所以可以把ACL当作一种网络控制的有力工具,用来过滤流入和流出路由器接口的数据包。



在应用系统中,访问控制的手段包括用户识别代码、口令、登录控制、资源授权(例如用户配置文件、资源配置文件和控制列表)、授权核查、日志和审计。适当的访问控制能够阻止未经允许的用户有意或无意地获取数据,根据授予的权限限制其对资源的利用范围和程度。



(3)流量监测



目前有很多因素造成网络的流量异常,如拒绝服务攻击(DoS)、网络蠕虫病毒的传播、一些网络扫描工具产生的大量TCP连接请求等,很容易使网络设备瘫痪。这些网络攻击,都是利用系统服务的漏洞或利用网络资源的有限性,在短时间内发动大规模网络攻击,消耗特定资源,造成网络或计算机系统瘫痪。因此监控网络的异常流量非常重要。



流量监测技术主要有基于SNMP的流量监测和基于Netflow的流量监测。基于SNMP的流量信息采集,是通过提取网络设备Agent提供的MIB(管理对象信息库)中收集一些具体设备及流量信息有关的变量。



基于SNMP收集的网络流量信息包括:输入字节数、输入非广播包数、输入广播包数、输入包丢弃数、输入包错误数、输入未知协议包数、输出字节数、输出非广播包数、输出广播包数、输出包丢弃数、输出包错误数、输出队长等。基于Netflow流量信息采集是基于网络设备提供的Netflow机制实现的网络流量信息采集,在此基础上实现的流量信息采集效率和效果均能够满足网络流量异常监测的需求。



基于以上的流量检测技术,目前有很多流量监控管理软件,此类软件是判断异常流量流向的有效工具,通过流量大小变化的监控,可以帮助网管人员发现异常流量,特别是大流量异常流量的流向,从而进一步查找异常流量的源、目的地址。



处理异常流量最直接的解决办法是切断异常流量源设备的物理连接,也可以采用访问控制列表进行包过滤或在路由器上进行流量限定的方法控制异常流量。



(4)漏洞扫描



对一个网络系统而言,存在不安全隐患,将是黑客攻击得手的关键因素。就目前的网络系统来说,在硬件、软件、协议的具体实现或系统安全策略方面都可能存在一定的安全缺陷即安全漏洞。及时检测出网络中每个系统的安全漏洞是至关重要的。



安全扫描是增强系统安全性的重要措施之一,它能够有效地预先评估和分析系统中的安全问题。漏洞扫描系统是用来自动检测远程或本地主机安全漏洞的程序,按功能可分为:操作系统漏洞扫描、网络漏洞扫描和数据库漏洞扫描。网络漏洞扫描系统,是指通过网络远程检测目标网络和主机系统漏洞的程序,它对网络系统和设备进行安全漏洞检测和分析,从而发现可能被入侵者非法利用的漏洞。



定期对网络系统进行漏洞扫描,可以主动发现安全问题并在第一时间完成有效防护,让攻击者无隙可钻。



(5)防病毒



企业防病毒系统应该具有系统性与主动性的特点,能够实现全方位多级防护。 考虑到病毒在网络中存储、传播、感染的方式各异且途径多种多样,相应地在构建网络防病毒系统时,应利用全方位的企业防毒产品,实施集中控制、以防为主、防杀结合的策略。具体而言,就是针对网络中所有可能的病毒攻击设置对应的防毒软件,通过全方位、多层次的防毒系统配置,使网络没有薄弱环节成为病毒入侵的缺口。



实例分析



大庆石化局域网是企业网络,覆盖大庆石化机关、各生产厂和其他的二级单位,网络上运行着各种信息管理系统,保存着大量的重要数据。为了保证网络的安全,针对计算机网络本身可能存在的安全问题,在网络安全管理上我们采取了以下技术措施:



1.利用PPPOE拨号上网的方式登录局域网



我们对网络用户实施了身份认证技术管理。用户采用 PPPOE拨号方式上局域网,即用户在网络物理线路连通的情况下,需要通过拨号获得IP地址才能上局域网。我们选用华为ISN8850智能IP业务交换机作为宽带接入服务器(BAS),RADIUS服务器作用户认证系统,每个用户都以实名注册,这样我们就可以管理用户的网上行为,实现了对以太网接入用户的管理。



2.设置访问控制列表



在我们的网络中有几十台路由交换机,在交换机上我们配置了访问控制列表,根据信息流的源和目的 IP 地址或网段,使用允许或拒绝列表,更准确地控制流量方向,并确保 IP 网络免遭网络侵入。



3.划分虚拟子网



在局域网中,我们把不同的单位划分成不同的虚拟子网(VLAN)。对于网络安全要求特别高的应用,如医疗保险和财务等,划分独立的虚拟子网,并使其与局域网隔离,限制其他VLAN成员的访问,确保了信息的保密安全。



4.在网络出口设置防火墙



在局域网的出口,我们设置了防火墙设备,并对防火墙制定安全策略,对一些不安全的端口和协议进行限制,使所有的服务器、工作站及网络设备都在防火墙的保护之下,同时配置一台日志服务器记录、保存防火墙日志,详细记录了进、出网络的活动。



5.部署Symantec防病毒系统



我们在大庆石化局域网内部署了Symantec防病毒系统。Symantec系统具有跨平台的技术及强大功能,系统中心是中央管理控制台。通过该管理控制台集中管理运行Symantec AntiVirus 企业版的服务器和客户端;可以启动和调度扫描,以及设置实时防护,从而建立并实施病毒防护策略,管理病毒定义文件的更新,控制活动病毒,管理计算机组的病毒防护、查看扫描、病毒检测和事件历史记录等功能。



6.利用高效的网络管理软件管理全网



大庆石化局域网的网络环境比较复杂,含有多种cisco交换设备、华为交换设备、路由设备以及其他一些接入设备,为了能够有效地网络,我们采用了BT_NM网络资源管理系统。



该系统基于SNMP管理协议,可以实现跨厂商、跨平台的管理。系统采用物理拓扑的方法来自动生成网络的拓扑图,能够准确和直观地反映网络的实际连接情况,包括设备间的冗余连接、备份连接、均衡负载连接等,对拓扑结构进行层次化管理。



通过网络软件的IP地址定位功能可以定位IP地址所在交换机的端口,有效解决了IP地址盗用、查找病毒主机网络黑客等问题。



通过网络软件还可实现对网络故障的监视、流量检测和管理,使网管人员能够对故障预警,以便及时采取措施,保证了整个网络能够坚持长时间的安全无故障运行。



7.建立了VPN系统



虚拟专用网是对企业内部网的扩展。它可以帮助远程用户、公司分支机构、商业伙伴及供应商同公司的内部网建立可信的安全连接,并保证数据的安全传输。虚拟专用网可用于实现企业网站之间安全通信的虚拟专用线路,用于经济有效地连接到商业伙伴和用户的安全外联网虚拟专用网。



为了满足企业用户远程办公需求,同时为了满足网络安全的要求,我们在石化局域网中建立了VPN系统。VPN的核心设备为Cisco的3825路由器,远端子公司采用Cisco的2621路由器,动态接入设备采用Cisco的1700路由器。



8.启动应用服务器的审计功能



在局域网的各应用中我们都启用了审计功能,对用户的操作进行审核和记录,保证了系统的安全。

大庆石化局域网结构简图

网络信息系统安全问题的解决依赖于技术和管理两方面,在采取技术措施保障网络安全的同时,我们还建立健全网络信息系统安全管理体系,将各种安全技术与运行管理机制、人员思想教育与技术培训、安全规章制度建设相结合。



通过以上管理机制和技术措施的实施,提高了网络安全性,降低了网络安全事故的风险,保证了网络长期平稳的运行。

本篇文章来源于 中国安全网-安全您的网络 原文链接:http://www.securitycn.net/html/research/service/2337.html

基于EHCache实现缓存去重

Posted on

基于EHCache实现缓存去重 - passover【毕成功的博客】 - 51CTO技术博客

分享到

百度分享

51CTO首页51CTO博客我的博客 搜索 每日博报

社区:论坛博客下载读书更多

登录注册

[

passover【毕成功的博客】

](http://passover.blog.51cto.com/)

http://passover.blog.51cto.com 【复制】 【订阅】

原创:94翻译:2转载:21

博 客|图库|写博文|帮 助

passover 的BLOG

头像升级了?来看看>> 写留言邀请进圈子发消息 加友情链接进家园 加好友

博客统计信息

51CTO推荐博客 用户名:passover 文章数:117 评论数:174 访问量:162194 无忧币:1682 博客积分:2780 博客等级:7 注册日期:2010-11-16 距离博客No.1争夺赛结束还有 10 天

热门文章

搜索BLOG文章

我的技术圈(2)

更多>>

最近访客

yyxxxn

vnet111

vbbb625

naxxmm

mumab..

wangj..

hjdon..

睡着了

李惟忠

李大玉

51cto..

glories

最新评论

51CTO推荐博文

更多>>

2012年10月MVP名单公布啦!周刊:从需求看《IT人员应聘建议》【有奖门诊】探索式测试的奥秘

博主的更多文章>>

基于EHCache实现缓存去重 2011-01-27 16:15:10 标签:缓存 职场 休闲 ehcache

 由于近期的工作主要集中在数据处理上,而性能问题时而暴露出来,我对需要处理的数据进行了一下简单的分析,发现存在大量的重复数据,这自然让我想到了去建立一个二级缓存把曾经处理过的数据缓存起来,避免重复处理。我们业务上其实就是对最近处理过的数据重复出现几率比较高,所以有一个几百兆的内存空间用LRU的策略进行去重应该就足够了。

其实可以选择的方案有很多,初步筛选了一下,我决定在对Java支持度比较好且应用广泛的OSCache和EHCache中选一个。上了官网一查,发现OSCache在几年前就停止更新了,而EHCache则一直有公司在维护,所以自然选定了后者。官方文档的地址是[http://www.ehcache.org/documentation/index.html](http://www.ehcache.org/documentation/index.html)。

先让同事研究了一下,弄的是1.7.0的版本,这个版本比较好的是对其他包的依赖很少,很快就把自己的demo建立起来了。然后上官网下载了最新的版本ehcache-core-2.3.1-distribution,里面其实就多了两个slf4j的包,原来的代码一行没动就可以运行起来了。这里新版本加入的内容比较多,jar包就是1.7.0的3倍大,看了下官方文档的说明,主要加入的就是对分布式的支持,当然还有很多新特性。新特性以后慢慢研究吧,我目前也用不到什么高级功能,既然新版本使用起来也很方便,那就用这个好了。

这里简单解释一下,我们原先想试一下他提供的FIFO和LRU的策略,结果刚开始测试输出的结果和预期居然不一致,官方文档上也没看到相应的解释。经过反复测试,感觉他不是严格按照这个策略来,可能是算法有些问题吧。

另外补充一下参数设置的经验。
  1. 对于存储对象个数的设置:由于配置文件中只能指定maxElementsInMemory,这就会有可能存入的对象太多而超出VM的heap大小,当然你可以通过jvm参数增大heap大小,但这总还是有可能溢出。这里可以把maxElementsInMemory值设置到一个比较安全的大小,自己预先测试一下最好。如果内存仍然存不下你需要存的对象个数,那么可以开启overflowToDisk来增加可以存储的Element个数。这里要注意一下,EHCache不会自动帮助你去把内存对象写入到磁盘,当超过maxElementsInMemory程序会自动把更多的部分开始往硬盘写,但是内存的对象其实并没有清出去,这时需要手动使用Cache.flush()方法来把内存对象清出去。 对于是否需要用磁盘扩充缓存,这个还是根据自己应用判断。
  2. 重建上一次运行的缓存:这个需求肯定比较普遍,我们当然不希望一旦程序退出,整个缓存就要重建了。开启diskPersistent功能,只要使用的是CacheManager单例模式,下一次启动的时候就会调用上一次运行的缓存。比较麻烦的是写入磁盘的时间还是要自己调用 Cache.flush()方法。如果仅仅考虑到程序重启的话,我建议这里把diskStore写入到一个ramfs,这样性能就更高了,但重启电脑的话就不得不重建缓存了。
  3. 索引的建立:如果你测试的maxElementsOnDisk量比较大的话,我本地设置成100000,那么你会在临时文件目录下看到有index文件,这个文件显然是对磁盘上的文件建立索引,加快查询速度。所以这个索引是否建立是EHCache自动帮你做的,你不用操心了。
  4. 写入缓存的速度:在本地不断调整参数,惊讶的发现有时写入缓存的速度奇慢。因为开启了 diskPersistent功能,程序运行时经常会卡在backOffIfDiskSpoolFull方法上,作用是If the disk store spool is full wait a short time to give it a chance to catch up。这个参数对应的是diskSpoolBufferSizeMB,默认是30MB,如果存储的对象比较多,强烈建议调大,或者直接把 diskPersistent关掉。
  5. 缓存内容写入磁盘的速度:如果你把maxElementsOnDisk参数配置的远小于maxElementsInMemory值的话,你会发现速度又变得很慢,这是因为程序一直要去找到底哪些内容应该写入磁盘。建议这 maxElementsOnDisk值的配置应该不小于 maxElementsInMemory,其实正常用应该也会这么配置,只是我测试无聊试了下出问题了。
  6. 内存Element数量不能控制:一旦开启了 diskPersistent,惊讶的发现居然设置的 maxElementsInMemory无效了,内存的 Element数量一直在增长。反复测试,问题稳定重现,又找不到解释,无奈之下给官方提了个bug,等答复吧,汗...
 这里还是给出测试代码,主要用到的就是一个ehcache.xml的配置文件,定义了Cache的具体策略。程序调用的时候非常方便,就是典型key/value的方式。
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <defaultCache
  3. maxElementsInMemory="10000"
  4. eternal="false"
  5. timeToIdleSeconds="120"
  6. timeToLiveSeconds="120"
  7. overflowToDisk="true"
  8. diskPersistent="false"
  9. diskExpiryThreadIntervalSeconds="120"
  10. memoryStoreEvictionPolicy="LRU"
  11. />
  12. <cache name="sample"
  13. maxElementsInMemory="5"
  14. maxElementsOnDisk = "5"
  15. eternal="false"
  16. timeToIdleSeconds="1440"
  17. diskPersistent="false"
  18. timeToLiveSeconds="2880"
  19. overflowToDisk="false"
  20. memoryStoreEvictionPolicy="FIFO"
  21. statistics="true"
  22. />
  23. 以下就是测试代码:

  24. package ehcache;

  25. import org.apache.log4j.Logger;

  26. import net.sf.ehcache.Cache;
  27. import net.sf.ehcache.CacheManager;
  28. import net.sf.ehcache.Element;

  29. public class EhcacheTest {

  30. private static final Logger logger = Logger.getLogger(EhcacheTest.class);

  31. private static Cache sampleCache = null;

  32. public static void main(String[] args) {
  33. init();
  34. test();
  35. }

  36. private static void test() {
  37. logger.info(sampleCache.getMemoryStoreEvictionPolicy());
  38. for(int i=0; i<10; i++){
  39. //写入缓存
  40. sampleCache.put(new Element(i, "v" + i));
  41. //打印当前缓存的所有值
  42. logger.info(sampleCache.getKeys());
  43. //读取缓存
  44. Element e = sampleCache.get(i);
  45. logger.info(e.getValue());
  46. }
  47. //打印命中统计
  48. logger.info(sampleCache.getStatistics());
  49. }

  50. private static void init() {
  51. CacheManager manager = CacheManager.create();
  52. // manager.addCache("sample"); //已经在配置文件定义过了
  53. sampleCache = manager.getCache("sample");
  54. }

  55. }

分享至 ** 更多 0 一键收藏,随时查看,分享好友!

姜周、倔强的土豆 2人 了这篇文章

类别:Open Source技术圈(0)┆阅读(3391)┆评论(2) ┆ 推送到技术圈返回首页 上一篇 利用Jsoup解析HTML 下一篇 初试Redis的感受

相关文章

文章评论

[1楼] 姜周 回复

2011-01-28 14:44:20 支持一个!

[2楼] 倔强的土豆 回复

2012-08-24 17:55:22 不错,顶了。

发表评论

2013年1月MVP申请公告[截止10月15日] 昵 称: 登录 快速注册 验证码:

点击图片可刷新验证码请点击后输入验证码博客过2级,无需填写验证码 内 容:

同时赞一个 返回顶部

Copyright By 51CTO.COM 版权所有

用ehcache做缓存,如果断电后要自动加载之前缓存,要怎么配置,一直不行啊?

Posted on

用ehcache做缓存,如果断电后要自动加载之前缓存,要怎么配置,一直不行啊? - 讨论区 - 开源中国社区

当前访客身份:游客 [ 登录 | 加入开源中国 ]

当前位置:讨论区 » 技术问答 » EhCache

软件 代码 讨论区 新闻 博客 zwt

用ehcache做缓存,如果断电后要自动加载之前缓存,要怎么配置,一直不行啊?

zwt 发表于 5-3 13:09 5个月前, 4回/600阅, 最后回答: 1个月前 讨论区 » 技术问答

【杭州】开源中国-源创会第十三期开始报名 我要报名» 在使用ehcache 如果碰到意外情况,断电或服务器挂掉,我希望重启后 ehcache 能自动加载之前的缓存,但一直试都不行,不知道要怎么配置;

目前在重启服务器的时候会提示:

警告: The index for data file stake.data is out of date, probably due to an unclean shutdown. Deleting index file stake.index

目前配置: view sourceprint?

01

<

diskStore

path

=

"java.io.tmpdir"

/>

02

03

<

defaultCache

04

maxElementsInMemory

=

"10000" 05

eternal

=

"false"

06

timeToIdleSeconds

=

"43200" 07

timeToLiveSeconds

=

"43200"

08

overflowToDisk

=

"true" 09

diskPersistent

=

"true"

10

diskExpiryThreadIntervalSeconds

=

"120" 11

memoryStoreEvictionPolicy

=

"LFU"

12

/>

标签: EhCache Java 我想问同样的问题1个人想要问同样的问题 补充话题说明»

分享到 **

收藏 **

6 **

举报 **

0 | 0 **

按评价排序 | 显示最新答案 | 回页面顶部 共有4个答案 我要回答»

  • zwt

zwt 回答于 2012-05-03 13:32

举报 已经解决,在ehcache初始化之前

System.setProperty("net.sf.ehcache.enableShutdownHook","true");

请看 http://stackoverflow.com/questions/2373431/ehcache-disk-store-unclean-shutdown

有帮助(0) | 没帮助(0) | 评论(0) | 引用此答案

  • samsamsam

samsamsam 回答于 2012-05-14 16:29

举报 我想请教,我按照

System.setProperty("net.sf.ehcache.enableShutdownHook","true");

这个方法试过还是The index for data file is out of date。。。。。 --- 共有 1 条评论 ---

  • zwt 你要在加载ehcache之前设置环境变量,设置成功后看会输出log (4个月前 by zwt) 回复

有帮助(0) | 没帮助(0) | 评论(1) | 引用此答案

  • fbfan520

fbfan520 回答于 2012-09-05 14:00

举报 System.setProperty("net.sf.ehcache.enableShutdownHook","true");请问这句加在哪里 --- 共有 1 条评论 ---

  • zwt 在ehcache初始化之前 (1个月前 by zwt) 回复

有帮助(0) | 没帮助(0) | 评论(1) | 引用此答案

  • fbfan520

fbfan520 回答于 2012-09-07 13:35

举报 在ehcache初始化之前是什么意思? public static CacheManager manager = CacheManager.create("D:\XML\ehcache.xml"); public static Cache diskOnlyEternalCache = null; public static Cache diskEternalCache = null; public static Cache disk7DayCache = null; public static Cache diskSyn7DayCache = null; public static Cache disk1DayCache = null;

private CacheManageService() {

}

public synchronized static Cache getDiskOnlyEternalCache() {

    if (diskOnlyEternalCache == null) {
        diskOnlyEternalCache = manager.getCache("diskOnlyEternalCache");
    }
    return diskOnlyEternalCache;
}

像这个程序我加在哪里? 有帮助(0) | 没帮助(0) | 评论(0) | 引用此答案

非会员用户) ")")") 回答案顶部 | 回页面顶部 有什么技术问题吗? 我要提问

全部(3)...zwt的其他问题

© 开源中国社区(OsChina.NET) | 关于我们 | 广告联系 | @新浪微博 | 开源中国手机版 | 粤ICP备12009483号-3

是使用分布式缓存Ehcache或者NoSQL数据库呢?

Posted on

是使用分布式缓存Ehcache或者NoSQL数据库呢? - Thinking In Jdon

标签的主题列表 缓存Cache 关注本标签 有新回复自动通知我 关注 通过cache来发挥同步与异步的优势 关于CQRS中,对于一个领域对象的lock JVM堆大小的建议 关于牛XX的内存领域+事件驱动的问题!!! Stack Overflow:memcached和Redis的比较 海量数据的查询缓存问题 为Domain寻求一种缓存 突破JVM内存:开源DirectMemory 数据网格 Data Grid和NoSQL相同和区别-异同 高并发开发?? 弱一致性在现实世界中到处存在 一个常见但不是那么容易的架构问题 如何处理频繁创建对象然后丢弃导致频繁GC的情况 使用ehcache元注释提高Spring 性能源码案例 SNS Webgame 社区类页面网游开发, 自己所用的架构,以及遇到的一些问题和困惑 JVM伪共享 数据管理的未来: “Disk-less” 风格数据库? 亚马逊的弹性缓存 如何驯服java GC导致暂停? 使用16GiB以上heap 使用设计模式后的副作用

分享到

百度分享 JiveJdon Community Forums在线 主题表 标签 查搜 注册 登陆 发帖 关注 设计模式 领域驱动设计 云架构 JiveJdon Jdon框架 企业咨询 主题讨论

用户 自动登陆 密码 新用户注册 忘记密码? 登录新浪微博 登录腾讯微博 登录Google 首页 » 论坛 » 云架构等扩展性讨论

阅读3831次 1人关注

前往下页: 发表新帖子 回复该主题贴

banq 个人详介按这里 文章: 12593 注册: 2002-08-03

是使用分布式缓存Ehcache或者NoSQL数据库呢?

2011-03-03 10:31

标签 缓存Cache NoSQL ehcache 可扩展性Scalable
10

顶一下

Ehcache实际是一个Java的开源缓存产品,用来提升性能,降低负载,方便可伸缩性。后面有秦始皇Terracotta兵马俑式的服务器矩阵支持, Ehcache成为一种线性可扩展的分布式缓存。它是一个无关系结构schema-less, key-value, 基于Java的分布式缓存,它提供可靠的一致性控制,可根据主键key 值value或属性索引搜索。

Flexible Consistency可靠的一致性 从Ehcache 和 Terracotta整合性来看, 我们可以激活相关的数据跨集群共享,按照CAP理论来说, 由于避免单机硬编码权衡考虑,我们在一个个缓存中创建了一个丰富的一致性模型;同时为了易于理解,我们采取统一标准客户端一致性模型来描述和配置它。 我们可以实现一个比NoSQL解决方案更加丰富的一致性富模型(模型驱动框架开源Jdonframework缺省采取echcahe的原因)。我们可以为每一个缓存提供跨集群的如下特性: 1.通过悲观锁支持强壮的一致性(缺省,一致性也就是事务性,数据事务安全性) 2.未加锁的弱一致性,用来先写后读,或只读,或者只写。 3.乐观锁 Compare and Swap (“CAS”),跨集群服务器的原子操作 。 4.XA分布式事务和本地事务机制transactions 5.一个显式的锁API,可以运行用户优化事务一致性带来的性能问题。 Ehcache架构非常不同于NoSQL(如memorycache ). 每个服务器内存中会驻留使用最频繁(LRU算法)的数据或对象。可以有4-6 GB heap 空间, 如果辅助以BigMemory, 能够扩展至上百 GBs(注意这是每台,如果考虑集群多台,几乎可以把数据库中数据都加载到内存中,相当于一个内存数据库). 这是一种Level 1 (“L1”) 缓存,完全基于内存in-process. 访问L1 速度一般少于1 μs. 整个缓存一般都驻扎Terracotta服务器阵列中. 这是一种Level 2 (“L2”) 缓存. 访问L2少于2 ms. 你从这个架构中得到的依赖于你使用经验,最普通一个情况是:the Pareto distribution, 80% 数据从 L1获得 , 20%时间从L2获得, 这样,普通延迟性一般是少于.401 ms. 通过比较,Yahoo! Cloud Serving Benchmark 基准测试表明 HBase 和 Cassandra延迟性是在 8 to 18 ms. 这使得Ehcache要快于NoSQL一个数量级别. 持久化 缓存能够被设置为持久化,能够提供永久保存和可重启性。一般使用一种写日志。缓存将能够恢复到一种一致性状态. 当ehcache被配置为一种分布式缓存时,Ehcache将使用Terracotta Server Array 作为二级缓存Level 2 cache. Terracotta servers通常是每个区配置两个,有HA. 另外,Terracotta 使用JMX tools实现备份,备份或恢复都能立即进行。 RDBMS关系数据库典型提供一个广泛归档索引 ETL等系列功能, 正因为这些理由,作者认为 Ehcache具有一些持久化小特性. 当然,这和许多NoSQL 产品类似。 大数据量Big Data 大数据量指成打T级别terabytes甚至达到 petabytes. Ehcache目前 可以达到2 TB. 以后会不断提升(banq注:集群的问题还是一个群的问题,群的规模是有上限天花板的,这和破坏了数据关系的NoSQL分布式是无法比拟的) ehcache对大数据量的限制主要还是受制于关系数据库RDBMSs. 如果使用BigMemory,Terracotta server可以加载到每台服务器内存中有250GB或更多. NoSQL 解决方案使用内存和磁盘混合,基于Java的Cassandra问题可能是垃圾回收, 受其限制只能有很小的heaps. BigMemory 是脱离heap使用额外内存,使用NIO的 DirectByteBuffer. 最终结果你可以用很小的服务部署付出得到同样的回报。 进入分布式[缓存](http://www.jdon.com/cache.html) 如果Ehcahce不是NoSQL, 那它是什么? 答案是它是一个分布式缓存distributed cache. 象它的NoSQL表兄弟, 它经常用于传统数据库不能覆盖的领域,缓存一个web page或或者耗费CPU计算是经常碰到的情况. 关键问题是要更快地访问到这些计算好的结果,这时并不是需要持久化. 在Java中最快的访问架构就是in-process caching, 通过网络作为一种in-memory cache. Gartner 和Forrester已经对分布式缓存Distributed Caching 和弹性缓存Elastic Caching有一个公开定义. Gartner: “分布式缓存Distributed caching平台让用户管理内存中非常大的in-memory data,以便使得关系数据库减轻负载、以及云计算和云事务处理、 以及更杰出性能的事务处理,或复杂的事件处理以及高性能计算”. 他们也将分布式缓存作为一个服务(“aPaaS”) 加入他们应用平台。 当然,我们可以在RDBMSs 和 NoSQL两者之前都使用分布式缓存(因为事务的需要)。 但是,同样缓存作为分布,而需要得到一些搜索之类企业特性时,和NoSQL自己区别就非常明显。 Use Cases场景用例 如果需要一个‘key-value plus search’key-value增强式的搜索,一旦数据量超过2 TB,那么NoSQL合适。 我们看看下面一些常用ehache缓存场景: Hibernate Caching. JDBC caching. Web caching. Collection caching.使用echcache 快速的分析结果查询 信用卡等与钱有关......见原文 结论 NoSQL是瞄准替代RDBMS, 缓存是瞄准低延迟和速度,可以根据CAP理论来衡量。缓存主要和应用有关,可以帮助应用脱离任何存储技术,无论是RDBMS 和 NoSQL(这点比较认同,jdonframework将缓存作为领域模型的生存空间,后面可以接关系数据库或NoSQL). 原文网址被封,需要翻墙。监管带来信息闭塞以致落后在我们经常看外文资料的人来说来感受非常明显。 Ehcache: Distributed Cache orNoSQL Store? :: myNoSQL [该贴被banq于2011-03-03 10:33修改过]

banq 个人详介按这里 文章: 12593 注册: 2002-08-03

1楼 是使用分布式缓存Ehcache或者NoSQL数据库呢?

2011-03-03 12:30 顶一下

ehcache与memcached区别是在一致性,也就是事务性方面,memcached使用HASH算法实现负载平衡,但是集群的另外一个要素:失败恢复,也就是服务器当了,数据还在其他地方存在共享;memcached的一台服务器宕了,上面数据就丢失了,由于采取Hash环,损失有限。

但是也由于没有状态数据在服务器之间共享复制,memcached对于只读性能应该比集群的更好。 上面文章主要是在基于Java的比较。

-

SpeedVan 个人详介按这里 文章: 494 注册: 2010-08-24

是使用分布式缓存Ehcache或者NoSQL数据库呢?

2011-03-03 21:24 顶一下

我现在使用cache,只是用Repository封装后,作为单系统内存接口来使用。分布技术,有待学习呢,真是路漫漫啊。自从认识web的cache之后,就知道了一个web架构,就相当于一个游戏引擎——缓存管理是其一个核心部分。

更多标签 缓存Cache(171) NoSQL(55) ehcache(9) 可扩展性Scalable(98)
推荐贴列表 置顶热贴 LMAX架构 [EDA事件驱动 异步编程 ] 五年java人的一点感悟 [软件观点 工具心得 ] 分享我的:领域驱动设计(DDD)学习成果精简总结 [DDD领域驱动设计 ] 如何提高web系统的吞吐能力? [吞吐量 高性能 ] 实践ddd,太让人沮丧了。。 [DDD领域驱动设计 jivejdon ] 使用Disruptor实现并发编程 PPT文档 [disruptor 并发并行 ] jdon框架优缺点之我见 [JdonFramework DSL领域特定语言 ] Instagram卖出10亿美金的启示 [云计算 项目管理 ] Martin Fowler厌倦ORM了 [对象数据库阻抗 ORM模式 ] Spring创始人Rod Johnson离开东家VMWARE [spring akka ]-

使用帮助 联系管理员 探索 分享 交流 解惑 授道 OpenSource JIVEJDON Powered by JdonFramework Code © 2002-15 jdon.com anti spam

-

-