This is a continuation of a series of articles on hosting solutions and services on Azure public cloud with the most recent discussion on Multitenancy here. The previous articles introduced serverless batch processing with durable functions in Azure Container Instances. This article mentions some of the Azure Container Instances.
The components of this approach include an
orchestration function as a durable function that orchestrates and performs the
ACI container and app deployment, monitoring and cleanup, an activity function
that is also a durable function and creates the ACI container group and
instance, an Azure Container Registry that stores batch processing app in a
container image, Azure container instances which run the batch processing jobs,
Azure Active Directory and Managed Service Identity that are needed to manage
the Azure Container Instances and Application Insights that monitors the job
progress.
These components enable a series of durable
functions to be connected, managed, monitored and retired. When the job
completes. The batch processing job invokes the orchestrator function by
raising an external event and provides job status Completed or Failed.
Depending on the job status, the orchestrator function stops, restarts, or
deletes the container group.
These serve for scenarios for using multitenant serverless batch
processing are ones where workloads are simple and use only one container
image. Another use case might be the case where computing needs vary depending
on each individual job. Multi-tenant scenarios where some tenants need large
computing power and other tenants have small computing requirements represent
hybrid requirements and serverless batch processing can help in this regard.
Some considerations apply towards these batch processing
scenarios. Long term stable workloads are better done by orchestrating
containers in a cluster of dedicated virtual machines rather than on Azure
Container Instances. However, ACI can quickly expand and contract the overall
capacity to meet surges and peak traffic. In addition to variable load, it is
also the most efficient, fast and cost-effective way to scale the number of
instances.
On dedicated Virtual machines, rather than scale out the number of
VMs and then deploy more containers onto those Virtual Machines, durable
functions can be used to schedule and manage the container deployment and
deletion. ACI enables a layered approach
to orchestration by providing all of the scheduling and management to run
single containers, allowing orchestrator platforms to manage multi-container tasks
and architectures like scaling and coordinated upgrades.
{
If
(regexp[0] == ‘^’)
Return matchHere(regexp+1, text);
Do{
If
(matchHere(regexp, text)
return 1;
} while(*text++
!= ‘/0’);
Return 0;
}
Int
matchHere(char* regexp, char* text)
{
If
(regexp[0] == ‘/0’)
return 1;
if
(regexp[1] == ‘*’)
return matchStar(regexp[0], regexp+2,
text);
if
(regexp[0] == ‘$’ || regexp[1] == ‘/0’)
return *text == ‘/0’;
if (*text
!= ‘/0’ && (regexp[0] == ‘.’ || *regexp == *text))
return matchHere(regexp+1, text+1);
return 0;
}
Int
matchStar(int c, char* regexp, char* text)
{
Do
{
If
(matchHere(regexp, text))
Return 1;
}while
(*text != ‘/0’ && (*text++ == c || c == '.'));
Return 0;
}
No comments:
Post a Comment