iluwatar / iluwatar/java-design-patterns

Space-based architecture

Open
#1,087 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

epic: architecture epic: pattern info: help wanted type: feature
Dominant language
Java
Stars
94.7k
Forks
27.4k
Avg merge
3d 4h
Merged PRs (30d)
10

Description

Description

The Space-Based Architecture design pattern is aimed at addressing scalability and concurrency issues by minimizing factors that limit application scaling. This pattern is ideal for applications with high user load and variable concurrent user volumes. The key components include processing units and virtualized middleware, with the primary aim of distributing and replicating data in-memory across processing units, eliminating the traditional database bottleneck.

Main Elements of the Pattern
  1. Processing Units: These contain application components, in-memory data grids, optional asynchronous persistent stores for failover, and a data replication engine. They can be dynamically started or stopped based on user load.
  2. Virtualized Middleware: This component includes:
    • Messaging Grid: Manages request routing to available processing units.
    • Data Grid: Manages data replication across processing units.
    • Processing Grid (optional): Manages distributed request processing across different processing units.
    • Deployment Manager: Monitors load conditions to dynamically scale processing units up or down.

References

Acceptance Criteria

  1. Implementation of Processing Units: Develop processing units that include application modules, in-memory data grids, and data replication engines.
  2. Middleware Components: Implement virtualized middleware components such as messaging grid, data grid, and deployment manager to manage request routing, data replication, and dynamic scaling.
  3. Scalability and Performance Testing: Conduct extensive testing to ensure the system can handle high concurrency and variable loads, achieving near-infinite scalability and high performance.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the repository’s existing Java design-pattern implementations and the referenced Space-Based Architecture material to establish the expected structure and scope. Done means the processing units, middleware components, and scalability testing described in the acceptance criteria are implemented and tested.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.