取舍点:跨平台、跨语言、热更新、性能/占用

通信

ZeroMQ

跨平台、跨语言的高性能异步消息传递库。支持通过各种传输(TCP、进程内、进程间IPC、组播、WebSocket 等)的常见消息传递模式(发布/订阅、请求/回复、客户端/服务器等),使进程间消息传递像线程间消息传递一样简单。

本地进程间通信最快速高效的办法是共享内存吗?:https://www.zhihu.com/question/376947069

WebRTC

目前延迟最低的实时通信协议,无需第三方库(调用时编写js即可)。适用于音视频通信。广泛用于直播、会议……音视频通话
先借助中间服务器做WebSocket连接,随后直接P2P传输(可能需要CDN加速)

通信双方在建立连接前需要交换信息,这也就是开头提到的 WebSocket 充当的角色:信令服务器,用于转发信息。而 WebRTC 不借助中间媒介 的意思是,在建立对等连接后,不需要借助第三方服务器中转,而是直接在两个实体(浏览器)间进行传输。
https://segmentfault.com/a/1190000020780854

HTTP+RESTful api

服务端→客户端,单向通信。很简单,不需要大量带宽或延迟的应用程序

游戏

KBEngine

一款开源的游戏服务端引擎,客户端通过简单的约定协议就能与服务端通讯,使用KBEngine插件能够快速与(Unity3D、UE4、OGRE、HTML5、等等)技术结合形成一个完整的客户端。 服务端底层框架使用C++编写,游戏逻辑层使用Python(支持热更新),开发者无需重复的实现一些游戏服务端通用的底层技术,将精力真正集中到游戏开发层面上来,快速的打造各种网络游戏。

skynet

kynet是为多人在线游戏打造的轻量级服务端框架,使用c+lua实现。使用这套框架的一个好处就是,基本只需要lua,很少用到c做开发,一定程度上提高了开发效率。

skynet和kbengine的比较 https://zhuanlan.zhihu.com/p/260753536

服务器端

Nginx

Nginx(“engine x”)是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。是目前负载均衡技术中的主流方案,是一个轻量级的高性能HTTP反向代理服务器
Nginx与Redis相同,都是基于多路复用模型构建出的产物,因此它与Redis同样具备 「资源占用少、并发支持高」 的特点

14个Nginx的核心功能点,建议收藏! https://zhuanlan.zhihu.com/p/649480596
一文看懂Tomcat、Nginx和Apache的区别 https://cloud.tencent.com/developer/article/1890137

存储

RocksDB

是一个高性能的多线程版本的kv storage Engine,提供了open/put/get/writebatch/iterator之类的kv操作的原语,高级特性非常丰富,比如mvcc,snapshot,ingest,range delete之类。总起来说,rocks是lsm-tree的cpp语言的优秀实现。
实现了 存算分离:海量数据的高扩展性(分布式服务器)存储方案。

也有国人Fork衍生维护的ToplingDB项目,更多特定领域的优化。

有哪些数据库用的了RocksDB,有哪些优劣势?https://www.zhihu.com/question/533045476
rocksdb对leveldb做了哪些优化?https://www.zhihu.com/question/328622742

Redis

基于内存读写(类似于 memcached)。它是一个服务器上的服务。单个 Redis 实例非常高效,但完全不可扩展(就 CPU 而言)。 Redis 集群是可扩展的(就 CPU 而言)。
https://blog.csdn.net/weixin_42319496/article/details/119944511

MongoDB

面向文档的数据库,用于大容量数据存储。它属于 NoSQL 数据库的分类。NoSQL 工具意味着它不使用通常的行和列。MongoDB 使用 BSON(文档存储格式),它是 JSON 文档的二进制样式。

MariaDB

MySQL的社区衍生版本。

sqlite

专注本地存储的db

跨平台UI

更多详见:2024 Rust跨平台ui框架 Rust Cross Platform UI Library https://www.cnblogs.com/nolca/p/17795473.html

基于PWA网页应用

Tauri

用html写ui。Tauri利用各平台自带的webview来减小打包体积。

React

用html写ui,QQNT版采用此框架,实现PC3端跨平台。
弊端就是每个应用都会打包一个浏览器在里面chrome.dll

基于原生

QT (only PC)

用qxml写ui,C++效率高,占用低。上面只要是web应用,内存占用都比较大,但搞美化比QT要快要好。

基于Canvas:Flutter

Flutter相当于自己写了个webview,然后跨平台手机+PC

嵌入式:Slint

详见

网页跨平台 vs 原生

仅应用层,依赖网络,优先考虑跨平台的网页引用
依赖系统内核或硬件(如Xposed/Dism++),反逆向工程,选择原生