[摘要]
Voldemort:高性能、高扩展性、不错的一致性Key-Value集群方案,目前被LinkIn使用,与Dynamo思想类似,参见http://project-voldemort.com
Objot:面向服务的轻量级web开发库,参见http://objot.com
[目标]
搭建一个WAP游戏开发框架,利用烂服务器集群提供高性能,尽量保证游戏数据的一致性,并可根据负载情况随时进行扩展,同时能够通过配置来调节各服务器利用率。
尽可能减少网络传输,单服务器既包含WEB也包含DB节点。
[技术选型]
1、游戏中不需要复杂的查询,因此抛弃了SQL数据库而使用Key-Value存储;通过对各种数据库的了解,发现Voldemort更适合,能保证目标。采用其Server Routing模式,不将WEB与DB在物理上划开。
2、Spring过于臃肿,故采用更加轻量级的Objot,同时Objot基于Java5,配置更简洁。
3、采用JSTL + JSP处理页面数据。
4、采用Tomcat作为WEB容器。
[实现](以单数据库节点为例)
1、在Servlet中启动Voldemort服务器
cluster.xml //Voldemort集群配置文件
<cluster>
<name>vortex</name>
<server>
<id>0</id>
<host>localhost</host>
<http-port>8081</http-port>
<socket-port>6666</socket-port>
<partitions>0, 1</partitions>
</server>
</cluster>
server.properties //Voldemort节点服务器配置
# The ID of *this* particular cluster node
node.id=0
max.threads=100
############### DB options ######################
#不需要HTTP服务,Server Routing Mode必须开启socket
http.enable=false
socket.enable=true
# 采用BDB存储
bdb.write.transactions=false
bdb.flush.transactions=false
bdb.cache.size=256M
#NIO connector settings.
enable.nio.connector=false
storage.configs=voldemort.store.bdb.BdbStorageConfiguration, voldemort.store.readonly.ReadOnlyStorageConfiguration
stores.xml //存储方式配置
<stores>
<store>
<name>vortex</name>
<persistence>bdb</persistence>
<routing>server</routing>
<replication-factor>1</replication-factor>
<required-reads>1</required-reads>
<required-writes>1</required-writes>
<key-serializer>
<type>identity</type>
</key-serializer>
<value-serializer>
<type>identity</type>
</value-serializer>
</store>
</stores>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
...
<servlet>
<servlet-name>vortex-servlet</servlet-name>
<servlet-class>vortex.VortexServlet</servlet-class>
<!-- Voldemort家目录:)-->
<init-param>
<param-name>voldemort-home</param-name>
<param-value>/home/nkadun/vortex/voldemort</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>vortex-servlet</servlet-name>
<url-pattern>/service/*</url-pattern>
</servlet-mapping>
...
</web-app>
VortexServlet.java
public class VortexServlet implements Servlet {
...
private final String VOLDEMORT_HOME_KEY = "voldemort-home";
private VoldemortServer server;
private StoreRepository respository;
private ServiceHandler handler;
@Override
public void destroy() {
logger.info("Shutdown voldemort server...");
if(server != null)
server.stop();
logger.info("Shutdown voldemort server successfully.");
}
@Override
public void init(ServletConfig c) throws ServletException {
config = c;
handler = new ServiceHandler();
try {
logger.info("Starting voldemort server...");
String voldemortHome = c.getInitParameter(VOLDEMORT_HOME_KEY);
server = new VoldemortServer(VoldemortConfig.loadFromVoldemortHome(voldemortHome));
//启动Voldemort服务器
server.start();
respository = ((StorageService)server.getService(ServiceType.STORAGE)).getStoreRepository();
logger.info("Voldemort server started.");
handler.init(respository);
}
catch(ConfigurationException e) {
logger.info("Error occurred:", e);
throw e;
}
catch(Exception e) {
logger.error("Error occurred:", e);
throw new ServletException(e);
}
}
@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
try {
String page = handler.handle(request, response);
forward(page, request, response);
}
catch(Exception e) {
throw new ServletException(e);
}
}
...
}
分享到:
相关推荐
voldemort,亚马逊发电机的开源克隆。.zip概述
只使用内存作缓存,不使用持久化。 启动时开启 jmx 6650 端口。
Voldemort 是一个分布式数据库,它是亚马逊 Dynamo 的开源克隆。 它自动在多个服务器上复制数据,并自动对它们进行分区,因此每个服务器只包含总数据的一个子集。 它提供了许多其他功能,例如可插拔序列化支持、数据...
Voldemort是指使用Voldemort来实现分布式系统的可扩展性。 Dynomite是指使用Dynomite来实现分布式系统的可扩展性。 Kai是指使用Kai来实现分布式系统的可扩展性。 应用篇: eBay 架构经验是指使用eBay的架构经验...
No Sql-RubiS框架的Voldemort实现
这个扩展用三个随机值之一代替网站中的Voldemort。 用“您不知道的人”,“他不愿透露姓名的人”或“黑暗之王”的随机选择替换伏地魔或伏地魔勋爵(包括所有格选项)。 支持语言:English (United States)
MongoDB 是一个高性能、开源、无模式的文档型数据库,它在许多场景下可用于替代传统的关系型数据库或键/值存储方式。MongoDB 使用 C++ 开发,不支持 SQL,但有自己功能强大的查询语法。MongoDB 使用 BSON 作为数据...
Derive the anagram, “I am Lord Voldemort” using linguistical sieves Plan your parents’ secure retirement with Monte Carlo simulation Save the sorceress Zatanna from a stabby death using palingrams ...
Yahoo 专门用于主流的 nosql 性能测试,java 编写,内集成 hbase,mongodb,cassandra,voldemort,redis。使用时注意需要将相应的数据库驱动复制到对应的数据库 lib 下面。
Voldemort271.github.io 您好,这将是我的主页。 我将链接我制作的所有程序。
Hank提供线性可伸缩性,无单点故障设计,力求紧凑的磁盘和网络表示,以及在受限环境(例如,数据与RAM的比率非常高(1000:1))中的一致性能。以及更多),并减少剩余磁盘空间。 汉克的灵感来自亚马逊的DynamoDB,...
种族主义者,这些人的可恶和丑陋都是一样的。神秘人的名字将不会再显示与此扩展名。 支持语言:Français
这种存储解决方案与传统的RDBMS有显著的区别,它们被称之为NoSQL。在NoSQL世界中有以下关键的成员,包括GoogleBigTable、HBase、HypertableAmazonDynamo、Voldemort、Cassendra、RiakRedisCouchDB、MongoDB。在过去...
1. 序 2. 思想篇 CAP 最终一致性 变体 BASE 其他 I/O的五分钟法则 不要删除数据 RAM是硬盘,硬盘是...Voldemort Dynomite Kai 未分类 Skynet Drizzle 比较 可扩展性 数据和查询模型 持久化设计 5. 应用篇 eBay 架构经验
越来越多的开发者开始关注搜索的实时性,比如twitter的信息或者新闻的搜索要求很高的时效性。 Zoie是linkedin支持的开源实时搜索引擎项目。 http://code.google.com/p/zoie/ 相比普通搜索引擎,zoie有很多特性: ...
与我联系, 以进行购买。 除了当前机制外,即将实施的另一种算法允许用户每月免费发送多达600个请求。 之后,可以根据自己的意愿购买付费订阅。 该程序将以不同的名称很快上市。 为了保护完整性并确保长期服务,将...
4 Voldemort 4 Dynomite 4 Kai 4 未分类 4 Skynet 4 Drizzle 4 比较 4 可扩展性 4 数据和查询模型 4 持久化设计 5 应用篇 5 eBay 架构经验 5 淘宝架构经验 5 Flickr架构经验 5 Twitter运维经验 5 运维经验 5 Metrics...
JayKreps是Linkedln的一名在线数据架构技术高管,其负责Linkedln开源项目,包括ApacheKafka、ApacheSamza、Voldemort以及Azkaban等项目。在日常工作中,JayKreps经常被问及有关Lambda架构的问题,为此他结合实际经验...