12306铁路售票系统核心开源中间件Geode介绍

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

Home · project-geode/docs Wiki · GitHub

Geode为用户在Redis Cluster和Hazelcast之外提供了第三个选择,这三个产品都是基于分布式内存的开源产品。

时间: 2024-10-18 09:14:30

12306铁路售票系统核心开源中间件Geode介绍的相关文章

[转]基于C#的开源GIS项目介绍之SharpMap篇

我是一个刚毕业的GIS本科毕业生,目前在杭州从事GIS软件应用开发.在项目开发中总感觉自己的编程水平还不够,于是想找些开源GIS小项目来研究研究,借以提高自己的编程能力和项目开发能力.在网上搜了一下“GIS开源”发现还不少,下面是一个介绍GIS开源项目的链接: http://www.yuanma.org/data/2008/0526/article_3048.htm 里面介绍了基于各种编程语言的GIS开源项目,并列出了各自的特点和官网链接. 由于在学校时候学的一直都是C#和Visual Stud

在数据库上实现类似铁路售票锁票功能

要实现铁路售票那样的效果,如果有票查询到就锁定票,如果客人不购买再将票放回票池,这样可以保证前来买票的旅客只要查询到有票就一定能够买到票.我们可以通过给数据库增加一个锁定的标志字段来完成,但这里我们可以试试数据库本身的功能能否实现这个需求. 首先想到的是事务,如果对一个表开始更新以后,那么另外一个会话查询这个标的时候,会等待前一个更新数据的会话释放事务,这是因为普通的SQL读操作内部其实使用了“已提交读”的事务隔离级别,可以保证数据的准确性.但是这不符合我们的需求,我们希望另外一个查询会话能够很

多线程- 铁路售票学习

/** * 需求:铁路售票,一共100张,通过四个窗口卖完. */ public static void main(String[] args) { new Ticket().start(); new Ticket().start(); new Ticket().start(); new Ticket().start(); } } class Ticket extends Thread { private static int ticket = 100; //private static Obj

Django对中间件的调用思想、csrf中间件详细介绍、Django settings源码剖析、Django的Auth模块

目录 使用Django对中间件的调用思想完成自己的功能 功能要求 importlib模块介绍 功能的实现 csrf中间件详细介绍 跨站请求伪造 Django csrf中间件 form表单 ajax csrf相关装饰器 在CBV上加csrf装饰器 Django settings源码剖析及模仿使用 Django settings源码剖析 查看内部配置文件 模仿使用 Auth模块 auth简介 auth模块常用方法 创建用户 校验用户名和密码 保存用户登录状态 判断当前用户是否登录 校验原密码 修改密

.NET开源高性能Socket通信中间件Helios介绍及演示

一:Helios是什么 Helios是一套高性能的Socket通信中间件,使用C#编写.Helios的开发受到Netty的启发,使用非阻塞的事件驱动模型架构来实现高并发高吞吐量.Helios为我们大大的简化了Socket编程,它已经为我们处理好了高并发情况下的解包,粘包,buffer管理等等. GitHub:https://github.com/helios-io/helios/ 二:Helios的特点 1.Powerful APIs Takes the complexity out of so

【转】apache开源项目的介绍

Jakarta项目是ASF(The Apache Software Foundation)的一部分.ASF是一个非赢利组织,她鼓励基于开放的软件许可下进行合作.注重实效的开发,并提供各个领域的高质量软件,她涉及到Http服务器,编译工具,类库,开发架构,服务器端Java技术,J2EE容器,数据库工具,日志工具,XML解析等等诸多领域.ASF提供的java项目有一部分在Jakarta中,还有一些成为独立的诸如Tomcat的项目,Jakarta项目则提供了多种多样开源的java解决通用方案. 先介绍

Android字符串格式化开源库phrase介绍

在上一篇博客Android通过String.format格式化(动态改变)字符串资源的显示内容中介绍了通过String.format来格式化string.xml文件中的字符串,本文介绍一个可以实现同样功能的开源库phrase,相比于String.format,通过phrase格式化字符串代码更具可读性. 一.phrase项目介绍: 1.源码:phrase项目的源代码很简单,里面总共只有一个类:Phrase.java,代码如下: /* * Copyright (C) 2013 Square, In

ActiveMQ:JMS开源框架入门介绍

介绍基本的JMS概念与开源的JMS框架ActiveMQ应用,内容涵盖一下几点: 基本的JMS概念 JMS的消息模式 介绍ActiveMQ 一个基于ActiveMQ的JMS例子程序 一:JMS基本概念 1. JMS的目标 为企业级的应用提供一种智能的消息系统,JMS定义了一整套的企业级的消息概念与工具,尽可能最小化的Java语言概念去构建最大化企业消息应用.统一已经存在的企业级消息系统功能. 2. 提供者 JMS提供者是指那些完全完成JMS功能与管理功能的JMS消息厂商,理论上JMS提供者完成.

Android-- 汉字转拼音开源工具包Jpinyin介绍

最近要实现一个根据词语得到词语对应拼音的功能,找到了Jpinyin这个开源工具包,使用下来发现它非常强大,完全满足我的需求,下面对它做一个简单的介绍,希望能够帮助到有需要的朋友.  一.项目介绍: JPinyin是一个汉字转拼音的Java开源类库,在PinYin4j的功能基础上做了一些改进. [JPinyin主要特性]1.准确.完善的字库:        Unicode编码从4E00-9FA5范围及3007(〇)的20903个汉字中,JPinyin能转换除46个异体字(异体字不存在标准拼音)之外