Stuff The Internet Says On Scalability For August 10, 2012
It's HighScalability Time:
- TNW: On an average day, out of 30 trillion URLs on the web, Google crawls 20B web pages and now serves 100B searches every month.
- Quotable Quotes:
- @tapbot_paul: The 2 computers on the Curiosity rover are RAD750 based, they are approximately 1/10th the speed of an iPhone 4s and “only” cost $200k each.
- @merv: #cassandra12 Why @adrianco loves what he's doing: "You are no longer IO-bound, you’re CPU bound, like you’re supposed to be."
- @maxtaco: Garbage collection solves a minuscule %age of bugs, that are non-critical (memleaks? big deal!) and easy to find and fix. At a HUGE expense.
- @merv: #cassandra12 @eddie_satterly describing $1M savings in first year migrating from MS SQL Server with SAN to Cassandra solution - w more data.
- @mattbrauchler: A slow node is worse than a down node #cassandra12
- @practicingEA: "The math of predictive analytics has been around for years, its the computers that have caught up"
- @markimbriaco: When we say to decouple your code, we mean from other code and not from reality. Sorry that was confusing.
- @ArdenEliz: Reid Hoffman: "A first mover is not the first one to launch; it's the first one to scale."
- To program like a Martian take a look at Monitoring the Execution of Space Craft Flight Software. Software that delivered the rover within a foot of it's target and is expected to keep working autonomously for years, pretty much isn't programmed like how anything is programmed today. Lots of people, lots of testing, lots of threads, lots of state machines, it's defined in terms of properties using formal methods, and most code is generated. How could they have got it so wrong?
- Take note funding seeking startupers and read Chris Dixon's Ten million users is the new one million users. If you are building a transaction oriented site, as in people pay money, then you will have to scale 10x less than if you are building a non-transactional site (ad supported).
- Facebook is now shipping early and ship twice as often.
- A Provably Correct Scalable Concurrent Skip List: We propose a new concurrent skip list algorithm distinguished by a combination of simplicity and scalability. The algorithm employs optimistic synchronization, searching without acquiring locks, followed by short lock-based validation before adding or removing nodes.
- eBay is going OpenStack. We've seen very little in the way of street protests. The idea of a the creation of new Linux style platform at broader stack level is interesting.
- Foursquare as switched from Solr to Elastic Search in order to keep pace with the number of new places being added. Elastic Search shards data which makes it easy to split up documents so they can fit on single machines and the merge results from multiple machines.
- Have you ever mused: why can't my medical experience be as good as my fast food experience? Here's an eye opening answer--Big Med--that will be most enlightening. It's all about scaling: Scaling good ideas has been one of our deepest problems in medicine. Regulation has had its place, but it has proved no more likely to produce great medicine than food inspectors are to produce great food. During the era of managed care, insurance-company reviewers did hardly any better. We’ve been stuck. But do we have to be?
- In a bid for more universal universality Cassandra is taking on a little relational nature with support for JOINs and little Redis nature with support for maps and lists, at least in CQL3.
- Memory Access Patterns Are Important. It wasn't uncommon to spend huge amounts of time laying out memory for efficient access. This wonderful post shows attention to memory is still a dramatically effective performance booster. One rule was accessing memory linerarly is free. Still looks good: The difference between an L1D cache-hit, and a full miss resulting in main-memory access, is 2 orders of magnitude; i.e. <1ns vs. 65-100ns. If algorithms randomly walk around our ever increasing address spaces, then we are less likely to benefit from the hardware support that hides this latency. Perform chunks of work on data that is co-located, and we stride around memory in a predictable fashion, then our algorithms can be many times faster. For example rather than using bucket and chain hash tables, like in the JDK, we can employ hash tables using open-addressing with linear-probing. Rather than using linked-lists or trees with single items in each node, we can store an array of many items in each node.
- Twitter has released Trident: a high-level abstraction for realtime computation, which they hope will make realtime computation as easy as batch computation. It seamlessly supports a "mix of high throughput (millions of messages per second), stateful stream processing with low latency distributed querying." And it has quite a few high power features: exactly-once semantics, joins, aggregations, grouping, functions, filters, and stateful, incremental processing across and backend database.
- Aaon Morton with a delicious Technical Deep Dive: query performance. Lots of great details.
- Want a crowdsourced service predicting line wait-time estimates within a mean absolute error of less than 2 minutes? There's an app for that. A game I've always wanted is one to score my line choice on checkout. Did I pick the fastest line or did I screw up and pick the slow line, say I didn't predict the person would pay with cash, which slows everything down. The only problem is I would have to score my own choice and I don't really trust myself.
- dablooms: an open source, scalable, counting bloom filter. This project aims to demonstrate a novel bloom filter implementation that can scale, and provide not only the addition of new members, but reliable removal of existing members.
- Surviving Failures in Bandwidth-Constrained Datacenters: We propose and evaluate a novel optimization framework that achieves both high fault tolerance and significantly reduces bandwidth usage in the network core by exploiting the skewness in the observed communication patterns. This project aims to demonstrate a novel bloom filter implementation that can scale, and provide not only the addition of new members, but reliable removal of existing members.
- Here's another database option, OpenLDAP MDB: MDB is an ultra-fast, ultra-compact key-value data store. It uses memory-mapped files, so it has the read performance of a pure in-memory database while still offering the persistence of standard disk-based databases, and is only limited to the virtual address space (it is not limited to the size of physical RAM).
- Ask HN: How to learn web scalability?
- 5 Things You Overlooked with MySQL Dump: Point In Time Recovery, Locking & Consistency, Backups of stored code, Separate schema & data dumps, A few more options.