- 博客(8)
- 资源 (12)
- 收藏
- 关注
原创 Java游戏服务器7(课程总结)
Java: 内存管理基本不用管。死板,但是不华丽花哨。C++写宏定义之类的,每个人写的,看不懂。Java则是一个统一的标准,容易协作。js的也是每个人风格不一样,就会导致看不懂。处理业务: 千万不要在线程之间跳来跳去。 那么IO实在是没有办法了,因为不能再主线程中做,所以只能在跳出IO线程。在IO线程里面处理逻辑,基本上都能定位到代码。多线程并发处理业务逻辑,基本就无解了,是很麻烦的。看病去了,先去拍片子,回来后,再次回到队尾排队。回到主线程时,需要知道之前是哪个IO线程..
2021-02-25 00:15:02 184
原创 Java游戏服务器8:分布式游戏日志处理: Filebeat(搜集日志到ES) + ES + Kibana(从es捞出来日志,前端的形式展现出来)
问题:用户登陆1服有日志,登陆2服也有日志,需要跨服务器。之前log4j+socket,但是很麻烦目标:通过一个简单的管理界面,管理所有服务器的日志。从elk官网上下载filebeat,修改下配置文件,告诉es和kibana在哪里在kibana上可以捞到所有的日志2)Filebeat到ELK下载...
2021-02-25 00:13:54 266
原创 Java游戏服务器9:ansible+jenkins: 集群服务器线上部署
1)部署jar包的shell脚本指定了最大的堆内存: 2G2)用PowerShell远程登录发布服务器远程登录的原理是:配置了ssh免密登录。3)免密登录配置(以机器A座位发布机器,元和才能登录BC为例子)在A中生成公钥在B机器上查看公钥把A中生成的公钥粘贴到B机器上4)playbook通过配置yaml的方式自动化部署脚本运行...
2021-02-24 11:03:04 258
原创 我眼中的比较通用的任务处理的并发模型: 银行排队处理客户业务
1)并发的线程模型有很多种,比如:skynet的actor模型,但是经过深入的思考,发现还是netty这种无锁化设计是最适合逻辑组织,也是最简单的。2)代码就是人生,转化到现实中,那么就是银行的排队系统:8个窗口(8核的机器),那么来了100个客户端,那么我并发就是同时处理8个任务,让100个客户手中都拿一个号码:0~99,0号由窗口0处理,1号由窗口1处理... 这样客户足够多,那么8个窗口都在处理客户业务,都没有闲下来。这就是相当于充分利用了多个CPU核心。3)虽然理论上比actor损失了一
2021-02-20 14:32:54 248 2
原创 Java游戏开发6(RocketMQ+Redis将排行榜功能独立出来)
1)排行榜的需求: 在未来扩展功能,修改代码,则需要重启服务器。 事故: 到点了, 没有发放奖励。 修复辅助业务的代码,不影响主业务。2)架构 Redis 游戏服务器 排行榜进程 RocketMQ3)游戏服务器是生产者,往MQ中扔; 排行榜从MQ中取出,然后计算结果,扔到Redis; 游...
2021-02-07 00:16:05 379
原创 Java游戏服务器5
来自谷歌的面试题: 死神杀人。 没有计划,随便猜一个; A计划: 50~75%的概率; 99.5%的概率生存--》但是也可能全都死;1)单线程方案 单线程? 不会慢么? 解决慢,要比教会所有人跨线程写逻辑简单; 架构师的工作是取舍和折中,不要炫技; 项目框架越简单,适用性就越广; 可以出错,但是错误不要向下传递; 2)游戏的单线程方案 问题的提出: A和B都打C,那么可能引起死锁。 加锁的...
2021-02-06 20:06:20 365 1
原创 Java游戏服务器4
1)消息识别器: 根据消息号,创建一个Builder。2)javassist:动态修改字节码。==》用于ormtest 原生反射很慢,那我可以用javaassist来加速 3)一些框架没有实现类,是怎么实现出来的。4)多线程与IO5)先讲解移动。 攻击的话,就是涉及到多线程的问题。6)A和B同时攻击C时,A和B 分别在自己的线程,因此有并发访问安全的问题。7)多个线程操作同一份数据,数据不一致的问题。解决方案 (1)加锁 synchroniz...
2021-02-04 21:34:30 203 1
原创 1.jps 和 jstack定位死锁 2.明明安装的jdk是64位,却提示32位的错误 3.查询指定线程堆栈信息 4.top和jps都可以拿到进程号
1)jps获取进程号 然后用jstack查看线程信息2)根据进程号输出信息jstack不能使用的问题,改为11后即可用了使用,可以看到有死锁
2021-02-04 00:12:48 258
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人