2019独角兽企业重金招聘Python工程师标准>>>

Geode是一个提供实时且高一致性的分布式数据管理平台,典型案例是中国铁路12306售票系统使用Geode管理10个集群节点,在内存中管理2T的热点数据和10个高可用弹性规模的后备节点。

Geode通过内存池 CPU 网络资源和可选本地磁盘跨多个进程来管理对象和行为,它使用动态复制和数据分区技术实现高可用性以及提高性能,保证高扩展性和容错性,除了是一个分布式数据容器,Geode还是一个内存in-memory内存数据管理系统提供可靠的异步事件通知和保证信息传递。

Geode作为一个极其成熟和强大的产品,其历史可以追溯到Smalltalk的第一个对象数据库:GemStone,Geode是第一次被部署在金融部门是作为华尔街交易平台的交易 低延迟数据引擎。如今有超过600个企业客户使用其实现高扩展的 24x7业务关键应用。典型案例是中国铁路售票系统。

主要概念和组件
缓存是在Geode分布式系统中描述节点的一个抽象。

在每个缓存中,你能定义数据区域region,数据区域是是类似于关系数据库中数据表的概念,以分布式风格作为name/value名称/值对来管理数据,一个可复制区域中存储的是分布式系统中每个缓存成员中数据的相同拷贝,一个分区区域是在缓存成员中传播数据,当系统配置以后,客户端应用能够根本不知道这些底层基础架构情况下访问区域中的被分布的数据,当数据改变时,你能定义监听者来接受通知,你能定义过期时间来删除区域中的过时数据。

Locator提供了服务发现和负载平衡的功能,你可以配置客户端使用一段Locator服务列表,而locator维持着动态服务成员列表,缺省情况下,Geode客户端和服务器使用端口40404广播发现彼此。

Geode有如下特性:
1. 综合冗余 复制和shared nothing的持久化架构,提供自动预防故障的高性能的传递。
2.横向扩展到数千万个缓存成员,使用多个缓存拓扑来满足不同企业需求缓存能够跨计算机分布。
3.异步和同步缓存更新传播
4.delta变化量传播能只在一个对象(delta)的新旧不同版本之间传播,而不是将整个对象进行传播,好处是显著降低了分布的开销。
5.可靠的异步事件通知,保证消息传递能实现定制的低延时的分布。
6.在没有附加硬件情况下,应用运行性能提高4到40倍。
7.数据敏感和实时商业智能,如果数据改变,你会立即能够看到改变。
8.集成Spring框架简化可扩展的事务企业应用。
9.JTA兼容事务支持
10.跨整个集群范围的配置能够持久或导出到其他集群
11.远程HTTP集群管理
12.REST API和激活REST应用开发
13.主版本滚动升级。

五分钟起步
从Pivotal获得源码,支持JDK1.7.75以上版本:

$ cd geode
$ ./gradlew build installDist

启动locator和服务器:

$ cd gemfire-assembly/build/install/geode
$ ./bin/gfsh
gfsh> start locator --name=locator
gfsh> start server --name=server

创建区域region:

gfsh> create region --name=region --type=REPLICATE

编写一个客户端:

import java.util.Map; import com.gemstone.gemfire.cache.Region; import com.gemstone.gemfire.cache.client.*; public class HelloWorld { public static void main(String[] args) throws Exception {ClientCache cache = new ClientCacheFactory().addPoolLocator("localhost", 10334).create();Region<String, String> region = cache.<String, String>createClientRegionFactory(ClientRegionShortcut.CACHING_PROXY).create("region");region.put("1", "Hello");region.put("2", "World"); for (Map.Entry<String, String>  entry : region.entrySet()) {System.out.format("key = %s, value = %s\n", entry.getKey(), entry.getValue());}cache.close();}
} 

编译运行HelloWorld.java,应该将gemfire-core-dependencies.jar放入classpath:
javac -cp /some/path/geode/gemfire-assembly/build/install/geode/lib/gemfire-core-dependencies.jar HelloWorld.java
java -cp .:/some/path/geode/gemfire-assembly/build/install/geode/lib/gemfire-core-dependencies.jar HelloWorld

转载于:https://my.oschina.net/pvpCC9IFwqz4/blog/406398

