eos作为一个架构在应用服务器上的中间件,它对于集群的支持,切入点只是对于自有对象的集群处理。
打个很浅显的比方:其实eos就相当于一个框架(spring),用eos开发的应用给予eos这个框架提供的一个基本功能的支持来完成业务。对于像
spring这样的框架,集群并不是它的事,集群是应用服务器的事。因为spring框架只有IOC/AOP,这些功能在集群(负载均衡)的问题域下并不
受影响。所以集群就不关spring什么事了。
而对于eos这样一个提供了cache功能的框架。在集群环境下,要考虑的问题就是,怎样满足cache同步的需要了。为什么集群环境下,要考虑
cache同步的问题,原因是:eos为了提高性能,会将某些数据(业务字典,用户自定义cache等),放到cache中(数据库里也有),用户访问
这个数据时,如果cache里有这个数据,就直接在cache里进行读取,避免的数据库的操作,提高性能。所以问题就来了,在集群环境下,A,B
同时访问两台被管服务器,A修改了cache数据(全局的,如:业务字典),B在A修改业务字典前已经在cache里加载了业务字典。这样A的修改
对B来说就是无效的,B看到的业务字典就是原来旧的数据。所以说这就是要解决的问题。这样解决,就是在A修改了全局cache后,要通知所有
的服务器。告诉它们现在cache里的数据失效,需要重新取一次。这样就保证了同步。
转载于:https://blog.51cto.com/zhaocz/116752