rpc
rpc
JavaGameServer
java游戏服务器
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
rpc的一些思考(相互等待死锁)
但是在想想:游戏服之间通信:比如:2个玩家位于不同的服,serve1向server2请求的同时,server2也可能在请求server1,这种情况下:是否会死锁(相互等待)呢?想想redis中,我们不管是同步还是异步,从来没考虑过会出现死锁,这是因为: 我们无法再rpc中嵌套,redis也从而不会调用我们。用java这种有可能会耗尽线程池中线程(任务中开任务导致父任务无线程可执行)的语言,其实这个问题思考了很久。原创 2025-10-29 16:10:50 · 97 阅读 · 0 评论 -
skynet使用协作式协程解决rpc中的ABA问题
2)这样就 “死锁了”原创 2025-05-22 09:31:32 · 169 阅读 · 0 评论 -
rpc设计的再次思考20251215(以xdb为核心构建游戏框架)
思考:rpc的用途仅仅是用于进程间通信,如:游戏服和游戏服,Web服和游戏服,游戏服和战斗校验服。如果是本服的,则是线程间通信,比如:逻辑线程和地图服务在一个进程内这种开发方式,则另外指定线程间通信。原创 2024-12-15 11:50:46 · 572 阅读 · 0 评论 -
【推荐】业务单线程情况下的rpc线程模型
由于业务是单线程的,所以我们IO操作都要放到IO线程中。但是暴露的接口却是: 同步的类似于dubbo rpc的接口。原创 2024-12-06 09:46:05 · 128 阅读 · 0 评论 -
【推荐】(请求+在另外一个类中处理返回) 缺点:丢失了上下文
这个用的也很多,之前在rj和aos中用到过,这种看起来比较难以维护,主要是:由于框架是单线程服务器,但是:这种完全是无阻塞的,性能是最好的。原创 2024-11-22 16:48:17 · 129 阅读 · 0 评论 -
通过rmi实现远程rpc(可以认为java自带Dubbo RPC)
发现公司几个运行10年的游戏,用的竟然是rmi,而我只听说过dubbo 和 基于netty的rpc,于是就补充了下rmi。其次,是最近对于跨服的思考,如何避免回调。必须抛出RemoteException异常。必须实现:Serializable接口。2.基于java的序列化和反序列化。1.rmi可以看出来非常简单。游戏服之间的交互 //3.已解决粘包问题。原创 2024-03-19 15:25:18 · 452 阅读 · 0 评论 -
(推荐)【请求+返回+带回调】实现rpc通信
2.由于客户端直连的是游戏服,如果工会,匹配之类的服务是单独的服务的话,必然要进行游戏服到业务服之间的转发,我们是否需要再转发时单独定义Req和Res就是我们考虑到的需求。3.在vega项目中,我们选择了定义了内部协议的req和res,而不是像热江一样做了统一的封装,看起来麻烦了一点,但是实际上却是非常的清晰。1.无论什么类型的游戏,我们都会有rpc通信的需求。原创 2024-01-24 16:56:17 · 1167 阅读 · 0 评论 -
通用rpc通信技术
ServerInternalMsgParam // 基于Redisson的跨服通信。然后结合玩家的状态进行封装,在Param中包装了上下文。CrossMsgParam // 基于Netty的跨服通信。游戏中自己看了很多个源码了,也实践了不少,总结出了一个比较万能的模式,OnlineMsgParam // 登录授权后。线程池和消息队列,进行网络分发即可,这样子参数看起来很少。AccountMsgParam // 登录前。3.跨进程通信(也就是天然支持分布式了)原创 2023-09-27 11:43:52 · 102 阅读 · 0 评论 -
【redisson 发布订阅】实现rpc通信
pom.xml <dependencies> <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.11.1</version> </dependency>原创 2022-04-12 17:44:41 · 903 阅读 · 0 评论 -
【基于rabbitmq实现异步RPC框架】
1)rabbitmq配置https://www.cnblogs.com/wuzhiyuan/p/6845230.html启动:Administrator@Administrator MINGW64 /f/RabbitMQ/rabbitmq_server-3.6.9/sbin$ ./rabbitmq-plugins.bat enable rabbitmq_managementAdministrator@Administrator MINGW64 ~/Desktop$ net ...原创 2021-06-20 09:52:26 · 394 阅读 · 0 评论 -
【项目中使用过13种rpc封装方案及其api】
1.回调(唯一callbackId)原创 2024-01-05 09:32:15 · 807 阅读 · 0 评论 -
actor模型及其存在的问题 1.环路死锁(可通过重入解决) 2.多路死锁(较难解决)
GeekServer/Docs/1.Actor模型.md at main · leeveel/GeekServer (github.com)原创 2024-01-05 09:30:21 · 626 阅读 · 0 评论 -
【SpringBoot+dubbo+zk】实现服务之间rpc通信
3.Controller中使用某个Service时使用@Reference而不是@Autowired。CityServiceImpl.java // 这里我们让消费者也是生产者,我们也提供一些实现。0)前置准备,我们使用zk作为注册中心,先启动zk,也就是2181端口。2.@Service注解使用dubbo的,不是Spring的那个。就这么简单,每个服务既是生产者又是消费者!1)父工程pom.xml。原创 2024-01-04 17:15:36 · 775 阅读 · 1 评论 -
【redisson实现rpc】1.基于发布订阅的异步(redisson是一个broker) 2.同步
ISayHelloService.javapackage org.example.testrpc;public interface ISayHelloService { String sayHello(String name);}SayHelloService.javapackage org.example.testrpc;public class SayHelloService implements ISayHelloService { @Override .原创 2021-09-15 11:28:19 · 751 阅读 · 0 评论 -
【基于Netty实现仿dubbo rpc】1.动态代理的使用(TODO 需要缓存下) 2.不需要消息号用ClassName
1)2个rpc接口HelloNetty.javapackage org.example.protocol;public interface HelloNetty { String hello();}package org.example.protocol.impl;import org.example.protocol.HelloNetty;public class HelloNettyImpl implements HelloNetty { @Overrid原创 2022-02-19 17:47:19 · 1631 阅读 · 1 评论 -
(推荐)[高性能RPC实现基础之CompletableFuture]1.同步请求 2.异步请求 3.超时 4.异常
package org.example.testcf;import java.util.concurrent.*;import java.util.function.Supplier;public class Main { static ExecutorService es = Executors.newSingleThreadExecutor(); public static void main(String[] args) throws InterruptedExcepti.原创 2021-11-04 11:40:30 · 474 阅读 · 0 评论
分享