12306铁路售票系统核心开源中间件Geode介绍
2015-04-30 00:00
363 查看
摘要: 12306铁路售票系统核心开源中间件Geode介绍
Geode是一个提供实时且高一致性的分布式数据管理平台,典型案例是中国铁路12306售票系统使用Geode管理10个集群节点,在内存中管理2T的热点数据和10个高可用弹性规模的后备节点。
启动locator和服务器:
创建区域region:
编写一个客户端:
编译运行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是一个提供实时且高一致性的分布式数据管理平台,典型案例是中国铁路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 |
$ cd gemfire-assembly/build/install/geode $ ./bin/gfsh gfsh> start locator --name=locator gfsh> start server --name=server |
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(); } } |
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之外提供了第三个选择,这三个产品都是基于分布式内存的开源产品。
相关文章推荐
- 12306铁路售票系统核心开源中间件Geode介绍
- 12306铁路售票系统核心开源中间件Geode介绍
- 阿里研发:核心系统--中间件--阿里云--yunOS介绍
- 几个开源日志分析系统介绍
- 从技术上分析铁路售票系统
- 免费开源PHP商城系统介绍
- 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(四)服务端介绍
- grafana 开源图标系统 & InfluxDB 介绍。
- 深入理解开源数据库中间件 Vitess:核心特性以及如何进行数据存储的堆叠
- Spring Cloud版——电影售票系统<五>Hystrix使用消息中间件RabbitMQ收集数据
- 如果你是来12306系架,你如何实现? ——关于构建安全、稳定、高吞吐量的火车票网络售票系统几个方面(1)前引
- 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(五)客户端介绍
- .NET开源高性能Socket通信中间件Helios介绍及演示
- 跟我学习dubbo-消息中间件在分布式系统中的作用介绍(8)
- 中小银行核心系统介绍
- P2P的流媒体开源系统介绍----peercast,myseelite,p2pcenter
- 一些开源的统计机器翻译系统简要介绍
- 深入理解开源数据库中间件 Vitess:核心特性以及如何进行数据存储的堆叠
- Slickflow.NET 开源工作流引擎基础介绍(二) -- 引擎组件和业务系统的集成
- My35.net:外贸B2C常用开源系统介绍