日本最大的社交APP Line的服务架构(1)
前言:
在2012年,在一家日本的小公司工作,主要负责了面向一款面向企业用户的聊天类APP的服务器和客户端的设计开发。app画面和功能主要参照的是日本当时刚火起来的Line,服务器用的是Http,当时觉得自己做的东西特别土,一直在想Line或者微信的架构是什么样的。过去了好几年,当时开发的这款APP也已经成为这家公司的主打产品了。2015年的日本杂志也推出一个连载,大概介绍了Line的服务器架构。竟然发现很多原理是一样的,感觉到大道至简,殊途同归,http并不落后,关键在于如何完善和使用。
于是想把这篇文件的主要部分转译过来,当作对自己曾经工作过认真思考过的一段过程的一个纪念,和一次再学习再提升。
LINE的服务端架构
LINE主要是聊天服务,除了聊天消息处理外,也提供了一些其他的服务。
如图 1.其中Talk Server是聊天消息服务的核心程序。除此之外,也有比如用作语音通信的VOIP服务,时间轴服务,这些都是独立的服务,通过API来协同工作。
聊天服务的架构
前端服务器和后端服务器
客户端通过负载平衡服务器跟前端和后端服务器通信。前端服务器实际为后端的代理服务器(reverse proxy),后端服务器即为实际的Talk服务器,构成和一般的Web服务是相同的。前端服务器为自己开发的LEGY。LEGY和Talk服务器在后章介绍。
存储
主要是使用Redis和HBase,详细在后章介绍
图2,现在的LINE的服务器通信简单架构
图3,服务初期的服务器通信简单架构
LINE的核心 Talk-Server
Talk-Server的作用
Talk服务器是Line的核心程序服务器。主要用途有两点,配送消息和社交关系的管理
配送消息
配送消息即为将文字图像等发送到用户的客户端。如果用户的客户端没有启动,就会推送通知。用户看到通知打开客户端,就会如上图2,3,到服务器来获取,服务器从存储中取出,给客户
社交关系的管理
为了正确的配送消息,也需要对用户的社交关系进行管理。另外还实现了
- 通过电话簿建立社交关系
- 通过检索ID,寻找好友
- 通过物理位置等寻找好友
Talk-Server的开发
Talk服务器是基于Java的Servlet的服务,通过Tomcat来运行。与传统的网页服务不同的地方是,使用了Apache Thrift的字节协议,这样的话确保了API的可扩展性。利用了Spring Framework来实现了DI。利用AOP的开发方式,有效的利用了认证,日志,监控等功能。
自己开发的高速通信代理前端LEGY
LEGY的作用
请求路由
负责路由,是前端代理的基本功能。代理请求,根据请求的种类,选择不同的后端来恢复。
客户端和后端的协议转换
Line的客户端和前端服务器间是SPDY协议,后端的服务器是正常的HTTP服务器。因此LEGY将SPDY变换成HTTP同后端通信。
客户端的连接管理
因为LINE需要即时的与客户端通信,因此需要尽可能的维持与客户端的连接。所以前端还有一个功能是管理客户端与服务器的连接状况。
LEGY的开发
LEGY是使用Erlang来开发的,之前是使用Nginx和相关的模块来开发的。现在更适合轻量级的并行处理和大规模的连接管理
微服务架构的高速开发
现在LINE使用微服务架构
微服务架构的好处
便于服务器的分开配置
便于代码的分离开发
便于开发团队的分离管理
根据产品的状况来选择架构
初期是用一个完整的代码来实现所有的功能。
在用户和功能不断扩大后,开发团队也在扩大,现在改成了微服务架构
微服务架构的基础框架技术
API基架
微服务环境的性能分析
横向的日志收集
分散存储系统zipkin,来监控API的调用情况
总结
LINE选择的技术,都是随着发展的过程中,不断试错的选择结果。将来也会随着成长,不能进行技术更新。
日本最大的社交APP Line的服务架构(1)相关推荐
- 微信、陌陌等社交App,前后台整体架构设计实践分享,25页PPT
点击"技术领导力"关注∆ 每天早上8:30推送 作者| Mr.K 编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 本文整理了微信.陌陌技术团队对外 ...
- 仿陌陌遇见社交聊天APP源码 网页聊天 LBS地址类社交APP 含Java服务端、PhP管理端等
因原来创业团队解散,此产品对外整套系统出售源码. 第一,APP开发于2013年,相对创作思想,交互模式,UI模式已经落后了,故此才将APP有出售的想法. 第二,APP项目没有申请著作权,对各位后续开发 ...
- 日本社交巨头Line推出BCH交易服务,助力比特币现金蓬勃发展
本周日本社交巨头Line吸引了加密领域和科技行业的大量关注,因为其宣布推出加密交易平台Bitmax.在本月初Line的区块链子公司LVC就获得了监管部门批准运营,如今正式推出加密货币交易服务,提供以比 ...
- Testin评测七款主流社交App:国产微信完爆韩国LINE
Testin评测七款主流社交App:国产微信完爆韩国LINE [Testin云测试]手机聊天社交应用,是手机端的基础应用,只要使用智能手机的用户,基本上都会安装聊天App.由于这些软件只消耗网络流量, ...
- 巴比特 | 元宇宙每日必读:希壤、啫喱等元宇宙社交APP火爆后迅速降温,用户大量流失,怎么破局?...
摘要:不论是百度的希壤,还是下载量曾一度压过微信的啫喱,我们看到他们在一时火爆后迅速降温,到后期用户大量流失.元宇宙社交APP处于看似火爆,但实则却是"一把虚火"的阶段. 国内 上 ...
- 每日新闻丨2020年全国所有地级市覆盖5G网络;腾讯两个月推七款社交APP
▼ 趋势洞察 倪光南:RISC-V将和x86.ARM三分天下 2019国际芯片大会上,中国工程院院士倪光南表示,未来RISC-V很可能发展成为世界主流CPU之一,从而在CPU领域形成英特尔(x86). ...
- 软件开发规范和标准_社交APP,社交直播软件开发怎样才可靠了?
在网络飞速发展的今天,开发社交直播APP软件已经成为商家发展的必然,他们都需要社交直播APP或者小程序软件来拓展业务.那么社交APP,社交直播软件开发怎样才可靠了? 首先,甄别网络虚假宣传. 目前,傍 ...
- 轻量社交APP系统ThinkSNS 简 权威发布 限时惠购
2019独角兽企业重金招聘Python工程师标准>>> 伴随国内外创业风潮.AI.区块链等互联网软件科技领域的高速发展,2019年,ThinkSNS软件品牌迎来十周年后的新纪元.作为 ...
- 社交app应用开发 客户端+服务器源码
原帖地址:http://www.devdiv.com/iOS_iPhone-想学习移动社交APP的童鞋有福了,图文展示,附客户端,服务端源码.-thread-121444-1-1.html 想学习移动 ...
最新文章
- .NET(C#)连接各类数据库-集锦
- Windows 7 64位机上OpenCV2.4.3的编译、安装与配置
- 会看会吃还要会做——自制小摊上的鸡蛋卷饼
- 微信公众平台开发(58)自定义菜单
- 在VC中实现模拟键盘,输入内容并显示在ListBox中。
- 重新深入理解零拷贝技术
- OneVPL与FFmpeg/GStreamer硬件编解码器
- azdb文件怎么打开_AZDBExplorerSvcs.dll
- Maven配置项目依赖使用本地仓库的方法汇总
- python数学计算模块_Python-NumPy模块数学和统计方法(4)
- 赠书 | 隐私计算:让你的数据信息不再“裸奔”
- [转]gcc下程序调用静态库编译命令:主文件必须在静态库前面!
- 抽象类和接口有哪些共同点和区别
- java 网络文件大小_java获取网络文件大小
- HDOJ 1257 (最长字序列问题)
- mysql 主命令总结
- Vue H5 项目模板
- 微信小程序开发视频分享
- CDA Level I 模拟题(1)【附答案解析】
- matlab设计译码器,基于Matlab编译码器的仿真与设计
热门文章
- Android 关闭USB充电
- Mybatis全网最详细教程(纯注解编程),包看包会!
- input使用maxlength报错
- 贴近司机,感知生活:智能语音助手在滴滴车主端的设计与实践
- 请注意了!你的APP可能有下架风险,途牛同程携程等多款App登黑榜!
- vivox21升级鸿蒙,vivo X21刷机教程_vivo X21A卡刷升级更新官方系统包
- 青海大学昆仑学院计算机机考,青海大学昆仑学院英语六级考试报名入口2020年上半年...
- golang 连接mysql,连接字符串参数
- Focusky教程 | 输出Focusky网页格式为什么打不开超链接?
- linux装2014数据库,SQL Server 2014 安装图解