Improve Scalability With New Thread Pool APIs

Pooled Threads: Improve Scalability With New Thread Pool APIs — MSDN Magazine, October 2007

The thread pool component that has been part of the platform since the release of Windows 2000, for example, has undergone a complete rearchitecture. The new implementation brings with it a new thread pool API that should make it much easier for developers to write correct code.

Scalability chez Wall Street vs. chez Web2.0s

Nati Shalom’s Blog: Why most large-scale Web sites are not written in Java

…similar solutions for addressing the scalability challenges:

On the Data Tier we see the following:

1. Adding a caching layer to take advantage of memory resources availability and reduce I/O overhead

2. Moving from a database-centric approach to partitioning, aka shards

On the Business Logic Tier:

3. Adding parallelization semantics to the application tier (e.g., MapReduce)

4. Moving to scale-out application models to achieve linear scalability

5. Moving away from the classic two-phase commit and XA for transaction processing (See: Lessons from Pat Helland: Life Beyond Distributed Transactions)

Attributes of a Scalable (data intensive) Application

Cary Millsap, former VP of Oracle’s System Performance Group and the cofounder of Hotsos.

…doing things an application doesn’t need to do is exactly what makes it slow, unscalable, and—in the end—economically inefficient.

  1. Don’t run reports that nobody reads.
  2. Don’t generate more output than you need.
  3. Don’t execute a business process any more often than the business needs.
  4. Don’t write SQL that visits more blocks in the database buffer cache than necessary.
  5. Don’t update a column’s value to the same value it already has.
  6. Push data when it’s ready instead of forcing applications to poll to see if there’s any work to do.
  7. Don’t generate redo and undo when you don’t need the recoverability benefits provided by generating it.
  8. Don’t parse any SQL statement that you could have pre-parsed and shared.
  9. Don’t process DML one row at a time; use array fetches, bulk inserts, etc.
  10. Don’t lock data any more often or for any longer than is absolutely necessary.

While I won’t pretend that the list is complete, I do believe that it should help you get into the spirit of understanding what an appropriately lean application should look like.

Technorati Tags: