网关服务器分布式部署(网关: 转发服务)

1)笔记

1)通用服务器
  (1)网关服务器
  (2)用户服务器
 
2)系统服务器

3)游戏服务器

4)多服务器启动部署
  (1)因为服务器是c++ lua,因此build出来一个exe用于启动lua脚本即可启动
     不同的服务器
  (2)搜索路径的设置: 共用Stype和Ctype,因此搜索路径设置为scripts/ 下,
     因此即使是当前目录,也要加上 "gateway/gw_service" 这样

5)网关服务器的功能
  (1)最大的功能是转发: 客户端消息-->服务器  服务器消息-->客户端
  (2)网关服务器的优点
    a.将整个系统的运算和负载分到不同服务器上,方便扩展
    b.千锤百炼的进程不容易挂掉,后面开发的业务进程经常改变,容易出问题,
      业务进程挂掉了,玩家还和网关连接着,不会感知的到 
    c.独立的网关服务器可以分散业务进程的压力,让服务器容纳更多的人;
      如果玩家直接去连接业务服务器,只能连接一个,而有网关,则可以转发到
         不同的服务器上,提升一组服务器的负载
    d.负载均衡和广播消息的负载均衡,因为网关知道哪个服务器有负载等

6)目录调整:
  (1)进程架构目录:
     gateway
     auth_server  或者 account_server
     talkroom

  (2)Stype.lua: 标记都有哪些服务器
     Auth = 1
     System = 2
     Logic = 3

  (3)Cmd.lua 或 Ctype: 标记所有命令的值 和 protobuf的enum对应,复制过去即可

  (4)game_config.lua: 服务器配置文件
    gateway
      tcp的ip、port: 对外给客户端使用的tcp端口 
      websocket的ip、port: 对外给客户端使用的websocket端口 
 
    remote_server: 
      gateway与业务进程之间只采用tcp连接, ws只提供给客户端即可
      网关启动后,就会去连接remote配置的这些server
      我们一个个服务来写,写一个加一个就ok了

    遍历servers列表,在网关注册好这些网关转发模块对应的这些服务,只要到了网关后,
      检测是这个命令,则会走进转发模块,转到对应的ip地址和端口

7)注册网关转发模块
  (1)key:  对应的服务号
     value: 直接搞一个gw_service

  (2)on_gw_recv_cmd: 当收到客户端对应的命令后,就会进入,转给其它服务器


  (3)on_gw_session_disconnect: 当客户端断开连接后,我们将客户端断开的消息
    转给其它服务器

  (4)gw_service:也叫作转发服务, 直接转给对应的stype即可

8)业务逻辑开发人员需要做些什么?
  (1)复制一个service,在main里面注册好对应的类型,当有属于这个service的业务请求进来的时候,
    这样就独立出来了人与人之间的相互交叉

  (2)整个框架就在做事件分发

9)整体架构
  (1)协议

  (2)脚本
    脚本下面有各个服务器
    配置文件
    每个服务器里面有个入口 + service

  (3)业务逻辑独立于service进行开发,方便进行分布式的部署 和 业务拆分
  
  (4)有其它service挂到这个进程下,则在main.lua注册即可

 

你可能感兴趣的:(网关服务器分布式部署(网关: 转发服务))