跳到主要内容

--- 逻辑服介绍 ---

无锁异步化、事件驱动的架构设计;真轻量级,无需依赖任何第三方中间件就能搭建出一个分布式的网络通信服务器。

自带负载均衡、分布式支持、可动态增减机器。

名称扩展方式职责
ExternalServer分布式对外服的职责是与用户连接、交互
LogicServer分布式逻辑服的职责是处理具体业务逻辑

ionet


从架构简图中,我们知道了整体架构由对外服和逻辑服组成,两者既可相互独立,又可相互融合。

逻辑服在架构图位置的右边部分,LogicServer。

介绍

逻辑服的职责是处理具体的业务逻辑,也就是我们编写的 action。

如何安装

如果你是初次体验或想快速了解框架的,在 pom.xml 添加如下内容,run-one 已经包含了对外服和逻辑服。

pom.xml
<dependency>
<groupId>com.iohao.net</groupId>
<artifactId>run-one</artifactId>
<version>${ionet.version}</version>
</dependency>

通常在实际开发中,比较推荐的做法中单独为逻辑服创建一个模块,并在 pom.xml 中添加如下内容

see https://central.sonatype.com/artifact/com.iohao.net/net-logic-server

pom.xml
<dependency>
<groupId>com.iohao.net</groupId>
<artifactId>net-logic-server</artifactId>
<version>${ionet.version}</version>
</dependency>

创建逻辑服

逻辑服需要实现 LogicServer 接口 , 有 2 个方法需要实现

  1. settingBarSkeletonBuilder,设置当前逻辑服的业务框架
  2. settingServerBuilder,设置当前逻辑服的信息。

  • code 5,扫描 action 类所在包。 内部会扫描当前类路径和子包路径下的所有类,无论有多少个 action 类,只需要配置任意一个类就行。
  • code 7,添加控制台输出插件。
  • code 12,设置逻辑服名称。
public class DemoLogicServer implements LogicServer {
@Override
public void settingBarSkeletonBuilder(BarSkeletonBuilder builder) {
// Scan the package where the action classes are located
builder.scanActionPackage(DemoAction.class);
// Add console output plugin
builder.addInOut(new DebugInOut());
}

@Override
public void settingServerBuilder(ServerBuilder builder) {
builder.setName("DemoLogicServer");
}
}

startupSuccess

逻辑服启动成功后会执行 startupSuccess 方法,开发者可以按需重写该方法,比如

public class DemoLogicServer implements LogicServer {
...
@Override
public void startupSuccess(BarSkeleton barSkeleton) { {
// Server server = barSkeleton.server;
// EventBus eventBus = barSkeleton.eventBus;
}
}

启动

  • code 5: 设置逻辑服
  • code 10: 创建需要启动的逻辑服。
final class TestOneApplication {
static void main() {
new RunOne()
...
.setLogicServerList(listLogic())
.startup();
}

static List<LogicServer> listLogic() {
return List.of(new DemoLogicServer());
}
}

小结

逻辑服的业务逻辑是由业务框架来处理的,所以我们只需要关注 settingBarSkeletonBuilder 方法。