Tsunami Research Logo
The Hive Computing CompanyTM
ProductsDevelopersPartnersNews & EventsCompanyContact Us
Products Overview
Hive Computing
Assumptions
Applications
Hive Computing and
HiveCreator
Benefits
Characteristics
Features
FAQ
Hive
Hive Computing
HiveCreator
How can we help you?
Learn more about
Hive Computing
Request additional information
Have someone
contact me
Download white papers
Request an evaluation copy of HiveCreator
Home > Products > FAQ > Hive

Hive FAQ

What is a Hive?

A Hive is a mission critical computing environment that is...

  • Self-Organizing
  • Self-Healing
  • Self-Maintaining

A Hive enables businesses and other organizations to leverage the rising performance and falling prices of commodity computers to construct mission critical computing solutions that are simultaneously...

  • Survivable
  • Scalable
  • Affordable

What are the key features of a Hive?

A Hive has several key features...

  • Application Fabric
  • Assimilation
  • Collective Intelligence
  • Platform Agile
  • TimeSync

How does a Hive differ from existing solutions?

The advantage of a Hive relative to existing solutions is that a Hive is simultaneously...

  • Survivability
  • Scalability
  • Affordability

In contrast, existing solutions force you to make trade-offs.

Mainframes are capable but are extremely expensive to acquire and maintain. Fault tolerant computers are available and predictable but are inflexible, expensive, and hard to maintain. Application servers are more scalable and easier to use but are fragile, expensive, and inflexible. Solutions like Linux clusters and distributed supercomputers offer tremendous scalability but are not built for business.

As a result, when building mission critical applications, too often businesses and other organizations must make tradeoffs and settle for solutions that satisfy only a subset of their needs.

In contrast, a Hive takes advantage of the falling costs, and rising capabilities, of commodity computers to deliver all of these benefits at the same time.

What are the key elements of a Hive?

A Hive is made up of several components...

Hive
     Worker
     Worker
     Worker
          Package
               Application
                    Service
                    Service
               Application
                    Service
                    Service
                    Service
                         Process Flows
                             Tasks

Each Hive is made up of one or more Workers. Deployed on each Worker is a Package which contains all of the code and other documents that describe different Applications.

hive computing architecture

An Application is a logical entity, and the things that bring it to life are its Operations. Operations are functions that can be performed. Each Operation is made up of one or more Process Flows which control the sequence in which Tasks are executed. Operations can be called by Client Applications. The Interface of each Worker is identical and is made up of the Operations it can perform.

hive computing operations

Process Flows group together Tasks, which are discrete blocks of code (similar to a subroutine) which perform discrete Operations.

hive computing process flows

The advantage of ensuring that every Worker is configured identically, and breaking an application up into a series of Tasks wrapped by a Process flow, is that it enables a Hive to be extremely Survivable. Every Request is sent to two Workers in a Hive (B and C in the example below).

As a result, if Worker B becomes incapacitated, the Hive can instruct Worker C to complete the processing of the Request at the point in the Process Flow where Worker B left off. This eliminates the need to restart the processing of the Request from the beginning of the Process Flow.

Do different Workers perform different Services?

No. Every Worker can perform the same set of Services since the same Package is deployed to every Worker in the Hive. There are two reasons why this is done. First, it allows any Worker to handle any request from any Client Application and pick up requests that may have died on another Worker. This dramatically improves the reliability of the system. Second, it makes it possible for a Hive to manage and maintain its own configuration.

What are some examples of a Service?

In general, a Hive is best suited to providing transaction-oriented Services.

A brokerage firm might use a Hive to provide the following Services...

  • GetRealtimeQuoteForStock
  • GetDelayedQuoteForStock
  • GetChartForStock
  • GetNewsForStock
  • GetProfileForStock
  • CalculateCurrentPortfolioValue

A credit card company might use a Hive to provide the following Services...

  • PerformAuthorization
  • PerformFraudCheck
  • CaptureTransaction
  • ReturnTransaction
  • VoidTransaction

