前言:

在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)相关推荐

  1. 微信、陌陌等社交App,前后台整体架构设计实践分享,25页PPT

    点击"技术领导力"关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 本文整理了微信.陌陌技术团队对外 ...

  2. 仿陌陌遇见社交聊天APP源码 网页聊天 LBS地址类社交APP 含Java服务端、PhP管理端等

    因原来创业团队解散,此产品对外整套系统出售源码. 第一,APP开发于2013年,相对创作思想,交互模式,UI模式已经落后了,故此才将APP有出售的想法. 第二,APP项目没有申请著作权,对各位后续开发 ...

  3. 日本社交巨头Line推出BCH交易服务,助力比特币现金蓬勃发展

    本周日本社交巨头Line吸引了加密领域和科技行业的大量关注,因为其宣布推出加密交易平台Bitmax.在本月初Line的区块链子公司LVC就获得了监管部门批准运营,如今正式推出加密货币交易服务,提供以比 ...

  4. Testin评测七款主流社交App:国产微信完爆韩国LINE

    Testin评测七款主流社交App:国产微信完爆韩国LINE [Testin云测试]手机聊天社交应用,是手机端的基础应用,只要使用智能手机的用户,基本上都会安装聊天App.由于这些软件只消耗网络流量, ...

  5. 巴比特 | 元宇宙每日必读:希壤、啫喱等元宇宙社交APP火爆后迅速降温,用户大量流失,怎么破局?...

    摘要:不论是百度的希壤,还是下载量曾一度压过微信的啫喱,我们看到他们在一时火爆后迅速降温,到后期用户大量流失.元宇宙社交APP处于看似火爆,但实则却是"一把虚火"的阶段. 国内 上 ...

  6. 每日新闻丨2020年全国所有地级市覆盖5G网络;腾讯两个月推七款社交APP

    ▼ 趋势洞察 倪光南:RISC-V将和x86.ARM三分天下 2019国际芯片大会上,中国工程院院士倪光南表示,未来RISC-V很可能发展成为世界主流CPU之一,从而在CPU领域形成英特尔(x86). ...

  7. 软件开发规范和标准_社交APP,社交直播软件开发怎样才可靠了?

    在网络飞速发展的今天,开发社交直播APP软件已经成为商家发展的必然,他们都需要社交直播APP或者小程序软件来拓展业务.那么社交APP,社交直播软件开发怎样才可靠了? 首先,甄别网络虚假宣传. 目前,傍 ...

  8. 轻量社交APP系统ThinkSNS 简 权威发布 限时惠购

    2019独角兽企业重金招聘Python工程师标准>>> 伴随国内外创业风潮.AI.区块链等互联网软件科技领域的高速发展,2019年,ThinkSNS软件品牌迎来十周年后的新纪元.作为 ...

  9. 社交app应用开发 客户端+服务器源码

    原帖地址:http://www.devdiv.com/iOS_iPhone-想学习移动社交APP的童鞋有福了,图文展示,附客户端,服务端源码.-thread-121444-1-1.html 想学习移动 ...

最新文章

  1. .NET(C#)连接各类数据库-集锦
  2. Windows 7 64位机上OpenCV2.4.3的编译、安装与配置
  3. 会看会吃还要会做——自制小摊上的鸡蛋卷饼
  4. 微信公众平台开发(58)自定义菜单
  5. 在VC中实现模拟键盘,输入内容并显示在ListBox中。
  6. 重新深入理解零拷贝技术
  7. OneVPL与FFmpeg/GStreamer硬件编解码器
  8. azdb文件怎么打开_AZDBExplorerSvcs.dll
  9. Maven配置项目依赖使用本地仓库的方法汇总
  10. python数学计算模块_Python-NumPy模块数学和统计方法(4)
  11. 赠书 | 隐私计算:让你的数据信息不再“裸奔”
  12. [转]gcc下程序调用静态库编译命令:主文件必须在静态库前面!
  13. 抽象类和接口有哪些共同点和区别
  14. java 网络文件大小_java获取网络文件大小
  15. HDOJ 1257 (最长字序列问题)
  16. mysql 主命令总结
  17. Vue H5 项目模板
  18. 微信小程序开发视频分享
  19. CDA Level I 模拟题(1)【附答案解析】
  20. matlab设计译码器,基于Matlab编译码器的仿真与设计

热门文章

  1. Android 关闭USB充电
  2. Mybatis全网最详细教程(纯注解编程),包看包会!
  3. input使用maxlength报错
  4. 贴近司机,感知生活:智能语音助手在滴滴车主端的设计与实践
  5. 请注意了!你的APP可能有下架风险,途牛同程携程等多款App登黑榜!
  6. vivox21升级鸿蒙,vivo X21刷机教程_vivo X21A卡刷升级更新官方系统包
  7. 青海大学昆仑学院计算机机考,青海大学昆仑学院英语六级考试报名入口2020年上半年...
  8. golang 连接mysql,连接字符串参数
  9. Focusky教程 | 输出Focusky网页格式为什么打不开超链接?
  10. linux装2014数据库,SQL Server 2014 安装图解