分布式内存数据库 Geode相关推荐

  1. 分布式内存数据库的CAP-BASE原理

    一.传统的关系型数据库遵循ACID规则: 事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性: 1.A (Atomicity) 原子性 原子性很容易理解,也就是说事务里的 ...

  2. memcache_engine + memcachedb = 高性能分布式内存数据库

    关键字: memcachedb memcachedb是一个由新浪网的开发人员开放出来的开源项目,给memcached分布式缓存服务器添加了Berkeley DB的持久化存储机制和异步主辅复制机制,让m ...

  3. H-Store:一种分布式内存数据库管理系统

    写在前面 本文主要是从学术而非商业数据库实践的角度来介绍分布式DBMS H-Store.H-Store是由Brown,MIT,CMU联合开发并在MIT的实验室成功部署实现的. H-Store的研究者对 ...

  4. 关于VoltDB--全球最快的分布式内存数据库

    十天前参加了VoltDB产品在线研讨会,并关注VoltDB实时内存数据库产品,今天收到VoltDB中国区市场负责人的VoltDB数据库产品试用邀请,按照VoltDB快速入门手册,进行了VoltDB的产 ...

  5. 科蓝软件收购韩国分布式内存数据库之大揭秘

    近日,各大媒体持续报道关于科蓝软件(股票代码:300663)对韩国知名内存数据库厂商SUNJE SOFT的收购.媒体评价科蓝软件此举将占据国产高端交易数据库领域的制高点,打破国外传统数据库产品的垄断, ...

  6. apache ignite 分布式内存数据库

    1 简介 ignite是分布式内存网格的一种实现,其基于java平台,具有可持久化,分布式事务,分布式计算等特点,此外还支持丰富的键值存储以及SQL语法(基于h2引擎),可以看成是一个分布式内存数据库 ...

  7. 纯java分布式内存数据库_高性能分布式内存数据库VoltDB介绍

    VoltDB数据库是一个分布式,可扩展,shared-nothing的内存数据库.使用JAVA 写的存储过程来定义事务.使用标准SQL访问数据,使用并行的单线程处理方式确保数据一致性,同时避免了传统数 ...

  8. 纯java分布式内存数据库_最新Java岗面试清单:分布式+Dubbo+线程+Redis+数据库+JVM+并发...

    最近可能有点闲的慌,没事就去找面试面经,整理了一波面试题.我大概是分成了Java基础.中级.高级,分布式,Spring架构,多线程,网络,MySQL,Redis缓存,JVM相关,调优,设计模式,算法与 ...

  9. 分布式内存数据库--Redis事务

    一. 事务: 与关系型数据库一样redis也支持事务.也就是可以一次执行多个命令,本质是一组命令的集合.一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,不许加塞. 二. 事务能 ...

最新文章

  1. eclipse导入Spring框架
  2. 【问题收录】Android Studio 2.2使用时出现问题总结
  3. Git Gitlab 使用指南之TortoiseGit
  4. Express全系列教程之(五):Express的中间件
  5. 基础笔试编程题(jz)
  6. Linux:Access time、 Modify time 、Change time 和 find 命令使用解析
  7. 查php源码授权后门,PHP授权系统+支持盗版入库+一键黑页后门注入+卡密授权
  8. amigo幸运字符什么意思_转载 | 史上最全 python 字符串操作指南
  9. node-7.2.1 already installed, it's just not linked
  10. pytroch中的Variable()介绍
  11. 计算机软件 退货,如何在在电脑收银系统中实现商品退货
  12. Java中this关键字的作用和用法
  13. python随机出100道加法题_python3 随机生成10以内的加法算术题
  14. 阿里云国际版ECS云服务器ping不通的原因分析
  15. 嘉兴 机器人仓库 菜鸟_揭秘菜鸟自动化仓库 机器人物联网+大数据(附视频)...
  16. 双光子荧光成像_为什么双光子成像如此重要?
  17. 使用Ultra Librarian生成Cadence Allegro的PCB封装库和OrCAD Capture CIS的原理图库
  18. 《读者》2005言论
  19. 树莓派新手入门:烧录系统、换源、基础配置、putty或vnc远程连接
  20. 期刊论文写作格式模板(推荐收藏)

热门文章

  1. 限制IP 访问 Oracle 的方法
  2. EXSI 连接硬件USB pass-through
  3. 如何在Objective C中声明Block?
  4. 在接触到服务器时破解密码、及改ssh端口
  5. 在 Swift 中使用闭包实现懒加载
  6. 集群 之 LVS + Keepalived
  7. eclipse删除perspective
  8. 咏南LINUX中间件
  9. 在pycharm中通过VCS快速提交代码
  10. Python使用QRCode模块生成二维码