逐步实现TCP服务端Step05-2:查询数据库

这是一个服务间协作的实例,client向mainsvrd请求服务,mainsvrd根据需要向dbsvrd发起查询请求,dbsvrd查询MySQL数据库,将结果返回给mainsvrd。最后,mainsvrd完成相关业务,将结果返回给客户。

proxy的具体实现,见antframe中的proxy工程。proxy的作用是将消息转发给指定实体。每个实体由类型和ID来标识,proxy必须要掌握所有连入自己的实体的基本信息,如:实体类型,ID,IP等等。这些信息可以在连接建立后,由实体告知proxy,这就意味着proxy要完全依赖于各实体。为保险起见,在配置文件中给出各实体的基本信息,以此信息为准 ...


逐步实现TCP服务端Step05-1:实现Proxy

Proxy的基本功能是将收到的消息原封不动地转发给单个或多个目标实体。可用“类型+ID”的方式来标识一个实体。这样,源实体只要提供目标实体的类型、ID以及转发方式,Proxy就可完成转发工作。

转发方式可细分为如下几种:

  • 一对一(P2P):一个源实体对应一个目标实体。此种情况,源实体需要提供目标实体的实体类型和实体ID。

  • 一对多(P2G):一个源实体对应一组(Group)目标实体 ...


逐步实现TCP服务端Step05:分布协作

迄今为止讨论的都是使用单个服务程序对外提供服务的情况。虽然netio和s是两个进程,但它俩其实是分管了一个服务程序的通信和业务逻辑两个部分,这里把它们视为一体。

假设s在处理业务的时候需要访问数据库,等从数据库提出数据后,又要进行复杂的数学运算。此种情况,只有单个线程的s势必会在某些环节因耗时过多,而影响到其他客户的服务受理。

若继续坚持单线程的路线,就必须对s进行拆分。就像当初从s中拆分出netio一样。假设用于访问数据库的进程叫做dbsvr,用于计算的服务叫做calsvr ...