Apache Ignite 内存速度级的分布式数据库( 三 )

  • Ignite内存存储层:这一层可以算是Ignite的核心层了 。数据可以通过不同分区,复制模式分布在Ignite集群所有节点,部分节点或者本地节点 。通过数据分区和复制,比如1主多备的方式,可以提高数据的可用性,即便主数据节点故障后,集群中的备数据节点可以切换为主节点继续提供读写服务 。同时备节点也可以作为只读节点使用,提高数据读操作的吞吐量 。Ignite还利用Java堆外内存存储数据和索引,减少了JVM的垃圾回收次数和时间,提供了更高效的操作 。
  • API接口层: 丰富多样的接口支撑Ignite向上提供了诸如分布式数据库,数据网格和计算网格的能力 。Key/Value+transaction,可以把Ignite当做和redis,Memcached一样的缓存使用 。而对SQL ANSI-99的兼容,有可以把Ignite当做一个分布式数据库来用 。除了数据能力,Ignite还允许你通过Compute Grid的接口提交计算任务,充分利用集群的计算资源 。Ignite还支持把计算任务部署在和计算数据所在的相同节点上,减少网络传输和数据的序列化开销,提高计算效率 。流处理,机器学习网格,服务网格,消息队列等,Ignite也同时提供支持 。
  • 结论Apache Ignite 是一个专注于分布式内存计算的开源项目 。Ignite 将数据存储在内存中,分布在提供快速数据访问的多个节点上 。将数据异步传播到持久层的选项是一个额外的优势 。此外,与各种数据库集成的能力也使 Ignite 成为开发人员使用它进行数据库缓存的简单选择 。Apache Ignite整体来说,它基本把现在分布式的一些概念都集成了,包含分布式存储、分布式计算、分布式服务、流式计算等等 。而且,它对Java语言的支持,与JDK能够很好的整合,能够很友好的兼容JDK的现有API,当你开启一个线程池,你不需要关系是本地线程池还是分布式线程池,只管提交任务就行 。Apache Ignite在与RDBMS、Hadoop、Spark、Kafka等传统关系型数据库和主流大数据套件的集成,提供了非常灵活好用的组件API 。




    推荐阅读