什么是应用网格?
应用网格就是一个基于(应用状态数据)内存存储引擎的水平可扩展的代理。这种方式可以形成一个分布式内存池,便于将其线性扩展到由任何高端而低价的标准硬件组成的异质网格。在应用中使用应用网格的同时还能获得高性能、扩展性和可靠性。
应用利用应用网格的一种方式是使用API水平的接口模拟Java Hashmap、.NET Dictionary或JPA接口。还有一种方式是使用SOA环境中的服务接口。所有应用和服务都将数据放入应用网格,一组共同运转的缓存服务器(以群并行控制的方式)负责对数据对象的更新和备份。
如图3所示,应用网格接收了输入数据的请求并通过高效网络协议传送到拥有原始实例数据的网格节点P。然后原始节点将更新的值复制到第二节点B以进行备份,再把控制权返回给服务。
应用网格在多台机器上以合适的位置透明性储存数据。不管应用网格将数据储存在什么地方,只要有Hash值就可随时读取所存储的数据。这样就不再需要复杂的处理位置依赖性和手动分区的应用逻辑了。如果网格中的一个或更多的节点出现故障,或者由于网络原因而无法进行访问,那么应用网格可以马上做出反应并在其它健康的节点上重新布置数据。而且这个过程无视故障节点所参与的自主更新。在图4中,读取数据时原始节点P出现故障。于是Get()请求马上被导向了备份节点并重新生成原始与备份节点对。
存储在网格中的数据可以是从简单的变量到复杂的对象甚至大型XML文档的任何东西。我们选择把可能是非常大的XML文档分成小块并以Java对象的方式储存在应用网格中。这样我们就能使用Java API平行处理对数据的查询请求。
应用网格支持一系列的操作,包括并行处理查询、事件和事务。对于大型数据集,可能将整个数据集合作为一个操作放入网格,然后网格可以将内容分发到多个原始和备份节点以实现可扩展性。在更高级的应用中,网格甚至可以直接在数据储存节点上并行执行业务逻辑,并且具有数据与逻辑的亲和力,从而保证在与逻辑操作相关的数据存储机器上执行逻辑。