太阳集团tcy8722(中国)有限公司

WNMemDB内存数据库系统
发布时间:2021-03-18 11:17  发布作者:admin

产品/特性概述


1. 概述


内存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在内存中重新设计了体系结构,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,所以数据处理速度比传统数据库的数据处理速度要快很多。内存数据库的最大特点是其“主拷贝”或“工作版本”常驻内存,即活动事务只与实时内存数据库的内存拷贝打交道。在许多的数据库应用系统中,对数据的访问性能有很高的要求,一般都有很高的事务量,又要求有很低的事务响应延迟,而且对数据库的可靠性有很高的要求。可以说,先进的数据库应用程序越来越注重对内存的访问效率,高性能的数据库系统因而必须最大限度的利用处理器缓存,将可能被用到的数据缓存在多层次的缓存中。因此选择好的数据存放方案,改进数据分布的空间局部性,能够提高对缓存的利用率,提升性能。
WNMemDB 是一个位于应用集群和后端数据源之间的高性能、分布式的操作数据管理基础架构。它提供了低延迟、高吞吐量的数据共享和事件分发。WNMemDB 充分利用网络中的内存和磁盘资源,形成一个实时的数据网格。
WNMemDB 将所有操作数据压缩存储在内存里,以避免磁盘 I/O操作带来的延迟。集群中的节点可以线性扩展,通过添加节点来预见性地增加容量。万一发生故障,WNMemDB 集群提供自动失效转移功能,可转移到集群中的其它节点。WNMemDB 集群可通过广域网连接 (WAN) 来实施多站点、全球规模的灾难恢复部署。
WNMemDB 允许您使用对象查询语言 (OQL) 查询数据。可以用 Java 编写自定义的业务逻辑,操作自动被路由到保存相关数据的节点,从而实现分布式计算。可靠的异步数据库事件框架提供发布与订阅功能、用于支持回调函数以及持续查询等功能。触发器和事件通知在数据进入系统时提供实时反应能力。WNMemDB 支持复杂的用户自定义对象模型以及JSON 格式文档的存储。可通过 Java、C++ 和 C# 语言的客户端或REST 调用的方式进行访问。

2. 优势特性


· 部署方式灵活
WNMemDB 支持3种部署方式,用户可以根据实际的业务场景灵活选择。具体的部署方式可参考 “部署方案”章节。

· 高性能,低延时
WNMemDB 的所有数据都是存储在内存中,因此在读写时不存在磁盘的IO瓶颈。WNMemDB 底层的数据结构是Map,读写的时间复杂度平均能达到O(1),是所有数据结构中最快的。WNMemDB 内部网络通讯采用NIO模型。因此WNMemDB 能够提供高性能、低延时的服务。

· 更安全
WNMemDB 中的数据可以配置多个副本,用户可以根据数据的重要程度灵活配置副本数。WNMemDB 中的数据可以持久化到磁盘中永久保存,当服务器掉电重启或者故障时,数据也不会丢失。WNMemDB 提供了异步和同步的两种持久化方式,用户可以根据业务需求灵活选择。

· 更大的存储容量
WNMemDB 是提供了一套完整的、高效的内存管理机制,它支持堆外内存(off-heap),因此WNMemDB 单节点内存最大能支持到几百GB,在加上他的数据分区存储(partition)的特性,单个集群可承载TB级别的数据量。

· 集群管理可视化,集群监控可视化
WNMemDB 配备的有完善的管理平台,能够通过部署向导,按照提示就行集群搭建,所有配置都有最佳实践的推荐配置,因此整个搭建集群的过程非常简单。WNMemDB 的管理平台中还有对集群的实时监控以及监控状况的预警,运维人员能够更及时的了解集群状态,在集群发生故障时,也能够借住监控的历史数据进行问题分析定位。

产品功能


1. 基础功能


WNMemDB 作为一款内存数据库,它最基础的功能是提供数据存储服务以及查询服务。

