GBASE 8s客户端与服务器的通信

         GBase客户端与服务器的通信支持多种不同的方式:共享内存 Shared memory、Stream pipe、 TCP/IP(Sockets、TLI)、IPX/SPX、DRDA。我们通常选择TCP/IP协议来实现客户端与服务器之间的进程通信。

        客户端与服务器之间的进程若要进行通信,那么首先必须解决的问题是如何标识进程。在本地我们可以通过进程的PID来唯一标识一个进程,可是在不同主机之间通信时这个办法就行不通了。TCP/IP协议解决的便是这个问题。网络层的IP地址唯一标识了一台主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程)。这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。

        使用TCP/IP协议的应用程序通常采用应用编程接口:UNIX BSD的套接字(socket)和UNIX System V的TLI(已经被淘汰),来实现网络进程之间的通信。就目前而言,几乎所有的应用程序都是采用socket。

        GBase 8s通过poll线程提供实时的客户端的连接请求和通信服务,初次建立连接时需要listener thread 来建立客户端与服务器的连接。GBase 8s客户端与服务器之间新建立连接过程如下

        1.客户端发起新连接请求,Poll线程实时接收连接请求信息(服务名、用户名、密码等信息)

        2.将新连接请求转交给listener线程处理

        3.listener线程验证请求信息是否有效,若有效,则为连接创建一个sqlexec线程

        4.sqlexec线程直接与客户端连接

        已有连接的通信过程如下。

        1.当连接建立后,客户端发出执行任务(SQL语句)的请求,通信信息通过poll线程转发给sqlexec线程处理

        2.poll线程转发给sqlexec线程处理

        3.sqlexec进程处理完成后,返回给客户端

        4.后续客户端任务重复前三个过程

        通过onstat -g ath命令可以监控通信服务线程的运行情况,其中poll线程一直处于running状态,即时响应客户端请求,listener线程一般处于sleeping状态,在新建连接请求时由poll线程触发运行:

onstat -g ath

Theads:

tid

tcb

rstcb

prty

status

vp-class

name

1

9ae15418

0

1

running

12soc*

soctcppoll

2

9ae159e8

0

1

running

13soc*

soctcppoll

3

9aed4b08

0

1

sleeping forever

3cpu*

soctcplst

4

9ae65808

0

2

sleeping forever

1cpu*

soctcplst

5

9ae4c028

0

2

sleeping secs:1

2cpu

sm_poll

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

八珍豆腐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值