非常快速的企业服务器框架,可以在RPC,Web服务器框架,游戏服务器框架中使用。
#java #protobuf #kryo #netty

为什么是ZFOO协议?

  • 该协议当前支持C ++ C#GO Java JavaScript打字gdscript lua
  • 通用分布式服务器协议实现,其他语言中有实现,可以轻松 在其他平台上实现RPC,服务器和微服务
  • Java二进制序列化最快的自定义格式框架,序列化的字节最少,更安全和 兼容
  • 在单线程基准测试中,序列化和挑选序列化比Protobuf快50%,100%更快 比Kryo

。引入Zfooð©

  • 非常快,异步,演员设计模式,无锁设计,基于春季MVC
  • 的RPC框架
  • 最快的序列化和绝对序列化ï¼使用zfoo protocol作为网络协议
  • 高可伸缩性ï¼单个服务器部署,微服务部署,群集部署,网关部署
  • 可以用作游戏服务器框架或网站服务器框架。

完美的工作开发过程,完成在线解决方案

  • 春季项目,分布式项目,容器项目ï¼热更新代码没有 停机时间 hotswap
  • Excel JSON CSV配置自动映射并解析¼在线热门 配置 storage
  • Mongodb orm的自动化框架3
  • 活动巴士event
  • 时间任务安排scheduler
  • CPU,内存,硬盘,内置在程序中的网络监视无代码和额外工具 需要monitor

A…。谁使用这个项目

  • 具有极高性能要求的项目,例如网站和游戏服务器框架,单个服务器, 全球服务器,实时聊天,IM系统,实时推送
  • 诸如储蓄,开发,部署,操作和维护成本等项目
  • 作为godotï¼unityï¼的后端基础架构,可可emwebglï¼H5ï¼网络协议支持TCP UDP UDP WebSocket HTTP
  • Keep it Simple and Stupid¼简单配置,轻量级代码

•。教程

  • FAQï¼有标准的演示显示和每个项目目录的测试文件夹中的说明,
    可以直接运行

  • tank-game-server在线游戏the the the the the the the the the the the the the the tange fights friendly

    困难2星

  • godot-bird鸟和鸟鸟1⁄4°Ed godot

  • cocos-fivechess五棋¼使用可可作为客户

£。安装和使用

1.环境要求和安装

JDK 11+ï¼ OpenJDK Oracle JDK ï¼maven安装到本地存储库

If you do not have JDK 11+ installed, the quick installation method is to download directly 
from Project Structure, Platform Settings, SDKs in the upper right corner of Idea

2. protocol最快的序列化和避难所化

// zfoo protocol registration, can only be initialized once
ProtocolManager.initProtocol(Set.of(ComplexObject.class, ObjectA.class, ObjectB.class));

// serialization
ProtocolManager.write(byteBuf, complexObject);

// deserialization
var packet = ProtocolManager.read(byteBuf);

3. net最快的RPC框架,支持TCP UDP UDP WebSocket HTTP

// Service provider, only need to add an annotation to the method, the interface will be automatically registered
@PacketReceiver
public void atUserInfoAsk(Session session, UserInfoAsk ask) {
}

// Consumers, synchronously requesting remote service, will block the current thread
var userInfoAsk = UserInfoAsk.valueOf(userId);
var answer = NetContext.getCosumer().syncAsk(userInfoAsk, UserInfoAnswer.class, userId).packet();

// Consumers, asynchronously requesting remote service, and will still execute logic in the current thread after the asynchronous
NetContext.getCosumer()
                    .asyncAsk(userInfoAsk, UserInfoAnswer.class, userId)
                    .whenComplete(sm -> {
                        // do something
                    );

4. hotswap热更新代码,无需停止服务器,没有其他配置,只有一行代码即可开始热门更新

// Pass in the class file that needs to be updated
HotSwapUtils.hotswapClass(bytes);

5.基于mongodbï¼的orm自动映射框架辅助缓存是使用caffeine设计的,以完全释放数据库压力

// You don't need to write sql and any configuration yourself, define a table in the database directly through annotation definitions
@EntityCache
public class UserEntity implements IEntity<Long> {
    @Id
    private long id;
    private String name;
}

// update database data
entityCaches.update(userEntity);

6. event使用观察者设计模式,解开不同的模块并提高代码的质量

// To receive an event, you only need to add an annotation to the method and the method will be automatically listen for the event
@EventReceiver
public void onMyNoticeEvent(MyNoticeEvent event) {
    // do something
}

// fire an event
EventBus.submit(MyNoticeEvent.valueOf("My event"));

7.基于Cron表达的scheduler调度框架

@Scheduler(cron = "0/1 * * * * ?")
public void cronSchedulerPerSecond() {
    // do something
}


8. storage Excel到类自动映射框架,您只需要定义与Excel相对应的类,然后直接解析Excel

冷0冷1 Cold0

- 。提交规格ð

  • 欢迎喜欢这个项目的人一起维护这个项目,并注意以下内容 提交代码时的规格
  • 代码格式使用Intellij Idea的默认格式
  • conventional-changelog-metahub

。执照

Zfoo使用Apache License Version 2.0

JetBrains Logo (Main) logo