网关服务器-数据转发

1)笔记

1)什么是网关的数据转发?
  (1)客户端的接入: session + asclient为0;

  (2)会发一个命令包给网关服务器;

  (3)网关服务器就会解到这个命令包,解出来stype;

  (4)这个包是属于哪个session的或者说是属于哪个用户的,我们把这个唯一的标记打
    到这个数据包的utag里面: 也就是 stype ctype utag body中的第三个字段utag;

  (5)那么另外网关连的服务器在收到数据包的时候,就知道它到底标识的是哪个用户
     给自己发来的数据;

  (6)所以我们在网关这里的时候,就是收到命令以后,要把这个session对应的用户的utag
     打到我们的命令包里面去,打进去以后,根据stype,我们的网关服务会把这个命令包
     给它转到对应的服务器上面去;

  (7)因为我们每一个stype,网关都会去连对应的服务器;

2)网关服务器如何转发数据的呢?
  (1)网关服务器在启动的时候,会根据其它服务器的配置文件,调用connect_to_server去主动的
     连接,这样每一个服务器都会在我们的网关这里会有一个服务器对应的session,它的asclient为1,
     这样子就表示我们的网关与服务器连的;

  (2)如果asclient为0,就表示这个session是我们的客户端和网关连的,这样子来区分;   

  (3)打上utag以后,我们根据stype,就能够找到与这个stype服务器连接的这个session,通过
     这个session,把这个数据包转给服务器. 这个就是由客户端转到服务器;

  (4)在网关这里中间会打入utag的标记,表示这个数据包到底是属于哪个客户端的session;

  (5)黄线: 当我们的服务器发数据给我们的网关服务器的时候,我们的gw_service也带着stype、ctype
      这些东西,那么这个模块也能够收的到这个数据包,收到这个数据包以后,因为收到数据包的这个
      session的asclient为1,就知道是服务器发给我们网关的,我们网关就要读取这个数据包里面的
      utag,根据之前打入的utag,来找到这个客户端session,再把这个数据发给客户端session;


2)网关数据转发的作用:

3)转发服务和普通服务的区别
  (1)普通服务:收到命令后,是要把这个命令解开;
  (2)转发服务:为了性能,不需要全部解开,只需要把stype解开就可以了,后面的东西直接转过去,
     所以为了性能考虑;

  总结: 转发服务与普通服务的本质区别是: 转发服务不用解码命令的内容,这样就省了cpu,对于
        服务器而言,是非常值得的,不用编码和解码,再次编码;

4)ukey: 那边的utag,来保存我们的session;
  uid:登录了以后就用uid;

5)通过session的asclient判断是不是客户端发来的数据,是则打上utag;
  如果是服务器转过来的数据,则根据utag找到客户端session,发给客户端;

6)service_man
  netbus
  proto_man
  service
  service_export_to_lua

7)网关走: on_session_recv_raw_cmd
  其它服务走: on_session_recv_cmd

8)raw_cmd后,收到消息,就不会把消息的把内容解码出来,而是以raw_cmd的形式,传递给我们
  的lua层,这样我们就可以做一些相应的处理了.

  因此在gw_service中,可以访问: stype ctype utag, 但是body不需要,因为我们根本不需
    要解开,因此根本不需要body

  所以我们给raw_cmd,导一个模块出来,让它能够提供一个工具函数,能够帮助我们
    读取raw_cmd里面的stype,ctype,utag, 以及设置utag,因为我们后面还要打上
    utag,要读这个头,所以写2个函数:
      read_header: stype ctype utag
      set_utag: 打入utag标识

9)我们需要使用session把数据包发给对应的服务器,当我们根据stype找到服务器
  和服务器连接的这个session后,那么我们怎样把这个数据包raw_cmd发过去,直接
  打好这个utag后, 接着需要修改我们的body内存,直接转过去就可以了

  原始命令里的4个字节,把它改一下

10)raw_cmd的最终目的: 打上utag,直接转出去,减少在网关这的编码解码

 

你可能感兴趣的:(网关服务器-数据转发)