- 浏览: 154496 次
- 性别:
- 来自: 布尼塔尼亚
最新评论
-
aa87963014:
iTarget 写道弄清楚“事务”和“事物”打错字, 统一为事 ...
现在的数据库系统是否还需要事务? -
iTarget:
弄清楚“事务”和“事物”
现在的数据库系统是否还需要事务? -
aa87963014:
ipconfig1 写道 我现在也遇到这样的问题,当缓存的数据 ...
spring cache 拓展 -
aa87963014:
xcw931924821 写道楼主现在实现了吗?可以查看我的 ...
spring cache 拓展 -
xcw931924821:
楼主现在实现了吗?
spring cache 拓展
文章列表
大概知道分布式架构怎么搭建了
- 博客分类:
- 分布式
以前一直都没接触过这块,也没这种需求。有人问我如果有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处理都会围绕这个字段来处理
分库的字段都必 ...
MD5方法应该指定编码格式
- 博客分类:
- 编码
否则,在跨平台的MD5值会有不一致的情况出现。
例如:
win: (MD5)(中国)
linux:(MD5)(中国)
MD5的值会不一致。
在MD5的时候一般加上一个常量简单的加密下。
hibernate、ibatis、freyja的价值
- 博客分类:
- 无聊
hibernate:面向对象查询语言 HQLibatis:集中管理SQL+动态SQLfreyja:缓存freyja开始于一个游戏项目,因为本身没有游戏经验,把之前的那一套带进了游戏,结果很不理想。观察的一段时间之后,我发现目前对java的一些框架有这么一个 ...
让报表完蛋去,超简单的方法完成任务
- 博客分类:
- 懒人的想法你不懂
代价总是会有的,不是开发快就是效率低。如果你在收到类似于这类任务
本页显示所有等级段内的人数
等级
h府
g房
f场
e场
d场
freyja最重要的一个功能完成
- 博客分类:
- freyja-jdbc
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
在序列化的时候,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操作 ...
java服务器无缝更新代码
- 博客分类:
- tomcat
以前也玩过一下下tomcat集群,通过tomcat集群的方式关闭一个tomcat--》替换代码--》启动--》关闭另外一个--》替换代码--》启动
不知道这样行不行得通。
理论上是不错的,但是tomcat集群的缺点是什么?对服务器的影响有多大呢??
tomcat无法shutdown
- 博客分类:
- tomcat
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);& ...
如何最大化利用缓存
- 博客分类:
- freyja-jdbc
在查询缓存里面,我这么处理一条查询sql:
select o from table where x
重点是 o 和 x
o是查询结果,x是查询条件
查询结果不重要,查询条件需要判断你能否处理得了查询条件。
目前,查询条件中带函数的sqlfreyja处理 ...