Message-Passing Concurrency for Scalable, Stateful, Reconfigurable Middleware
Message-passing concurrency (MPC) is increasingly being used to build systems software that scales well on multi-core hardware. Functional programming implementations of MPC, such as Erlang, have also leveraged their stateless nature to build middleware that is not just scalable, but also dynamically reconfigurable. However, many middleware platforms lend themselves more naturally to a stateful programming model, supporting session and application state. A limitation of existing programming models and frameworks that support dynamic reconfiguration for stateful middleware, such as component frameworks, is that they are not designed for MPC.
In this paper, we present Kompics, a component model and programming framework, that supports the construction and composition of dynamically reconfigurable middleware using stateful, concurrent, message-passing components. An added benefit of our approach is that by decoupling our component execution model, we can run the same code in both simulation and production environments. We present the architectural patterns and abstractions that Kompics facilitates and we evaluate them using a case study of a non-trivial key-value store that we built using Kompics. We show how our model enables the systematic development and testing of scalable, dynamically reconfigurable middleware.
Keywordscomponent model message-passing compositional concurrency dynamic reconfiguration multi-core execution reproducible simulation distributed systems architecture
Unable to display preview. Download preview PDF.
- 2.Anderson, J.C., Lehnardt, J., Slater, N.: CouchDB: The Definitive Guide Time to Relax, 1st edn. O’Reilly Media, Inc. (2010)Google Scholar
- 3.Armstrong, J.: Making reliable distributed systems in the presence of software errors. PhD Dissertation, The Royal Institute of Technology, Sweden (2003)Google Scholar
- 7.Welsh, M., Culler, D., Brewer, E.: Seda: an architecture for well-conditioned, scalable internet services. In: SOSP 2001, pp. 230–243. ACM, New York (2001)Google Scholar
- 9.Dory, M., Parrish, A., Berg, B.: Introduction to Tornado. O’Reilly Media (2012)Google Scholar
- 11.Arad, C., Shafaat, T.M., Haridi, S.: CATS: Linearizability and partition tolerance in scalable and self-organizing key-value stores. Technical Report T2012:04, Swedish Institute of Computer Science (2012)Google Scholar
- 12.Armstrong, J.: Programming Erlang. In: Pragmatic Bookshelf (July 2007)Google Scholar
- 13.Odersky, M., Zenger, M.: Scalable component abstractions. In: OOPSLA 2005, pp. 41–57. ACM, New York (2005)Google Scholar
- 19.Dashofy, E.M., Asuncion, H.U., Hendrickson, S.A., Suryanarayana, G., Georgas, J.C., Taylor, R.N.: Archstudio 4: An architecture-based meta-modeling environment. In: ICSE Companion, pp. 67–68 (2007)Google Scholar
- 21.Krohn, M., Kohler, E., Kaashoek, M.F.: Events can make sense. In: USENIX ATC 2007, pp. 7:1–7:14. USENIX Association, Berkeley (2007)Google Scholar
- 22.Miranda, H., Pinto, A., Rodrigues, L.: Appia, a flexible protocol kernel supporting multiple coordinated channels. In: Proceedings of the 21st International Conference on Distributed Computing Systems, Phoenix, Arizona, pp. 707–710. IEEE (2001)Google Scholar
- 23.Agha, G.: Actors: a model of concurrent computation in distributed systems. MIT Press, Cambridge (1986)Google Scholar
- 25.Varga, A., Hornig, R.: An overview of the OMNeT++ simulation environment. In: Simutools 2008 (2008)Google Scholar
- 28.Sigelman, B.H., Barroso, L.A., Burrows, M., Stephenson, P., Plakal, M., Beaver, D., Jaspan, S., Shanbhag, C.: Dapper, a large-scale distributed systems tracing infrastructure. Technical report, Google, Inc. (2010)Google Scholar