本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点
序列化
判断标准
- 序列化后的码流大小
- 性能
- 跨语言
Serializable方式
- 码流偏大
- 性能较低
XML方式
- 人机可读性好
- 文件格式复杂、占带宽
JSON
- 轻量级、兼容性好、格式简单,人机可读性较好
- 可读性没有XML好,额外空间消耗比较大
ProtoBuff
如何让单机的应用程序支持几十万至百万级别的长连接?
- 首先要突破系统对应用进程的线程数限制:ulimit -n 1000000
- 还要突破软限制和硬限制:cat /etc/security/limits.conf;改完以后还要该so,让系统重新加载这个文件
- 操作系统的限制,所有进程的文件连接数的限制
- socket通信时,每个socket都有2个缓冲区,一般是4K*2,连接数过大,内存就会很高,就需要把这个缓冲区调小一点:SO_SNDBUF;SO_RCVBUF