Re: New Redis DB storage
Stipe Tolj <[email protected]>
| Newsgroups | gmane.comp.mobile.kannel.devel |
|---|---|
| Organization | Kannel Software Foundation (KSF) |
| Message-ID | <[email protected]> |
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
-------------------------------------------------------------------