английский | 简体中文
Ⅰ. Знакомство с zfoo
- Чрезвычайно быстрый, асинхронный дизайн актеров, без блокировок, универсальная платформа RPC, встроенная поддержка GraalVM.
- Высокая масштабируемость, развертывание на одном сервере, развертывание микросервисов, развертывание кластера, развертывание шлюза.
- Может использоваться как фреймворк игрового сервера или фреймворк сервера веб-сайта.
- Протокол zfoo поддерживает C++ Rust Java/Kotlin/Scala JavaScript/TypeScript/ES C# Go Php Ruby Lua GDScript Python Dart Swift
Идеальный процесс разработки работы, комплексное онлайн-решение
- Spring-проекты, распределенные проекты, контейнерные проекты, горячее обновление кода без простоя, горячая замена
- Конфигурация Excel json csv автоматически сопоставляется и анализируется, онлайн-хранилище конфигурации с возможностью горячей замены
- Платформа автоматического сопоставления для формы MongoDB
- Событие в автобусе
- Планировщик временных задач
- Процессор, память, жесткий диск, мониторинг сети встроен в программу, монитор не требует кода и дополнительных инструментов.
Ⅱ. Кто использует этот проект
- Проекты с чрезвычайно высокими требованиями к производительности, такие как платформы веб-сайтов и игровых серверов, один сервер, глобальный сервер, чат, система обмена мгновенными сообщениями, push-уведомления в реальном времени.
- Такие проекты, как экономия, разработка, развертывание, эксплуатация и затраты на техническое обслуживание.
- В качестве внутренней инфраструктуры для Godot, Unity, Cocos, Webgl, H5 . Сетевой протокол поддерживает tcp udp websocket http.
- Сохраняйте простоту и глупость, простую конфигурацию, легкий код
Ⅲ. Зависимость Maven
- Требования к среде JDK 17+ , поддержка OpenJDK , Oracle JDK и встроенный GraalVM.
<dependency>
<groupId>com.zfoo</groupId>
<artifactId>boot</artifactId>
<version>4.0.0</version>
</dependency>
- Если вы не хотите зависеть от всех модулей zfoo, вам нужно выбрать только один из них.
<dependency>
<groupId>com.zfoo</groupId>
<artifactId>protocol</artifactId>
<version>4.0.0</version>
</dependency>
Ⅳ. Учебники
- zfoo SDK csharp и lua для Unity и Godot
- zfoo SDK машинопись Javascript Cocos Web H5
- zfoo SDK gdscript для Godot
- Tank-Game-Server Онлайн-игра《Бой танков》, для новичков, сложность 2 звезды
- птица-годо птица и птица,при поддержке Godot
- Часто задаваемые вопросы,В тестовой папке каждого каталога проекта есть стандартный демонстрационный дисплей и инструкции, которые можно запустить напрямую.
Ⅴ. Использование
1. Сериализация и десериализация максимальной производительности протокола.
// 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);
2. Платформа RPC с максимальной производительностью, поддерживает TCP 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
);
3. Код горячего обновления горячей замены, нет необходимости останавливать сервер, не требуется дополнительная настройка, всего одна строка кода для запуска горячего обновления.
// Pass in the class file that needs to be updated
HotSwapUtils.hotswapClass(bytes);
4. Платформа автоматического сопоставления orm на основе mongodb
// 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);
5. событие использует шаблон проектирования наблюдателя, отделяет разные модули и повышает качество кода
// 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.post(MyNoticeEvent.valueOf("My event"));
6. Структура планирования планировщика на основе выражения Cron
@Scheduler(cron = "0/1 * * * * ?")
public void cronSchedulerPerSecond() {
// do something
}
7. Хранение Excel в системе автоматического сопоставления классов, вам нужно только определить класс, соответствующий Excel, и напрямую проанализировать Excel.
@Storage
public class StudentResource {
@Id
private int id;
@Index
private String name;
private int age;
}
Ⅵ. Зафиксировать спецификацию?
- Люди, которым нравится этот проект, могут поддерживать его вместе и обращать внимание на следующие характеристики при отправке кода.
- Форматы кода используют форматирование IntelliJ Idea по умолчанию.
- обычный-changelog-metahub
Ⅶ. Лицензия
zfoo использует лицензию Apache версии 2.0