BOINC System Architecture
From Unofficial BOINC Wiki
Contents |
[edit] General
The BOINC System is a software platform for Distributed Computing using volunteered computer resources. Because of the interest in the large scale distributed computing projects, the BOINC System is an excellent foundation that a research project can use to leverage the use of smaller PC class computers that are already available but are not always in use. With the BOINC Client Software, a BOINC Powered Project can use local assets that can spend large parts of the day doing nothing, and capture that resource and put it to good use. Even better, the attraction of volunteer Participants can capture even more computing resources.
BOINC's design goals are described in this paper.
The BOINC System's features fall into several areas:
[edit] Resource Sharing Among Independent Projects
Many different projects can use BOINC. Projects are independent; each one operates its own servers and databases. However, projects can share resources in the following sense: Participants install the BOINC Client Software as a normal program, which in turn downloads and executes project-specific application programs. Participants control which projects they participate in, and how their resources are divided among these projects. When a project is down or has no work, the resources of its participants are divided among the other projects in which the participants are registered.
[edit] Project Features
BOINC provides features that simplify the creation and operation of distributed computing projects.
- Flexible application framework
- Existing applications in common languages (C, C++, Fortran) can run as a BOINC System Science Application with little or no modification. An Application can consist of several files (e.g. multiple programs and a coordinating script). New versions of applications can be deployed with no participant involvement.
- Security
- The BOINC System protects against several types of attacks. For example, it uses digital signatures based on public-key encryption to protect against the distribution of viruses.
- Multiple servers and fault-tolerance
- Projects can have separate Scheduling and Data Servers, with multiple servers of each type. Clients automatically try alternate servers; if all servers are down, clients do exponential back-off to avoid flooding the servers when they come back up.
- System monitoring tools
- The BOINC System includes a web-based system for displaying time-varying measurements (CPU load, network traffic, database table sizes). This simplifies the task of diagnosing performance problems.
- Source code availability
- All of the BOINC Software is distributed under a public license that allows it to be used freely for public or private distributed computing projects, with the restriction that it cannot be used as the basis for commercial products. BOINC applications need not be open source. Each project must provide and maintain its own server systems; these systems can be set up easily using open-source components (MySQL, PHP, Apache).
- Support for large data
- BOINC supports applications that produce or consume large amounts of data, or that use large amounts of memory. Data distribution and collection can be spread across many servers, and participant hosts transfer large data unobtrusively. Users can specify limits on disk usage and network bandwidth. Work is dispatched only to hosts able to handle it.
[edit] Participant Features
The BOINC System provides the following features to participants:
- Multiple participant platforms
- The BOINC Client Software is available for most common platforms (Mac OS X, Windows, Linux and other Unix systems). The BOINC Client Software can use multiple CPUs.
- Web-based participant interfaces
- The BOINC System provides web-based interfaces for account creation, preference editing, and participant status display. A Participant's preferences are automatically propagated to all their hosts, making it easy to manage large numbers of hosts.
- Configurable host work caching
- The BOINC Client Software downloads enough work to keep its host busy for a user-specifiable amount of time. This can be used to decrease the frequency of connections or to allow the host to keep working during project downtime.
[edit] BOINC System Architecture
The BOINC Software has a architecture that distinguishes distributed computing projects and looks like the following:
All of the objects that have a blue color are part of the entire software suite that comprises the BOINC System. All of the red (well, pink maybe?) color objects are part of the project that is being hosted on the BOINC System. So why don't we list these objects, and describe their place and purpose:
[edit] Participant
Well, without this person we have little reason to be doing all of this. The person that is a Participant in a BOINC Powered Project donates his computer's idle processing capabilities and the rest of all of this stuff is just there to support them.
The Participant has two interfaces that they use to interact with the system. The first is the Project's Web Server that is hosted by the project and the BOINC Manager (what the rest of this document will discuss).
[edit] BOINC Powered Project - Project Specific Components
Obviously not done parts follow:
Project Back-End
stuff
Project Data Server
stuff
Project Science Database
stuff
Project Science Application
stuff
BOINC
BOINC Back-End Interface
stuff
BOINC Database
stuff
BOINC Scheduling Server
stuff
BOINC Web Server
stuff
BOINC Software
BOINC Manager
stuff
BOINC Manager
stuff
BOINC Manager to Application API
stuff


