`
aa87963014
  • 浏览: 154496 次
  • 性别: Icon_minigender_1
  • 来自: 布尼塔尼亚
社区版块
存档分类
最新评论
文章列表
以前一直都没接触过这块,也没这种需求。有人问我如果有1w+的在线玩家,1000W的用户量。你的系统会不会死。   老实说,也许3000的在线都会死。 因为之前的根本就没什么架构: 一个游戏服务器、一个数据库服务器、一个资源服务器(共用)。一个tomcat负责登录然后加载flash资源建立socket长连接(mina2)openamf负责提供flash调用接口,数据库mysql 没有集群、也没有读写分离。有一些缓存。   如果要支持N个玩家在线: 登录服务器集群(主要负责分配应用服务器地址) 应用服务器集群(主要负责为socket请求提供结果和聊天之类的通信,相当于分线) 数据服 ...
水平分库、分表一直都没去考虑。 如果要去实现那么大致的想法是表、库都和某个字段的值关联。 例如分库就根据userId去摸 1、2、3、4、5、6、7、8、9 个库。 并且建立1、2、3、4、5、6、7、8、9 个对应的数据源 datasource 在不请入原有的代码前提下,   select * from t_user where userid = 1;   那么根据userId = 1 得知这条sql会在db1的数据库中,那么分配datasource1 去执行查询   userid 则为关键字段,类似之前的Group,sql处理都会围绕这个字段来处理   分库的字段都必 ...

freyja更新

因为工作的关系好就没更新了。现在的版本越来越稳定了。   src:
否则,在跨平台的MD5值会有不一致的情况出现。   例如: win: (MD5)(中国) linux:(MD5)(中国)   MD5的值会不一致。     在MD5的时候一般加上一个常量简单的加密下。  
hibernate:面向对象查询语言 HQLibatis:集中管理SQL+动态SQLfreyja:缓存freyja开始于一个游戏项目,因为本身没有游戏经验,把之前的那一套带进了游戏,结果很不理想。观察的一段时间之后,我发现目前对java的一些框架有这么一个 ...
代价总是会有的,不是开发快就是效率低。如果你在收到类似于这类任务     本页显示所有等级段内的人数 等级 h府 g房 f场 e场 d场
freyja作为一个orm框架,除了结果集映射之外。另外一个核心功能是对缓存进行处理,当然不是像hibernate/mybatis那种低级处理。   本次添加的功能叫做 @Delay 延迟update。 一张表几十个字段大概有8成字段能够被注解为@Delay    这样一来,对于这些字段的update操作将不会发送sql update数据库。而在缓冲过期或者被提出或者缓存销毁的时候同步。应该能节省4-5成的update操作。由此能够大幅度提升程序处理速度。   对于不太依赖数据库联表查询的项目freyja能轻松提高程序性能,能够成为半个内存数据库了。这个功能还是帮助很大的   * ...
附件已经更新了最新的src,test项目和lib 还是一样前面有提供下载。 group 功能和批量save。 update之类的再补上。   group相当于一个索引。一个表只能有一个group 设为group的字段必须是唯一的。 例如 以User为核心,与User一对多的表都把uid 设置为group: @Group(isGroup=true) 这样能大幅减少维护缓存的开销。 -------------------   freyja 将引入另外一项能大幅提高服务器性能功能,与group不同。group相当于针对freyja的一种处理。 下面这个功能大家一定都在想办法提升性能的时 ...

openamf序列化bug

在序列化的时候,openamf居然想在这个地方做一个优化 if (storedObjects.containsKey(value)) {//175行 writeStoredObject(value); return; } storeObject(value); //另外一个方法 private void writeStoredObject(Object obj) throws IOException { if (log.isDebugEnabled()) log.debug("Writing object ref ...
久闻mybatis/ibatis大名今天终于爆发了,找了一堆mybatis的讨论。。。这部分大多是关乎sql写在xml之类的   看了下mybatis的高速缓存的讨论。。。这部分无不例外的在分享缓存的配置。。。包括缓存实现。。。缓存过期策略。。。   LRU。。。FIFO。。。   如果说在xml里面写sql。。并且在上一堆dtd描述。。并且声称这样便于dba维护sql。。可以直接把写好的sql copy到xml里面去。。可以统一管理。 好吧,这些都属于个人习惯,无所谓。 只不过我在想把这些sql变成方法,例如最简单的一个:   <select id=”getUserL ...
目前的freyja在维护缓存的时候是将表分为多个字段,每个字段负责维护与字段有关的缓存。 当字段update的时候去检测是否需要缓存失效。经过我对这些数据的分析,引入分组概念能加快维护缓存的效率。例如,大部分数据都是围绕用户产生的,User、Hero、Building 他们都是一对多关系,在这些表当中,大部分查询都是限于当前用户的数据查询。那么按userId分组将大大的减少检索的内容,从而提高维护缓存的效率。当然其他的表也可以根据自己的情况分组/不分组。另外也许还会采用single注解减少update操作,被single注解的表明当前字段不会出现在联表查询范围内。那么这个字段的update操作 ...
以前也玩过一下下tomcat集群,通过tomcat集群的方式关闭一个tomcat--》替换代码--》启动--》关闭另外一个--》替换代码--》启动   不知道这样行不行得通。   理论上是不错的,但是tomcat集群的缺点是什么?对服务器的影响有多大呢??

tomcat无法shutdown

tomcat无法shutdown,shutdown之后还有一些进程没有释放导致jvm还在活动(大概是这样)。   解决:程序中的线程设置为守护线程:setDaemon(true) 在servlet 中 destroy方法里面自己销毁线程   如果是spring则在bean后面配置 destroy-method="destroy"        目前知道  org.springframework.scheduling.quartz.SchedulerFactoryBean destroy无效(BUG?)   com.mysql.jdbc.Driver 不 ...
最后一个功能动态update完成,freyja还需要稳定性测试,并且检查疏漏的地方。   我对freyja的这套想法还是很满意的,cache就是几个map。不需要序列化。 执行update方法的时候维护缓存。 如何在当前方法里面知道是否开启了事物?如何知道几个方法是否在同一个事物里面? 我没有找到相关的API方法,但是根据同一个事物会共用一个连接来判断是否在同一个事物里面。 然后根据“事物缓存”来比较update了哪些字段。"List<String> updateColumn = MethodUtil.beanMapping(oldValue, value);& ...
在查询缓存里面,我这么处理一条查询sql:   select o from table where x   重点是 o 和 x   o是查询结果,x是查询条件   查询结果不重要,查询条件需要判断你能否处理得了查询条件。   目前,查询条件中带函数的sqlfreyja处理 ...
Global site tag (gtag.js) - Google Analytics