Velocity - Distributed In-Memory Application Cache Platform for Developing Scalable Applications
Microsoft has a new Project codename "Velocity", which is a distributed in-memory application cache platform for developing scalable, available, and high-performance applications. “Velocity” fuses memory across multiple computers to give a single unified cache view to applications.
Per the Velocity Blog:
"Distributed cache is becoming the key application platform component for providing scalability and high availability. In-memory caching has been traditionally used primarily for meeting the high performance requirements of applications. By fusing caches on multiple nodes into a single unified cache however, the distributed caches offer not only high performance, but also scale. By maintaining copies of data on multiple cache nodes (in a mutually consistent manner), the distributed cache can also offer high availability to applications. Distributed caches are especially ideal for applications with the following characteristics:
- There is a considerable number of data requests that are mostly read (e.g. product catalogs)
- Large concurrent access to such data can be provided by replicating the catalog data on multiple cache nodes. Since updates are infrequent to such data, maintaining consistency (synchronously or asynchronously) is not very expensive
- Applications that can tolerate some staleness of data
- Such applications can provide better performance and scale by not requiring immediate updates ore refreshing of caches
- Applications that can work with highly partitioned data (e.g. session data, shopping cart)
- High scale and performance can be supported by partitioning and distributing data across multiple cache nodes, and thereby distributing data processing across the cache nodes
- Applications that can work well with eventual consistency
- Consider a flight inventory application, which must satisfy a large number of concurrent read/writes to the inventory of seats. To support large scale, the distributed cache may replicate the inventory value on multiple nodes; however, the inventory values on different nodes have to be made consistent in some fashion. Requiring immediate (also known as strong) consistency will require updates to be synchronously propagated to all the copies. Such action would impact the overall performance and scale of the application. However, instead of immediately making the copies consistent, allowing them to eventually (in an asynchronous manner) become consistent will provide low latency, high performance access to inventory."
The main landing page for Velocity is here, which gets you to the download, forum, blogs, etc.
Tags:
Velocity