NitWikit/docs/跨服端/概览.md
Radiation-pi bb27792dad
Update 概览.md
没写完困了,来个续写的
2024-05-02 14:57:14 +08:00

52 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
sidebar_position: 1
---
# 什么是跨服端?
简单的来说就是将多个服务器连成一个整体(比如你经常看到的某些生存一区, 生存二区), 玩家可以自由选择到哪个服务器, 而不用退出重连,
不同服务器之间可以通过跨服同步比如HuskSync)和数据库同步数据, 平时常听到的群组服也是一个意思. 跨服通常的实现方法是:
一个反向代理端(如velocity/bungeecord)和多个子服务器(如paper/purpur/leaf等). 玩家只需要连接到反向代理端即可让反向代理端和子服务器联系, 最后把玩家送到对应的服务器.
# 为什么需要代理端?
1. MC 是个单核心游戏, 玩家数量在超过50-100后几乎任何核心都无法保证完全流畅(Folia除外), 而使用多个服务器则可以充分利用多核心优势, 大服务器必备;
2. 对多个服务器, 玩家需要退出重新进入, 且数据不能共享. 仅仅只是开两个服务器无法产生有效交互. 所以需要跨服端对服务器进行切换和交互的完善;
3. 对单个服务器, 在内存有一点点富裕的情况下(通常不到1gb), 仍推荐使用代理端, 服务端对于反假人攻击的性能不如代理端, 如果你被攻击了, 更换成代理端再说;
4. 有些插件是代理端才能安装的, 而在 bukkit 系下可能不稳定(如[Multilogin](https://github.com/CaaMoe/MultiLogin)).
# 怎么做跨服端?
1. 开启至少两个子服务端(这不废话吗), 将**子服务端**按照Bungeecord/Velocity的要求打开对应的配置:
无论如何, 先把 server.properties 中的 network-compression-threshold项设置为-1(这个值意味着子服务器不会对数据进行压缩, 而由代理端压缩, 这在一定程度上也缓解了子服务器的压力)
对于 bungeecord/waterfall:
1. 在bukkit.yml, 将connection-throttle设置为-1以免 BungeeCord 连接到下游服务端时因尝试多次而连接失败)
2. 如果在 BungeeCord 启用了 ip_forward, 那么请在 spigot.yml , 将settings.bungeecord设置为true
对于velocity:
1. 如果您将 player-info-forwarding-mode 设置为了 modern ,则请前往 paper.yml将 settings.velocity-support.enabled 设置为true并将 settings.velocity-support.secret 设置为您在 velocity.toml 中 forwarding-secret 项设置的密钥
2. 将 settings.velocity-support.online-mode 设置为您在 velocity.toml 中设置的 online-mode 值.
2. 下载并配置代理端:
对于 bungeecord/waterfall
**TODO 困了明天写**
## 安装数据库
你都跨服了, 估计会有多端数据同步的需求吧?
看 [数据库相关](/docs/扩展阅读/数据库相关.md)
一般需要安装两个数据库, MySQL和Redis, MySQL 用于存储重要信息, 比如账号密码, 经济, 权限 Redis 用于快速跨服同步