我有个问题啊,
如果我的程序是一个网络服务器程序,但是这个程序需要访问数据库。此程序运行在多核心的平台上。
那么,应该采用什么样的编程框架结构呢
我采用的方法是, 一个主线程处理各种网络请求, 另外维护一个线程pool,每个线程与一个数据库连接进行绑定,当初线程获取网络请求后,进行处理,如果此处理与数据库没有关系,那么直接由这个主线程处理完。
如果这个任务比较重,比如数据库连接,那么从threadpool 里面取出一个线程,发起数据库连接进行处理。主线程放弃任务,从线程在处理完后,将处理结果发给一个resultcontainer。 主线程会一边处理网络请求,一边轮询这个resultcontainer,如果数据结果回来后,主线程接着处理。并把处理结果发给发送网络请求的客户端。
这种结构的好处: 从线程只进行数据库操作,不进行逻辑处理,所有的逻辑操作由主线程完成,因此主线程和从线程之间只有一个数据结构共享,也就是:1个主线程和n个从线程之间通过resultcontainer 进行通信。这样,只有一个地方需要同步,那么软件比较稳定。
我的这种方法,要求程序员对一个网络请求的处理,进行解构decouple,特别是涉及数据库操作。
这种逻辑显得与常规处理有点不一样。
不知道这种服务器结构是不是一般处理方法。敬请服务器开发人员对我的结构进行评价,谢谢!!