01服务器端的程序架构整体介绍

服务器端的程序架构介绍

参考:https://balloonwj.blog.csdn.net/article/details/71518551

1、整体框架

image

2、各个服务作用描述

  • Android/iOS/PC:各种客户端;
  • LoginServer (C++):负载均衡服务器,分配一个负载小的MsgServer给客户端使用;
  • MsgServer(C++):消息服务器,负责维护各个客户端的连接,消息转发等功能,提供客户端大部分信令(消息命令)处理功能,包括私人聊天、群组聊天等;
  • RouteServer (C++):路由服务器,为登录在不同MsgServer的用户提供消息转发功能,当msg_server发现某个用户不在本服务器内, 而又有消息需要发给他,就会将消息转发给route_server,route_server会将消息发给相应的msg_server;
  • FileServer (C++):文件服务器,提供客户端之间得文件传输服务,支持在线以及离线文件传输;
  • MsfsServer (C++):图片存储服务器,提供头像,图片传输中的图片存储服务;
  • DBProxy (C++):数据库代理服务器,在TT中负责了主要的业务逻辑,主要与存储层打交道,提供mysql以及redis的访问服务,屏蔽其他服务器与mysql与redis的直接交互;
  • HttpMsgServer(C++):对外接口服务器,提供对外接口功能,Webserver,成员管理功能;
  • PushServer(C++): 消息推送服务器,负责Android、 IOS客户端提醒消息的推送, 类似微信的锁屏提醒消息。(IOS消息推送必须走apns)

3、启动顺序

一般来说,前端的服务会依赖后端的服务,所以一般先启动后端服务,再启动前端服务。建议按以下顺序启动服务:

1. 启动db_proxy。
2. 启动route_server,file_server,msfs
3. 启动login_server
4. 启动msg_server

那么我就按照服务端的启动顺序去讲解服务端的一个流程概述。

  • 第一步:启动db_proxy后,db_proxy会去根据配置文件连接相应的MySQL实例,以及redis实例;
  • 第二步:启动route_server,file_server,msfs后,各个服务端都会开始监听相应的端口;
  • 第三步:启动login_server,login_server就开始监听相应的端口(8080),等待客户端的连接,而分配一个负载相对较小的msg_server给客户端;
  • 第四步:启动msg_server(端口8000),msg_server启动后,会去主动连接route_server,login_server,db_proxy_server,会将自己的监听的端口信息注册到login_server去,同时在用户上线,下线的时候会将自己的负载情况汇报给login_server。

3.4各个端口

服务 说明 端口 备注
login_server 登录服务器,负责身份验证,负责给登录成功的客户端分配msg_server。 这个服务监听在两个端⼝,⼀个是tcp端⼝8100,⽤于和后端的服务器交互,另⼀个是http端⼝8080,需对外开放。 8100、8080 8080需要对外开放 、8100看是否跨公⽹
msg_server 消息服务器,⽤户登录成功后,就和指定的消息服务器交互。 8000 需对外开放
route_server 消息转发,不同msg_server上⽤户交互需要中转站来转发消息。 8200
file_server ⽂件中转站,临时存储 8600 需对外开放
msfs_server ⼩⽂件永久存储,聊天的图⽚、表情等, 端⼝ 8700 需对外开放
db_proxy_server 数据库中间件,后端为存储层,mysql和redis 10600
http_msg_server 主要提供对外的 web api 8400
push_server 消息推送服务(暂时先不⽤) 8500
posted @ 2022-06-09 21:16  豪崽_ZH  阅读(162)  评论(0)    收藏  举报