请教一个数据处理的方法,进程间通讯(200分)

  • 主题发起人 主题发起人 wishme
  • 开始时间 开始时间
W

wishme

Unregistered / Unconfirmed
GUEST, unregistred user!
一个C/S结构的软件,很多客户端,频繁的向服务器发送数据,服务器收到数据后,需要存储、应答终端,并且收到的数据还要被别的系统实时处理,比如终端送到服务器的数据是学生的考勤数据,该考勤数据还要被另外一个短信接口程序组包后发送给学生的家长
现在短信接口程序是一个独立的程序,我想知道客户端的考勤信息发送到服务器端后,服务器和短信接口程序该怎么通讯才能保证可靠性和实时性?
我现在的处理是,服务器收到学生的考勤数据,存储过程写入数据库;短信接口程序有一定时器轮询数据库表,看是否有新到数据,有则发送,然后更改发送成功的数据标志
总好象这种处理方法有点什么问题
如果短信接口和服务器之间用SOCKET,服务器直接将收到的考勤信息使用TCP发给短信接口程序,会不会更好处理?
还是说用一些RPC之类的远程调用技术?
 
其实你这个处理方式是一种简单的守护服务器。另外,灵巧地将数据库作为队列。其实很好。只要性能跟的上,确实可以!

如果要自己写的话,其实架构是一样的,建立一个缓冲区作为队列,然后创建一个守护线程,一直查询缓冲区里是否有数据,如果有的话,则调用短消息线程。

客户端向缓冲区通信。

至于RPC是远程通信技术,你可以采用很多啊:Socket,COM(RPC),WebService(Http)等等
 
那你就换一个方式,把考勤数据直接发给你的短信接口,使用tcp服务端,这样你的短信接口发短信的同时,再把数据存入数据库。
 
这样就是万一短信服务器断了,考勤数据有可能丢失了,因为学生不停考勤,但是此时短信服务器断了,考勤数据如果不保存的话,之后短信服务器恢复正常了,这些数据将不能再发送了,是个问题
把数据放到队列里也是个问题,因为缓冲区是临时的,关机就丢了,如果学生考勤了,数据放到缓冲里,此时断电或死机,也全部丢失了
 
所以好象看起来只能写数据库或文件,才能保证数据安全
但是这样效率又是个问题
 
还有一种方法是共享内存
 
楼上的兄弟能否详细说说你的看法?
 
后退
顶部