精华内容
下载资源
问答
  • 初探HazelCast IMDG内存数据网格-简介 文章目录初探HazelCast IMDG内存数据网格-简介一、内存数据网格(In Memory Data Grid)1.1 IMDG特点1.2 IMDG架构1.3 成熟的产品二、Hazelcast 简介2.1 Hazelcast介绍2.2体系...

    初探HazelCast IMDG内存数据网格-简介



    一、内存数据网格(In Memory Data Grid)

    所谓内存数据网格,是有别于内存关系型数据库,NoSQL数据库或关系型数据库的新型数据库软件。
    内存数据网格将数据存储到内存中,并使其分布到多个服务器上,该方法的目的是更容易获取数据、改进其可扩展性和更好地进行数据分析。

    1.1 IMDG特点

    • 数据是分布式存储在多台服务器上的。数据被集群里所有的服务器共享,外界不需要知道数据存放在哪个节点。
    • 所有数据存储于服务器的内存(RAM)中。数据存储和读取, 响应时间更快。
    • 每个节点的数据服务都是活跃的。
    • 用于存储数据的内存容量可以随着服务器的动态添加删除而不断改变, 随着集群服务器数量的增加,自动负载均衡,分担读写压力。
    • 数据模型是基于对象模型而并非关系模型。
    • 数据结构具有伸缩性,可以自动检测服务器节点的加入和移除。
    • 遇到网络或者硬件问题,不需要人工的干预,自动的切换到备份机器上,同时保证数据完整性。

    1.2 IMDG架构

    IMDG需要克服的两个核心为提示:容量限制(RAM精贵)和数据可靠性。通常IMDG通过水平扩展来克服内存容量的瓶颈(没有什么性能问题是加一台服务器解决不了的,一台不够那就两台!),而可靠性通常依赖复制来保证。
    IMDG架构
    除了提供各种分布式数据结构外,IMDG一般会使用堆外内存(off-heap,或称弹性内存)来降低GC的压力。

    1.3 成熟的产品

    • [Java]Hazelcast
    • [商用]Terracotta Enterprise Suite
    • [Java]VMware Gemfire
    • [Java]Oracle Coherence
    • [Java]Gigaspaces XAP Elastic Caching Edition
    • [商用]IBM eXtreme Scale
    • [商用]JBoss Infinispan
    • [商用]GridGain

    二、Hazelcast 简介

    2.1 Hazelcast介绍

    • Hazelcast 是一款开源的分布式内存数据网格产品;
    • Hazelcast 是由Hazelcast公司开发和维护的开源产品,可以为基于jvm环境运行的各种应用提供分布式集群和分布式缓存服务。Hazelcast可以嵌入到任何使用Java、C++、.NET开发的产品中(C++、.NET只提供客户端接入);
    • Hazelcast 提供了 Map、Queue、MultiMap、Set、List、Semaphore、Atomic 等接口的分布式实现;
    • 提供了基于Topic 实现的消息队列或订阅\发布模式;
    • 提供了分布式id生成器(IdGenerator);
    • 提供了分布式事件驱动(Distributed Events);
    • 提供了分布式计算(Distributed Computing);
    • 提供了分布式查询(Distributed Query)。
    • 提供用于一对多关系的分布式MultiMap。
    • 通过JCA与J2EE容器集成和事务支持。
    • 提供用于安全集群的Socket层加密。
    • 支持同步和异步持久化。
    • 通过JMX监控和管理集群。
    • 支持动态HTTP Session集群。
    • 利用备份实现动态分割。
    • 支持动态故障恢复。
    • 简单通过jar包集成
    • 运行速度快.
    • 体积小
    • Hazelcast 有开源版本和商用版本。开源版本遵循 Apache License 2.0 开源协议免费使用。

    附:
    Hazelcast源码
    关于Hazelcast的issues:
    githubstackoverflow

    2.2体系结构图

    体系结构图

    2.3HazelCast的特点

    • 使用Hazelcast开发比较简单
      Hazelcast是基于Java写的,没有任何其它的依赖。它提供的API跟Java util包很像。对于开发者来说,只需要加入hazelcast.jar,然后就可以快速使用在多个JVM之间的数据共享(分布式)。

    • 自治集群(无中心化)
      Hazelcast的节点(文中的节点可以理解为运行在任意服务器的独立jvm,下同)之间是对等的(没有主次之分)。所有的节点存储的数据都是相等的,在应用中可以很容易的增加一个Hazelcast节点。Hazelcast 没有任何中心节点,或者说Hazelcast 不需要特别指定一个中心节点。在运行的过程中,它自己选定集群中的某个节点作为中心点来管理所有的节点。

    • 数据按应用分布式存储
      Hazelcast 将数据分散的存储在每个节点中,节点越多越分散。每个节点都有各自的应用服务,而Hazelcast集群会根据每个应用的数据使用情况分散存储这些数据,在应用过程中数据会尽量“靠近”应用存放。这些在集群中的数据共享整个集群的存储空间和计算资源。

      在传统的数据存储模型中(MySql、MongDB、Redis 等等)数据都是独立于应用单独存放,当需要提升数据库的性能时,需要不断加固单个数据库应用的性能。即使是现在大量的数据库支持集群模式或读写分离,但是基本思路都是某几个库支持写入数据,其他的库不断的拷贝更新数据副本。这样做的坏处一是会产生大量脏读的问题,二是消耗大量的资源来传递数据——从数据源频繁读写数据会耗费额外资源,当数据量增长或创建的主从服务越来越多时,这个消耗呈指数级增长。

    • 抗单点故障
      集群中的节点是无中心化的,每个节点都有可能随时退出或随时进入。因此,在集群中存储的数据都会有一个备份(可以配置备份的个数,也可以关闭数据备份)。这样的方式有点类似于 hadoop,某项数据存放在一个节点时,在其他节点必定有至少一个备份存在。当某个节点退出时,节点上存放的数据会由备份数据替代,而集群会重新创建新的备份数据。Hazelcast的扩展性非常强,可以很简单的增加或减少节点。可以自动的监听节点的增加,并以线性的方式增加存储空间和能力。节点之间的通信是以TCP的方式建立的。

    • Hazelcast是可备份的
      Hazelcast的数据会在多个节点上进行备份。一旦一个节点失败了,数据将会从别的节点上进行恢复。

    • Hazelcast页面元素齐全
      页面可以看到map,list等数据内容,以及一些容量的仪表图.可以看到很多有用的数据,包括每个Map的请求次数等.

    2.4 使用场景

    • 分布式缓存
    • 缓存服务器
    • NoSQL数据存储
    • SpringCache
    • 微服务的结构存储
    • 存储临时数据

    2.5 Hazelcast的数据分区

    Hazelcast的数据分区叫做间隔(Partitions),Hazelcast 缺省情况下把数据分为 271 个区。这个值可配置于系统属性hazelcast.partition.count。对于一个给定的键,在经过序列号、哈希并对分区总数取模之后得到此键映射的分区号。所有的分区等量的分布与集群中所有的节点中,每个分区对应的备份也同样分布在集群中,保证高可用。

    数据分区示例

    • 单节点
      仅仅启动一个节点时,由于没有其他节点,因此推选该节点为master节点,默认有271个分区。
      单节点

    • 第二个节点
      启动第二个节点,第二个节点会加入第一个节点创建的集群中。第一个节点中的分区会重新分配,均匀分布在集群中。且集群中每个成员的数据分片都有一个副本。
      两个节点

    • 多个节点
      当加入更多节点的时候,原来节点中的数据分片会重新分布到新加入的节点上面,保证集群中数据分片的均匀分布。且同样会备份数据。下面是4个节点集群的数据分片分布。
      四个节点

    • 分区算法
      Hazelcast数据分片采用哈希算法。当给一个map的key或是一个分布式对象的名称,会首先将key或对象名称进行序列化,转成byte array的形式,然后将byte array进行哈希,将哈希结果对分区数求模得到分片ID。

    • 分区表
      分区表在第一个节点创建的时候就会生成。分区表是存储分区和节点的对应关系。每个节点维护一个分区表,存储着分区号与节点之间的对应关系。第一个启动的节点会将这个分区表周期性地发送给集群中的其他节点。这样,当集群中新增节点或是删除节点的时候,集群中的每个节点都可以拿到最新的分区信息。如果第一个节点(master)失败了,集群会选出新的master(第二个启动的节点),再由新的master将分区表发送给集群中的节点。发送的时间周期可以设置hazelcast.partition.table.send.interval系统属性,默认是15s.

    2.6 hazelcast拓扑方式

    • 嵌入式拓扑模型
      含有Hazelcast 服务器的jar 包的JVM直接加入Hazelcast群集。优点是可以更低延迟的数据访问。
      嵌入式
    • C/S服务器外加客户端拓扑模型
      Hazelcast 客户端的 jar 包被导入宿主应用程序,服务器 jar 包独立运行于 JVM 中。优点是更容易调试以及更可靠的性能,最重要的是更好的扩展性。
      客户端加入
      在多数情况下,可以采用客户端外加成员拓扑方法,因为就群集机制而言,它提供更大弹性 - 成员 JVM 可被拆卸和重新启动,不会对整体应用程序产生任何影响,因为 Hazelcast 客户端将只需重新连接到群集的另一个成员。

    引文:
    1.https://www.theserverside.com/discussions/thread/63425.html
    2.https://www.cnblogs.com/xiaomaohai/p/6157664.html
    3.https://blog.csdn.net/sprayabc/article/details/8488253
    4.https://www.cnblogs.com/seasonsluo/p/hazelcast-intro.html
    5.https://blog.csdn.net/wangyangzhizhou/article/details/52511101

    展开全文
  • XAP是一种分布式的,高度可扩展的内存数据网格。 入门 这些说明将为您提供在本地计算机上运行并运行的项目的副本,以进行开发和测试。 先决条件 运行XAP需要Java 6或更高版本。 构建XAP需要Java 8或更高版本(内核...
  • 行业分类-物理装置-基于内存数据网格的数据处理方法.zip
  • Coherence 工具项目是内存数据网格的工具和扩展的集合。 模块 该项目由几个模块组成: 核 包含大多数其他项目所依赖的核心接口和类,例如: Expression抽象,它定义了一个通用 API 并提供了各种表达式语言( 、 、 ...
  • Hazelcast是一个开源的分布式内存数据存储和计算平台。 它提供了各种各样的分布式数据结构和并发原语,包括: 分布式,分区和可查询的内存中键值存储实现,称为IMap 其他数据结构和简单的消息传递结构,例如Set ...
  • #资源达人分享计划#
  • 内存数据网格IMDG简介

    千次阅读 2014-12-21 20:49:53
    在对主存的使用上,内存数据网格(In Memory Data Grid,IMDG)与IMDB类似,但二者在架构上完全不同。IMDG特性可以总结为以下几点:Ø 数据是分布式存储在多台服务器上的。Ø 每台服务器都是active模式。Ø 数据...

    简介

    将内存作为首要存储介质不是什么新鲜事儿,我们身边有很多主存数据库(IMDBMMDB)的例子。在对主存的使用上,内存数据网格(In Memory Data GridIMDG)IMDB类似,但二者在架构上完全不同。IMDG特性可以总结为以下几点:

    Ø  数据是分布式存储在多台服务器上的。

    Ø  每台服务器都是active模式。

    Ø  数据模型通常是面向对象和非关系型的。

    Ø  根据需要,经常会增减服务器。

    此外,IMDG与普通缓存系统也是不同的。同样地,在主存使用以及水平扩展上缓存系统与IMDG类似。但是,两者的使用方法和目的是完全不同的。缓存系统只是缓冲读压力,像RDBMS这种持久化存储是必备的。例如下图中的Arcus缓存系统。而IMDG的架构请参考第二部分。


     

    换言之,IMDG将对象本身存储在内存中,并保证可扩展性。常见的商业以及开源产品如下:

    Ø  Hazelcast

    Ø  Terracotta Enterprise Suite

    Ø  VMware Gemfire

    Ø  Oracle Coherence

    Ø  Gigaspaces XAP Elastic Caching Edition

    Ø  IBM eXtreme Scale

    Ø  JBoss Infinispan

    架构

    IMDG亟需克服的两个核心问题是:容量限制和可靠性。通常,IMDG通过水平扩展来克服内存容量上的限制,而通过复制系统来保证可靠性。典型的IMDG架构如下图所示。


     

    因此,前面介绍过的缓存系统与IMDG的区别很明显。


    特性

    除了提供各种数据结构的分布式实现外,IMDG一般会使用堆外内存(off-heap,或叫弹性内存)来降低垃圾回收的压力。


    参考资料

    Introduction to In-Memory Data Grid: Main Features


    展开全文
  • Presto 是一个开源分布式 SQL 查询引擎,用于针对从千兆字节到 PB 级的各种规模的数据源运行交互式分析查询。 这在使用PrestoDb对Hazelcast上运行SQL查询实验。 它启动一个 PrestoDb 服务器和一个嵌入式 Hazelcast...
  • 内存数据网格:In Memory Data Grid (IMDG) 内存数据网格被视为处理迅速、多样和大数据量的大数据的一种方式。将数据存储到内存中,并使其分布到多个服务器上,该方法的目的是更容易获取数据、改进其可扩展性...

    内存数据网格:In Memory Data Grid (IMDG)

    内存数据网格被视为处理迅速、多样和大数据量的大数据的一种方式。将数据存储到内存中,并使其分布到多个服务器上,该方法的目的是更容易获取数据、改进其可扩展性和更好地进行数据分析。该方法早期的使用者仅包括Google、 Facebook 和 Twitter这样的互联网巨头,但是专家称现在该方法逐步成为主流。康涅狄格州斯坦福德市的Gartner公司称,内存计算技术在2013年战略技术发展趋势排在前十名。

    内存数据网格(IMDG)或者分布式缓存的崛起是大数据技术发展的一部分。Gartner公司的报告显示,使用数据集成和数据质量工具的市场前景呈现上涨的趋势,2014年IT行业开支将达到38万亿美元。

    Dave Brinker是华盛顿Bellevue公司的首席运营官,该公司是一家开发可扩展的数据网格软件公司。他说:“Web应用程序的工作负载飞速的增长是促进内存数据网格技术发展的真正原因。负载量如此大,以至于Web应用程序的流程中出现了运行瓶颈。”

    IMDG可以通过将数据存储在内存中,而不是传统的数据库中来解决瓶颈问题。这样就可以改进相应时间,避免数据“交通堵塞”。

    Mike Gualtieri是位于马萨诸塞州剑桥Forrester研究公司的首席分析师。他说,IMDG的主要应用案例是支持互联网网站和移动应用程序。“例如美国银行在内的许多大型企业已经使用内存分布式缓存多年。当用户进入到一个网站或服务时,他们越来越希望获得其快速的性能。”

    Massimo Pezzini是Gartner公司的副总裁,称IMDG的特色是支持高性能和高可扩展性。

    他说:“高性能的含义就是较存储于普通数据库的数据而言,用户可以更迅速的访问存储在内存中的数据。如果存在可扩展性问题,通过许多服务共享数据,你就可以借助应用程序来支持成上千上万甚至百万个用户。”

    提高性能和可扩展功能,使IMDG备受电子商务、软件即服务(SaaS)和金融服务组织的欢迎。Pezzini解释,成功的SaaS平台拥有成千上万个用户,因此,其更需要高度可扩展架构。另一方面,电子商务供应商或提供者关注IMDG的性能:电子商务网站运行速度越快,就会有越多的收入。更多的金融服务公司正在使用IMDG技术来进行欺诈检测,通过分析大量历史数据来实时跟踪用户的信用卡使用行为。

    不过,现在Pezzini认为IMDG不是主流技术。

    他说:“作为一个独立的产品,IMDG技术经过三、四年后会成为主流技术,但是它已经成为嵌入式组件。越来越多的软件供应商引入嵌入式内存数据网格技术,以此来推动打包应用和其他形式软件的运行,像ESB技术、BPM工具和应用程序服务器。”

    如今,一些大型供应商可以提供数据网格软件。举个Oracle Coherence的例子,其使用内存数据网格技术,并嵌入在Oracle SOA套件和Oracle BPM套件中。同样地,IBM的WebSphere eXtreme Scale提供了用于如WebSphere Commerce服务器中的分布式缓存。类似的产品也可以从Software AG(Terracotta的BigMemory)和Tibco软件(ActiveSpaces)中得到。

    IMDG的市场可能相对较小,2011仅达到2.6亿美元。但Pezzini指出,2012年,一些数据网格厂商收入翻了一番,另有一些厂商则翻了两番。他预计2016或2017市场份额将达到十亿美元。

    IMDG的主要推动力和面临的挑战

    随着内存数据网格的发展,也面临诸多挑战。特别是,IMDG的使用者还不了解分布式计算技术,许多领域程序开发人员缺失。

    Pezzini说:“内存数据网格是复杂的软件,需要先进的技术。这些技术很难找到,而且很昂贵。”他补充道,该问题因缺失标准而变严重了。市场中每个产品需要不同的技能,所以IMDG知识不能被重复使用。

    IMDG学习曲线并没有就此止步

    William Bain是ScaleOut Software的首席执行官,他说:“我们遇到的一个陷阱是,人们不能从概念上掌握内存数据涉及到了一组服务器。大多数IT人士认为其只在一个单独的服务器中运行。”

    Bain说,这种误解会导致配置和部署上的错误。他建议,在完成IMDG之前,要保证在服务器之间有足够的网络带宽。

    同时,有效的监控和管理策略是内存技术成功的关键。一个大型数据网格可能跨越几百个服务器,这是一个重大的管理挑战。

    Forrester公司的Gualtieri解释说:“企业必须给他们的架构添加另一个层。一个层位于数据库和应用程序服务器之间。另一个层意味着要引进更多的技术对程序开发专业人员的创意进行管理和重新设计。”

    尽管IMDG存在一些阻碍,Brinker预测,几个因素共同作用会推进IMDG成为主流技术。

    他说:“内存的价格下降了许多,因此现在出现了许多内存系统。网络也变得更加可靠,所以,可以通过内存进行更多计算。在商业竞争压力的带动下,使得企业做决策的速度越来越快。”


    转自:http://www.cww.net.cn/tech/html/2013/9/11/201391115840185_2.htm

    展开全文
  • oracle内存数据网格

    2011-03-08 11:25:17
    oracle内存数据网格: 1.对数据网格的需求 2.Coherence 简介 3.Coherence 3.6 主题 4.不断发展的使用 5.客户案例:CCC Information Services
  • 内存数据网格(IMDG)

    2011-12-29 14:09:39
    一段时间以来,Nosql数据库(e.g MongoDB,membase...这几天,又留意到一个新的方面:In Memory Data Grid(自己翻译成“内存数据网格”)。最初接触到这个词是因为Hazelcast,当时只是单纯地考虑用Hazelcast替换mem...

    一段时间以来,Nosql数据库(e.g MongoDB,membase),分布式缓存(e.g memache)大行其道,在互联网应用中广泛使用。最近以hadoop为首的大型分布式计算,云计算也越来越流行。这几天,又留意到一个新的方面:In Memory Data Grid(自己翻译成“内存数据网格”)。最初接触到这个词是因为Hazelcast,当时只是单纯地考虑用Hazelcast替换memache,今天看到一篇文章对IMDG的解释,感觉挺清楚的,拷贝下来供以后参考。

     

    http://www.theserverside.com/news/thread.tss?thread_id=63425

     

    In summary an IMDG is an ‘off the shelf’ software product that exhibits the following characteristics: 

    • The data model is distributed across many servers in a single location or across multiple locations.  This distribution is known as a data fabric.  This distributed model is known as a ‘shared nothing’ architecture.
    • All servers can be active in each site.
    • All data is stored in the RAM of the servers.
    • Servers can be added or removed non-disruptively, to increase the amount of RAM available.
    • The data model is non-relational and is object-based. 
    • Distributed applications written on the .NET and Java application platforms are supported.
    • The data fabric is resilient, allowing non-disruptive automated detection and recovery of a single server or multiple servers.
    个人总结几个关键点:
    • 首先自然是网格式分布式存储。
    • 所有数据存于内存(RAM)。
    • 存储服务器数量可随时增减。
    • 数据模型是非关系模型,而是基于对象模型。
    • 在网格内的某一台存储服务器的启动和关闭不会影响到网格内的其他服务器。
    展开全文
  • hazelcast作为一个内存数据网格工具,还算比较优秀,听说有Apache顶级项目使用它,值得研究下,使用文档可以直接看官方文档,但机制原理相关的资料基本没有,本人硬撸源码写的一些东西,跟大家分享一下。 ==========...
  • 基于内存数据网格的REST数据服务

    千次阅读 2016-06-24 09:52:06
    众所周知,REST的实用源于其广泛的用途,然而如果搭配内存计算平台,比如本文中介绍的XAP,你会REST的实用不止如此。鉴于应用程序编写环境的多样化(甚至是远程),对于数据的储存与获取有着简单与可移植的要...
  • ORACLE内存数据网格——Coherence 12.1.2

    千次阅读 2013-10-28 16:30:55
    Oracle Coherence是一种内存数据网格解决方案,通过提供对频繁使用数据的快速访问,使企业能够以可预见的方式扩展关键任务应用程序。随着一些“因特网相关的东西”,比如社交网络、移动设备、云和始终在线设备的出现...
  • 内存结构(XAP) :负责托管大型内存数据网格。 XAP在Marathon / Mesos上的部署 在Marathon上部署XAP curl -X POST -H "Content-type: application/json" --data-binary @xap-grid.json http://
  • Oracle内存数据库和内存网格的区别

    千次阅读 2016-05-26 13:45:49
    Oracle的内存计算产品包括DB12c In-Memory,TimesTen和Coherence,本文探讨的是In-Memory列式内存数据库和内存网格Coherence的区别Coherence并非数据库的选项,而是独立的内存网格产品,即分布式key-value内存存储。...
  • 什么是内存数据网格(以下简
  • 本小节主要讨论hazelcast如何使数据在各个节点被共享,以及如何做到自动负载均衡 以最常用的Distributed Map为例子, 任意一个节点put的key和value在同集群中的其他节点中都能get到. 首先在Node A 上 ? ...
  • 该模块为简单的内存驻留(“本地”)数据表实现数据源,该数据表的基本API包括getRowCount() , getValue(x,y)以获取单元格和getSchema() (以获取隐式包含在列信息中的列getSchema() 。数据)。 Hypergrid v3只需...
  • Redisson-Redis Java客户端具有内存数据网格的功能 | | | | | 基于高性能的异步和无锁Java Redis客户端和框架。 JDK兼容性:1.8-15,Android 产品特点 Redis复制设置(包括对和) Redis群集设置(包括对和) ...
  • 行业分类-物理装置-一种基于分布式内存网格数据存储系统.zip
  • 交易系统和数据网格的Struts 杠杆是一个用于编写事务系统(特别是用于内存中数据)的库。 它由各个部分组成: index :索引和查找结构 stats :统计结构 sync :事务系统的同步原语 table :由事务算法支持的各种...
  • JBoss 企业应用平台和 JBoss 数据网格演示 添加一名作者级别:中级技术:CDI、jQuery、JAX-RS、Infinispan HotRod 简介: datagrid-demo-app展示了 JBoss DataGrid 如何使用服务器内存而不是数据库来存储、删除、...
  • 分布式内存网格Hazelcast源码导读

    万次阅读 2016-06-01 08:09:34
    map操作默认备份一份数据且是同步的,异步的默认为0.异步备份不会阻塞操作。备份的operation是Backup,它的run会执行PutOperation的run方法,即把数据放到缓存中并修改版本,这里的run不会再执行复制操作。    ...
  • ,一个内存中的数据网格,通常部署在进程中,即一个应用程序嵌入了一个在同一个JVM中运行的hazelcast节点。 还支持运行一组专用的 Hazelcast 服务器实例,其中应用程序通过 Hazelcast 的 . 我工作的公司选择了后一个...
  • 下边是它的宣传内容:hazelcast是一个开放源码集群和高度可扩展的数据分发平台,这是为Java:1. 快如闪电;数以千计的运算/秒。2. 故障安全;崩溃后没有丢失数据。3. 作为新服务器的动态调整 。4. 超级简单的使用 ,...
  • 自动范围重新网格化(默认情况下,它使用第一个原始文件中主通道的范围,请参见下面的MAX_RANGE_SRC选项)。 SV处理和重新Dask通道是并行完成的(使用Dask的延迟)。 如果输出文件存在,则从上次ping_time自动恢复...
  • 三角网格数据结构

    万次阅读 2016-05-17 01:02:25
     三角网格是多边形网格的一种,多边形网格又被称为“Mesh”,是计算机图形学中用于为各种不规则物体建立模型的一种数据结构。现实世界中的物体表面直观上看都是由曲面构成的;而在计算机世界中,由于只能用离散的...
  • Ignite 数据网格快速学习(二)

    千次阅读 2017-07-13 17:03:44
    1. IgniteDataStream数据

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,391
精华内容 16,156
关键字:

内存数据网格