取舍点:跨平台、跨语言、热更新、性能/占用
通信
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++),反逆向工程,选择原生