Enterprise scale message queues
Public clouds offer message queue services as a background
task processor. Messages may be sent to queues that are set up with a processor
to handle the messages. Since the messages are consumed offline, they are ideal
for background tasks that do not otherwise fall under the scope of the online
services or their Application Programming Interface (API).
This post describes how message
queues may be made available in private cloud for end user consumption. If we
choose full service message queue software, we will inevitably find a
distributed cluster as the topology to deploy. The distributed cluster works
even on the same physical machine and is already geared towards performance and
scale-ability even on a limited resource. However, the choice of software and
hardware and their configurations is important to study so that a suitable
arrangement can then be made to handle different sizes of workloads. As we will
shortly see, there are many options for rolling out message queue services.
Moreover, the message queue services are considered here to be deployed in the
cloud. If it were personal to each cloud user, then we could have treated it as
an application and rolled it out with each server that is issued to customers.
Let us therefore see how the enterprise wide message queue services
needs to be laid out to the customers of a private cloud.
First we choose the number of instances of the message queue
cluster and the cluster size. We have already discussed that being as granular
as one instance for every server does not offer the power that cloud computing
users exist. On the other end of the spectrum having a large cluster for a
single dedicated instance to private cloud users has the benefit that it can be
made organization specific and at the same time be centrally managed and
handled for all users. Moreover, this logical instance can be internally
represented by a syndication of clusters across different regions hiding the
complexity from the user. After all, the user expects an endpoint and access to
the cluster regardless of how it is setup
Second the cluster size can vary depending on the loads
because most message queue software allow the addition of nodes to increase the
computing power. This means that if we
go with a single instance then we can arbitrarily scale out the cluster to meet
the traffic. This is also more efficient when it is offered as a managed
service
Lastly, we consider the nature of this software and
provision accordingly. Customers are likely to use the queues in one of the
following ways each of which implies a different layout for the same instance
and cluster size.
1. The
queues may be mirrored across multiple nodes – This results in a choice of
using clusters
2. The
queues may be chained where one feeds into the other – This results in a choice
of using federation
3. The
queues may be arbitrary depending on application needs – This results in a
build your own or the shovel work
Conclusion: A private cloud message queue offering has to be
carefully planned and could begin with a single managed organization wide distributed
instance.
#codingexercise
Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate the number of 1's in their binary representation and return them as an array.
int GetBits(int num)
{
int count = 0;
for (int i = 0; i < num; i++)
{
List<Bit> bits = num.toBits();
count += bitx.Count( x => x & 0x1);
}
return count;
}
#codingexercise
Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate the number of 1's in their binary representation and return them as an array.
int GetBits(int num)
{
int count = 0;
for (int i = 0; i < num; i++)
{
List<Bit> bits = num.toBits();
count += bitx.Count( x => x & 0x1);
}
return count;
}
No comments:
Post a Comment