RunOne
tip
在部署方面,ionet 支持多服单进程的方式部署,也支持多服多进程多机器的方式部署,在部署方式上可以随意的切换而不需要更改代码。 日常中我们可以按照单体思维开发,到了生产可以选择性的使用多进程的方式部署。
介绍
RunOne 是一个启动器,可用于启动对外服、逻辑服、CenterServer。
本篇介绍如何在一个进程中同时启动对外服和逻辑服。
- code 6,创建,并设置对外服。
- code 7,创建,并设置逻辑服。
- code 8,启动。
final class OneApplication {
static void main() {
...
new RunOne()
.setAeron(aeron)
.enableCenterServer()
.setExternalServer(ofExternalServer())
.setLogicServerList(listLogic())
.startup();
}
static ExternalServer ofExternalServer() {
var builder = ExternalMapper.builder(ExternalGlobalConfig.externalPort);
builder.setJoinEnum(ExternalJoinEnum.WEBSOCKET);
return builder.build();
}
static List<LogicServer> listLogic() {
return List.of(
new HallLogicServer()
, new RoomLogicServer()
);
}
}
CenterServer
CenterServer 是一个类似注册中心的服务,在整个架构中只能启动一个。 如果你启动了多个进程,也只能有一个注册中心。
- code 5: 启动注册中心。
final class OneApplication {
static void main() {
new RunOne()
...
.enableCenterServer()
.startup();
}
}
Aeron
Aeron 是网络通信框架,用于内部网络通信的支持。
关于 Aeron 的优点可阅读
final class OneApplication {
static void main() {
var aeron = new AeronLifecycleManager().getAeron();
new RunOne()
...
.setAeron(aeron)
.startup();
}
}
关于 Aeron、MediaDriver 相关内容,请阅读相关库的文档。
public class AeronLifecycleManager {
...
private MediaDriver mediaDriver;
private Aeron aeron;
public Aeron getAeron() {
return aeron;
}
}
Example Source Code
see https://github.com/iohao/ionet-examples
path : ionet-cookbook-code
- OneApplication