· 数据存储
Region是WNMemDB 中的数据存储单元,它可以类比我们关系型数据库中的Table。它底层使用Map实现,因此存储数据时直接调用Put/PutAll API即可。
复制类型的Region
复制类型的region(replicate)的数据在每一个节点中都有一份。这种类型的Region适合存放一些基础数据,或者数据量不大的业务数据。
分区类型的Region
分区类型的region(partition)是按照一定的路由规则将数据均衡的分布在各个节点上。我们可以对分区类型的region指定副本数来满足数据高可用的需求,一般生成环境推荐设置2副本。WNMemDB 默认是根据key来对分区类型的region数据进行路由分布的,它也支持自定义路由字段,以及根据路由字段将数据分布在指定的节点上。

· 数据查询
Get查询
由于WNMemDB 底层的数据结构是Map,因此它最基本的查询方式是直接调用Get API,这也是性能最快的查询数据方式。
OQL查询
WNMemDB 也支持类sql语言的查询方式,即OQL查询(Object Query Language)。这种语法非常类似sql语句的写法,因此我们使用OQL查询,能够快速的完成业务逻辑的实现,并且WNMemDB 还支持创建索引来对OQL查询性能进行优化。
Function分布式计算
Function是WNMemDB 提供的一个接口,用来实现具体的业务逻辑。Function的业务逻辑代码会注册到集群中的每个节点上,在执行Function时,多个节点会并行计算,最后将结果汇总返回给client端。

Function执行逻辑图


2. 部署方案


Peer-to-Peer部署

点对点对等架构本身就是最简单的拓扑结构。每个缓存实例或成员直接与集群中的每个其他成员通信。此缓存配置主要是为需要在应用程序进程空间中嵌入缓存并参与集群的应用程序设计的。一个典型的例子是应用程序服务器集群,其中应用程序和缓存位于同一位置并共享相同的堆。

Client/Server部署

client/server拓扑是用于垂直扩展的模型,其中client端通常在应用程序进程空间中托管一小部分数据,并将其余部分委托给server端。与peer-to-peer架构本身相比,client/server架构提供了更好的数据隔离、更高的读取性能和更多的可伸缩性。如果数据分布会给网络带来非常大的负载,那么client/server架构通常会提供更好的性能。在任何client/server安装中,server端本身就是一个peer-to-peer系统,数据分布在服务器之间。client端系统有一个连接池,它使用该连接池与服务器和其他成员通信。客户端也可以包含本地缓存。

Multi-site部署

对于水平伸缩,您可以使用松耦合的多站点部署。对于多站点,多个系统之间是松耦合的,通常他们之间都是比较慢的跨地理区域的连接,比如与广域网WAN。这种拓扑提供了比单个系统的紧密耦合更好的性能,以及位置之间更大的独立性,以便在连接或远程站点不可用时,每个站点可以独立运行。在多站点安装中,每个站点都是peer-to-peer或client/server拓扑架构。

 

3. 服务架构




4. 推荐配置




典型应用案例


12306余票查询、订单查询

太阳集团tcy8722时代(北京)科技有限公司自2012年以来,与中国铁道科学研究院紧密合作,共同建设新一代客票系统。使用GemFire(WNMemDB商业版)集群支撑了余票查询、订单查询等核心业务。春运高峰期余票查询峰值请求 100 000 笔 /s、购票请求峰值 20 000 笔 /s。自上线以来,经受住了每年春运售票高峰的考验,运行平稳。

海关参数服务项目

海关总署原数据库集群在应对高并发及复杂查询(例如:模糊匹配、包含等)的时候会响应慢,用户等待时间过长、响应超时,严重影响了海关及其相关部门的工作效率,增加了运维人员的工作量,而使得系统的稳定性下降,同时一定程度上增加了DBA、架构师、研发的工作压力。为了提升响应速度,减少由Oracle所带来的影响,减少对其它部门的影响,提升工作效率,提升研发效率,和最重要的提升业务效率,海关迫切需要对Oracle的复杂查询进行加速。此加速系统即能加速查询响应,又能减少Oracle数据库的压力,使参数服务系统的响应和系统的稳定性都上一个台阶,我们命名为海关内存数据库系统。
通过Oracle与 WNMemDB内存数据库的结合,达到了为查询请求加速的目的,并且我们通过OGG方案,将Oracle中的数据准实时的同步到 WNMemDB中,保证了数据的一致性。海关参数系统在使用 WNMemDB改造之后,整体性能得到了提升,也缓解了Oracle数据库的压力,使得其他运行在Oracle上的业务更稳定。