Am 10.10.2011 10:38, schrieb Toby Phipps:
Hi All,
I've completed the implementation a Redis (www.redis.io
<http://www.redis.io>) database driver for DLR storage and for sqlbox
submission/result queueing. It's running through a multi-million message
test batch now and looks good both performance-wise and leak-wise. I'll
be moving it to a production environment in the next few days, but
wanted to start the process to submit the code for merge.
It's showing considerable performance advantages over
MySQL/InnoDB/Percona/XtraDB, especially with the database and kannel
running on the same box. I'll submit some actual throughput comparisons
once I've finished all the benchmarking, but at the moment I'm seeing
just under 900 SMS/sec concurrently with 1000 DLR/sec on a Core i7 CPU
with full DLR storage/tracking. One of the key benefits is that Redis
supports a blocking queue PUSH/POP mechanism that completely removes the
need for high-frequency polling for SMS and DLRs.
The code is up-to-date with the latest svn revision, and other than a
minor change to the core (passing down use_dst during DLR creation) it's
impact free. I've updated the kannel users guide with the appropriate
new section, and am working on getting the toolchain installed to do the
same for sqlbox's users guide.
Some questions:
1. What's the preferred way to submit multiple-file patches? In this
case I've changed 10+ files. Attach patches for all to a single email?
Tar them up and attach? Provide a URL where they can be downloaded from?
2. What's the preferred patch format? SVN diff? Linux diff?
3. I have enabled support for Redis both in Kannel and in sqlbox. Submit
them separately or jointly?
4. I've enhanced sqlbox to enable passing of priority via the DB. Submit
this separately?
5. The sqlbox implementation depends on a JSON encoding/decoding engine
since Redis requires some form of serialization for its queue
management. I've chosen the MIT licensed Jansson library
(http://www.digip.org/jansson/) due to its performance, simplicity and
open license. Any issues making this a dependency for Redis-enabled
sqlbox? I've updated the configure.in appropriately with a
--with-jansson-dir argument.
Hi Toby,
thanks a lot for your work on the Kannel Redis support. We appreciate
your contribution. I have just committed to svn:
2014-01-06 Stipe Tolj <stolj at kannel.org>
* configure[.in]: implement --with-redis option to support Redis.
* gw-config.h.in: add HAVE_REDIS macro definition.
* doc/examples/dlr-redis.conf: Redis config example.
* doc/userguide/userguide.xml: adding Redis support documentation.
* gw/dlr_p.h: extending the dlr_entry struct to hold information if
we used the destination address in the lookup process, also adds
the TTL variable to dlr_db_fields struct.
* gw/dlr_redis.c: implements Redis support as DLR storage backend.
* gw/dlr.[ch]: add 'ttl' config handling and extend dlr_add() prototype
to allow passing the optional argument for indicating the usage of
the destination address.
* gw/smsc/smsc_[cimd2|emi].c: add use destination address flag in
dlr_add() call. This is required since these two SMSC types don't
have a message ID returned by the SMSC.
* gwlib/cfg.def: adding config 'group = redis-connection' context, and
adding the 'ttl' directive for 'group = dlr-db' context.
* gwlib/dbpool_redis.c: implements Redis support for the database pool
abstraction layer.
* gwlib/dbpool.[ch]: adding Redis support to internal structures.
* gwlib/octstr.[ch]: adding function octstr_replace_first().
* gwlib/utils.c: add Redis version output in version_report_string().
This patchset was originally developed by Toby Phipps.
[Msg-Id: <[email protected]>]
[URL: https://github.com/tphipps/kannel-redis]
Thanks to Toby Phipps for the patchset, and Alejandro and Juan Nin
for raising the topic again.
Kind Regards,
Stipe
--
-------------------------------------------------------------------
Kölner Landstrasse 419
40589 Düsseldorf, NRW, Germany
tolj.org system architecture Kannel Software Foundation (KSF)
http://www.tolj.org/ http://www.kannel.org/
mailto:st_{at}_tolj.org mailto:stolj_{at}_kannel.org
-------------------------------------------------------------------