Hi John, Yes the negative with the single thread is single CPU utilization. Then again you can run 4 or more servers for a quad CPU. For security I could either use SSH Port Forwarding or use a MD5 implementation in my client/server code.
Thanks, -Alex On Tue, Jun 10, 2008 at 11:25 PM, John Stanton <[EMAIL PROTECTED]> wrote: > Alex, > > Thankyou for the comments. I use non-blocking fd's also but implement > multiple threads to take advantage of multiple processor servers. Since > threads carry quite a bit of baggage your single thread approach would > probably be superior on a single processor machine. > > It has been experience that a well conceived single thread process gives > the best performance on a single processor, as one would expect. > > I would hand out my code except that the whole things incorporates extra > processors such as an embedded server page processor and and compiler > plus a security shell and would be a handful to maintain and document in > great detail but if you are interested in chunks of code contact me. > > Alex Katebi wrote: > > John, > > > > My server uses epoll( ) and runs non-blocking in a single thread. I > did > > some google and found out that people who need a very fast server that is > > highly scalable are using this model. non-blocking seems to be more > > complicated at first glance but it actually makes the server design much > > simpler. I am planning to release my code as open source when it is more > > complete. > > > > Thanks, > > -Alex > > > > On Tue, Jun 10, 2008 at 8:48 PM, John Stanton <[EMAIL PROTECTED]> > wrote: > > > >> We use an application server I wrote which handles HTTP, serves file and > >> has embedded Sqlite for the RPCs. The RPC can deliver its result either > >> in XML for widely distributed applications or as JSON if it is > >> responding to a WWW browser in AJAX mode. > >> > >> We keep a local library of SQL RPCs so that SQl never appears on the > >> network and we have immunity from injection attacks. It also means that > >> we can cache compiled SQL, a useful performance win. > >> > >> We use the Expat parser in remote programs using the XML format. A > >> wrapper makes it a verifying parser to ensure well formed XML. > >> > >> The server is multi threaded and maintains a pool of live threads so it > >> can respond quickly and assign multiple threads to one browser > >> connection. Shared cache in Sqlite and some extra caching to maintain > >> multiple open databases and results makes Sqlite behave like a simple to > >> use enterprise DB server, but without the overhead of extra processes. > >> We use mutexes for synchronization, set up as read and write locks and > >> avoid the POSIX file locks. > >> > >> We installed Javascript as a procedural language to be used by Sqlite > >> instead of PL/SQL but that is not a great success (v. slow) and we are > >> going to experiment with using Python. > >> > >> Based on our experience you should be very happy with your Sqlite based > >> RPC capability. > >> > >> Alex Katebi wrote: > >>> John & John, > >>> > >>> Actually my API used to be XML using SCEW a DOM like XML parser that > >> uses > >>> Expat. > >>> > >>> For my particular application RPC made more sense to me. What could > be > >>> easier than a function call? Another advantage was that I did not have > to > >>> create any functions. I am just using SQLite's C API. Now the users of > my > >>> application can query any table on the server side using select. Since > my > >>> application is a network server, and network debugging capability is > >>> crucial. > >>> The only ugliness is that select locks the tables. I wish D. Hipp would > >> give > >>> us an option for pStmt to create a temporary table of the select result > >> set > >>> and delete that temp table after finalize automatically. This way a > >> client > >>> can sit on a prepare/step for a long time. > >>> > >>> I solved the endian issue pretty easy by sending the type code. > >>> > >>> Thanks, > >>> -Alex > >>> > >>> > >>> On Tue, Jun 10, 2008 at 3:07 PM, John Elrick <[EMAIL PROTECTED] > > > >>> wrote: > >>> > >>>> Alex Katebi wrote: > >>>>> Yes I need to do it as 8 byte buffer. Convert the endianess to the > >>>> network > >>>>> then back to host for 8 byte integer. > >>>>> I think XML is great for command validation and CLI auto typing, help > >>>> etc. > >>>>> Besides parsing issue, XML can not handle binary data directly. > >>>>> > >>>> As John pointed out, XML is not intended to handle binary data > >>>> directly. We use XML as a transfer medium for binary data and simply > >>>> base64 encode it before encapsulation. > >>>> > >>>> > >>>> John Elrick > >>>> Fenestra Technologies > >>>> _______________________________________________ > >>>> sqlite-users mailing list > >>>> sqlite-users@sqlite.org > >>>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > >>>> > >>> _______________________________________________ > >>> sqlite-users mailing list > >>> sqlite-users@sqlite.org > >>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > >> _______________________________________________ > >> sqlite-users mailing list > >> sqlite-users@sqlite.org > >> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > >> > > _______________________________________________ > > sqlite-users mailing list > > sqlite-users@sqlite.org > > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users