…UNIX socket protocol, javascript plugin, authentication via tables (similar to MySQL), RabbitMQ, regex policy, logging to syslog, authentication via LDAP. This shows that major pieces of functionality can be implemented in relatively small amounts of code.
Installing Drizzle 7.1.33-stable
The source tar package is available from the Drizzle Launchpad download area . Please see the Drizzle manual on how to install Drizzle 7.1.33-stable from source tar package.
If you're into messaging, you should read this, especially if all you know is RabbitMQ and Redis for queueing. Both don't scale well and they're not easy to make fault-tolerant. Kafka, built at LinkedIn, follows a very different design to allow being run fully distributed.
Notes on Varnish, from the Architect
The ideas behind Varnish, why Squid's way is outdated, and a perspective on great uses of memory-mapped files. Short and self-congratulatory read. …
Pinterest co-founder Paul Sciarra shared a bit about their stack on Quora:
Python + heavily-modified Django at the application layer
Tornado and (very selectively) node.js as web-servers.
Memcached and membase / redis for object- and logical-caching, respectively.
RabbitMQ as a message queue.
Nginx, HAproxy and Varnish for static-delivery and load-balancing.
Persistent data storage using MySQL.
MrJob on EMR for map-reduce.
Git.
entity_116606 …
…database at all! Use a real queueing system, such as Resque, ActiveMQ, RabbitMQ, or Gearman. Be careful, however, that you don't enable persistence to a database and choose to use MySQL for that. Depending on the queue system, that can just reintroduce the problem in a generic way that's even less optimal. Some queue systems use all of the database worst practices I enumerated above.
I hope this article has given you some insight into the variety of ways that job queues …
Note that in RabbitMQ a message is never sent directly to a queue. Instead, it passes through an exchange , the type of which defines how messages are distributed to one or more client queues. In this case, we're side-stepping the concept of exchanges by using the default nameless exchange, which allows us to specify the target queue for our messages using a routing key. Once you get into more advanced usage of RabbitMQ such a broadcasting messages to set of known queues, you'll definitely …
…Redis), caching systems ( Memcached, Varnish), and queueing systems ( RabbitMQ, Beanstalkd), rather than the language- or framework-specific services of yesteryear (e.g. Erlang's Mnesia or Zope's Object Database ). There is even convergence on RPC protocols (e.g. REST, AMQP, ZeroMQ, Thrift, Protocol Buffers) and serialization protocols (e.g. XML, Yaml, JSON), making calls between apps written in different languages extremely easy.
Add all …
…there's usually a solution for that as well. For example AMQP supports transactions and RabbitMQ provides publisher confirms which is a fast, asynchronous way to be notified that the message was published successfully. Persistent messages are confirmed when all queues have either delivered the message and received an acknowledgement, or persisted the message.
Decoupling
With a message based infrastructure, different parts of your app can easily communicate to each other, …
…so it does not impact the user's experience. Do you need to install ActiveMQ, RabbitMQ or Resque to do this? Certainly not.
Message queueing is a fundamental architectural pattern when building complex systems. Your various system components might be written by different teams but they communicate through messages sent via queues. One component can send a message to another component, saying "please send this email". But message queueing systems have their cost: they …
[ CHEF-1808 ] - RabbitMQ connection retry broken in multi-queue indexing
[ CHEF-1821 ] - Unable to knife search for negative queries
[ CHEF-1832 ] - knife status should handle a null ohai_time instead of failing noisily
[ CHEF-1834 ] - debian service provider cannot enable a disabled service
[ CHEF-1835 ] - run_interval feature test is unreliable as it depends on ps|grep for determining the chef-client …
…it makes sense, or push it to another asynchronous processing facility, e.g. a message queue like RabbitMQ or Redis' Pub/Sub.
In a similar fashion, whenever you write data to a connection using send_data , it's first buffered, and not actually sent until the socket is ready for a non-blocking call to write() . Hence all three implementations check for both read and write availability of a descriptor.
Fibers vs. Spaghetti
Where do Ruby's Fibers come in …