A bank may support an ATM network with a Hive that provides the following Services...

  • GetCurrentBalanceForAccount
  • WithdrawMoneyFromAccount
  • DepositMoneyIntoAccount
  • TransferMoneyBetweenAccounts

A mortgage company might use a Hive to provide the following Services...

  • GetScoreForApplication
  • CalculateMonthlyPayment
  • CalculateEscrow

An ecommerce application might use a Hive to provide the following Services...

  • GetCurrentPriceForProduct
  • GetCurrentInventoryLevelForProduct

A security application might use a Hive to provide the following Services...

  • AnalyzeFingerprint
  • AnalyzeFace
  • AuthenticateUser

What kinds of computers can act as a Worker?

A Worker can be any of a variety of machines, ranging from blades to PCs to high end UNIX servers. These can be either newly-purchased or existing machines, as long as they are used only in the Hive.

How many computers do you need to make up, and can reside in, a Hive?

A Hive can be made up of from between one and several thousand (or more) Workers.

If this is like a beehive, then where is the queen bee?

At any moment, several Workers in a Hive are acting as defacto queen bees, meaning that they are monitoring and guiding the activities of the Hive. However, should one of those Workers become incapacitated, the other Workers will notice that fact and a new Worker will take over that role. As a result, the only way to kill a Hive is to kill every Worker.

How does a Client Application access an Service?

In order to access an Service, the developer of a client application must import the HiveCreator API into their application. From that point on, the HiveCreator API allows the Client Application to communicate with the Hive and request that it perform different Services. The HiveCreator API is implemented as a Windows .DLL file, UNIX .SO file, or Java .JAR file, and is deployed on the machine on which the client application runs.

Can a Hive be accessed via an XML or similarly-encoded message?

At the moment, all communication with a Hive must flow through the HiveCreator API. However, future versions of the product will include a HiveCreator Proxy, which will provide SOAP and other interfaces. Developers will then be able to call the HiveCreator Proxy, which will handle all communications with the Hive.

Where does the database sit in a Hive?

Any databases and other resources are located outside of a Hive and are accessed through a connection pool. This ensures both that external resources do not become overloaded and that there is no single point of failure when it comes to communicating with them.

Where will a Hive fit into my enterprise architecture?

A Hive will not replace or interfere with your existing enterprise systems. Instead a Hive will be used to perform a discrete set of high-value Services that are used by one or more Client Applications. For example, this may include processing certain types of transactions or requests. However, over time the range of Services performed in a Hive will likely expand and your Hive will come to perform functions that were previously performed by other systems.

What is involved in porting an existing application to a Hive?

Enabling an existing application to run as a set of Services is a straightforward, three-step process...

  1. The developer divides their application up into individual Tasks. Often this means simply wrapping existing subroutines and configuring them to communicate through the HiveCreator Simple Task Interface.
  2. The developer creates a Process Flow, which is an XML document that describes both the logical flow of the application and any recovery parameters. Often, this Process Flow replaces the main() function in a C or C++ application.
  3. The developer deploys their Tasks and Process Flows.

Once the Tasks and Process Flows that lie beneath a Service have been deployed, a Hive takes over the process of ensuring that each Worker has the correct version.

In what ways is a Hive self-healing?

Several characteristics of a Hive allow it to be described as self-healing.

First, HiveCreator uses a declarative programming model in which the developer simply has to tell the Hive how his application should work; the developer doesn’t have to worry about failure conditions. Instead, the Hive is responsible for monitoring the execution of all code and recovering it if a failure occurs. The goal is to allow the developer to focus on the application and not worry about things like the complexities of the physical environment.

Second, if an individual Worker fails, the Hive will take over the responsibility for recovering it (as long as it is not a hardware fault). That can mean re-installing the operating system, HiveCreator core executables, and application code. A Hive will also take over the responsibility for bringing new workers on line and maintaining their configuration once they have been assimilated.