返回 登录
0

Apache Ignite.NET 1.7新特性

APache Ignite 1.7上周发布,让我们一起来看一下.net部分的新特性。

分布式连接

这是很有用的一项特性,之前,SQL只能连接同位数据:如果Join的缓存位于节点1,而Apache的缓存位于节点2,那么SQL连接不能返回这个数据对。

但现在,这不再是问题了。Join操作能在任何情况下工作。这项特性默认并没有开启,你需要设置SqlQuery.EnableDistributedJoinsSqlFieldsQuery.EnableDistributedJoinstrue来开启。

对于LINQ,有一个新的重载。

public static IQueryable<icacheentry<k, v="">>
    AsCacheQueryable<k, v="">(this ICache<k, v=""> cache, QueryOptions queryOptions)

QueryOptions类有EnableDistributedJoins的特性。

用户自定义AffinityFunction

除了提前定义FairAffinityFunctionRendezvousAffinityFunction之外,现在也可以通过实现IAffinityFunction接口或者继承任意一个已经实现的类来自定义AffinityFunction

Apache.Ignite.exe的.Net配置

Apache.Ignite.exe独立运行节点有两个新的命令行参数:ConfigFileNameandConfigSectionName。可以用来从Apache.Ignite.exe.config或其他的配置文件载入IgniteConfigurationSection

将Java的输出转发到.Net终端

Ignite可以将有用的信息输出到终端:拓扑快照、错误、警告等。这些信息可以写到log,但是如果能输出到终端,在开发中则更加实用。

大多数的信息都是用Java写的。如果你运行的是终端应用,并没有什么问题。然而,这对.Net来说就很麻烦了。Ignite 1.7修复了这个问题。所有终端输出都用原生.Net组件,可以完美配合.Net工作。下面是一个LINQPad的截图:

InnerException里的Java异常信息

另一项和debug有关的优化是InnerException的Java异常细节。

在1.6中,如果Java层发生了异常,你在.Net中得到的只是一些基本的异常信息。这并不足够我们了解问题。例如,如果你有配置错误,得到的异常信息只有模糊的Failed to start manager: GridManagerAdapter文本。而现在,所有的跟踪信息如下所示:

Ignition.Start(new IgniteConfiguration
{
    CommunicationSpi = new TcpCommunicationSpi
    {
        // Negative timeout is not valid
        IdleConnectionTimeout = TimeSpan.MinValue
    }
});

Apache.Ignite.Core.Common.IgniteException: Failed to start manager: GridManagerAdapter
   [enabled=true, name=org.apache.ignite.internal.managers.communication.GridIoManager]
---> Apache.Ignite.Core.Common.JavaException: class org.apache.ignite.IgniteException: 
Failed to start manager: GridManagerAdapter [enabled=true, name=org.apache.ignite.internal.managers.communication.GridIoManager]
  at org.apache.ignite.internal.util.IgniteUtils.convertException(IgniteUtils.java:908)
  at org.apache.ignite.internal.processors.platform.PlatformAbstractBootstrap.start(PlatformAbstractBootstrap.java:48)
  at org.apache.ignite.internal.processors.platform.PlatformIgnition.start(PlatformIgnition.java:76)
Caused by: class org.apache.ignite.IgniteCheckedException: Failed to start manager: GridManagerAdapter [enabled=true, name=org.apache.ignite.internal.managers.communication.GridIoManager]
  at org.apache.ignite.internal.IgniteKernal.startManager(IgniteKernal.java:1576)
  at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:846)
  at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1739)
  at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1589)
  at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1042)
  at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:549)
  at org.apache.ignite.internal.processors.platform.PlatformAbstractBootstrap.start(PlatformAbstractBootstrap.java:43)
  ... 1 more
Caused by: class org.apache.ignite.IgniteCheckedException: Failed to get SPI attributes.
  at org.apache.ignite.internal.managers.GridManagerAdapter.startSpi(GridManagerAdapter.java:248)
  at org.apache.ignite.internal.managers.communication.GridIoManager.start(GridIoManager.java:258)
  at org.apache.ignite.internal.IgniteKernal.startManager(IgniteKernal.java:1571)
  ... 7 more
Caused by: class org.apache.ignite.spi.IgniteSpiException: SPI parameter failed condition check: idleConnTimeout > 0
  at org.apache.ignite.spi.IgniteSpiAdapter.assertParameter(IgniteSpiAdapter.java:344)
  at org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi.getNodeAttributes(TcpCommunicationSpi.java:1419)
  at org.apache.ignite.internal.managers.GridManagerAdapter.startSpi(GridManagerAdapter.java:231)
  ... 9 more

通过跟踪信息,我们可以发现,是idleConnTimeout > 0检查失败了。

配置Schema NuGet包

IgniteConfigurationSection.xsd现在在一个NuGet包中,将一个合适的版本加入到你的项目中非常简单。

Install-Package Apache.Ignite.Schema

将这个文件加入到项目中的时候,在Visual Studio的app.config或web.config中编辑IgniteConfigurationSection的时候,可以支持Intellisense(TM)。

ASP.NET Output Cache提供者

可以使用Ignite的分布式缓存为ASP.NET输出缓存。更多信息可以查看ASP.NET Output Caching

原文What’s New in Apache Ignite.NET 1.7
作者:Pavel Tupitsyn 翻译:赖信涛 责编:仲培艺

评论