我自己做了一个服务端,准备用mysql作为数据库。我自己的服务和mysql服务跑在不同电脑上面的。我的需求:
1、有N个客户端到我这里写数据,N范围5~20。我需要把数据写到mysql里面。2、有N个客户端到我这里查询数据,N范围5~50。3、有N个客户端到我这里更新数据,N范围5~50。
目前的一点点思路:
1、当查询数据的时候,异步处理。我做线程池,比如开10个线程,每个线程绑定一个mysql连接,当任务队列非空的时候,由空闲线程取出任务查询,然后将结果返回给客户端。2、插入操作该如何处理?虽然有N个客户端,但是每个客户端是单线程的。3、更新操作呢?有N个客户端,而且每个客户端是多线程到我这里更新的。
1、有N个客户端到我这里写数据,N范围5~20。我需要把数据写到mysql里面。2、有N个客户端到我这里查询数据,N范围5~50。3、有N个客户端到我这里更新数据,N范围5~50。
目前的一点点思路:
1、当查询数据的时候,异步处理。我做线程池,比如开10个线程,每个线程绑定一个mysql连接,当任务队列非空的时候,由空闲线程取出任务查询,然后将结果返回给客户端。2、插入操作该如何处理?虽然有N个客户端,但是每个客户端是单线程的。3、更新操作呢?有N个客户端,而且每个客户端是多线程到我这里更新的。
但是插入和更新必须是同步的,也就是我在mysql里面真的执行了,才能够告诉客户端OK。
就是你客户端是用socket连你服务端,还是用类似http的方式
客户端应该是socket连接的吧?就是用C的API
你服务端保持5000个连接没问题,其实每个连接就是一个独立的线程,你自己找一个framework,不要自己写
无非就是在你的server程序里实现一个mysql连接池,不管来的是读、写(插入或更新)请求,先从池中获取连接,执行读写操作完以后,马上把连接释放到连接池里头。这个池还可以控制大小。至于你的socket通信如何实现,有很多现成的方案。