无保留分享交友APP犬岛的服务端架构
🦮 犬岛是一款通过问答来构建用户画像,帮助用户探索自我和结交朋友的新社交应用📱,上线初期遇到过海外用户访问慢,用户突发增长带来服务不稳定等等问题,现在都解决了,来分享一下我们的架构\n \n🛜 DNS 和 GA 全球高速网络\n犬岛的域名解析,区分了国内流量和海外流量,国内流量直接解析到本地网络,海外流量解析到阿里的 GA 全球加速通道,再转到本地,这样大大提高了海外用户的访问速度!\n \n🎛️ 负载均衡\n负载均衡是实现服务可扩展的前提,我们给不同的服务建了不同的服务器组,避免互相影响,同时我们在负载均衡这一层开启了服务质量监控,攻击拦截,数据统计等等服务,保障了服务的安全稳定,对异常、错误也能即时发现,避免小问题影响更多用户\n \n🖥️ 服务器\n犬岛目前有10台服务器,不过很多处于关机状态需要的时候才会开启(为了省钱),当前用于处理客户端请求的只有2台服务器,得益于异步协程的 python sanic 的抗并发能力真的很强 (后面可再单独介绍服务端开发语言和框架)\n \n🎹 自动弹性伸缩\n因为早期用户增长不稳定,经常突然一下来很多,我们开启了服务器弹性伸缩(为了省钱),系统会自动检测当前负载,不够了就自动加服务器,多了就减服务器,不用我操心。。\n \n💿 数据储存\n犬岛用到了多种数据数据储存方式,数据库使用了 Postgresql,用到了 Redis , 七牛的对象储存, 还用到了NAS 文件存储, 其中大量用到了 Elasticsearch,Elasticsearch 经历了从用云服务到现在自建集群的过程(为了省钱),Elastisearch 在犬岛的服务中承担了非常多的角色,比如日志分析,数据看板,用户匹配推荐的召回等等\n \n🕵️ 专用网络\n安全是后端服务的基石,犬岛的后端都放到一个专用网络里,对外只通过 ALB 暴露了 API 的访问端口,这个端口上加上了层层安全措施,API 也有专门的网关保障只允许授权访问。\n \n#app开发 #独立开发者 #交友软件