Advertisement

Message-Passing Concurrency for Scalable, Stateful, Reconfigurable Middleware

  • Cosmin Arad
  • Jim Dowling
  • Seif Haridi
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7662)

Abstract

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.

Keywords

component model message-passing compositional concurrency dynamic reconfiguration multi-core execution reproducible simulation distributed systems architecture 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Chen-Becker, D., Weir, T., Danciu, M.: The Definitive Guide to Lift: A Scala-based Web Framework. Apress, Berkely (2009)CrossRefGoogle Scholar
  2. 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. 3.
    Armstrong, J.: Making reliable distributed systems in the presence of software errors. PhD Dissertation, The Royal Institute of Technology, Sweden (2003)Google Scholar
  4. 4.
    Haller, P., Odersky, M.: Scala actors: Unifying thread-based and event-based programming. Theor. Comput. Sci. 410(2-3), 202–220 (2009)MathSciNetCrossRefzbMATHGoogle Scholar
  5. 5.
    Coulson, G., Blair, G., Grace, P., Taiani, F., Joolia, A., Lee, K., Ueyama, J., Sivaharan, T.: A generic component model for building systems software. ACM Trans. Comput. Syst. 26(1), 1–42 (2008)CrossRefGoogle Scholar
  6. 6.
    Bruneton, E., Coupaye, T., Leclercq, M., Quéma, V., Stefani, J.B.: The Fractal component model and its support in Java: Experiences with auto-adaptive and reconfigurable systems. Softw. Pract. Exper. 36(11-12), 1257–1284 (2006)CrossRefGoogle Scholar
  7. 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
  8. 8.
    Wampler, D.: Scala web frameworks: Looking beyond lift. IEEE Internet Computing 15, 87–94 (2011)CrossRefGoogle Scholar
  9. 9.
    Dory, M., Parrish, A., Berg, B.: Introduction to Tornado. O’Reilly Media (2012)Google Scholar
  10. 10.
    Blumofe, R.D., Leiserson, C.E.: Scheduling multithreaded computations by work stealing. J. ACM 46(5), 720–748 (1999)MathSciNetCrossRefzbMATHGoogle Scholar
  11. 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. 12.
    Armstrong, J.: Programming Erlang. In: Pragmatic Bookshelf (July 2007)Google Scholar
  13. 13.
    Odersky, M., Zenger, M.: Scalable component abstractions. In: OOPSLA 2005, pp. 41–57. ACM, New York (2005)Google Scholar
  14. 14.
    Srinivasan, S., Mycroft, A.: Kilim: Isolation-Typed Actors for Java. In: Dell’Acqua, P. (ed.) ECOOP 2008. LNCS, vol. 5142, pp. 104–128. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  15. 15.
    Hu, R., Kouzapas, D., Pernet, O., Yoshida, N., Honda, K.: Type-Safe Eventful Sessions in Java. In: D’Hondt, T. (ed.) ECOOP 2010. LNCS, vol. 6183, pp. 329–353. Springer, Heidelberg (2010)CrossRefGoogle Scholar
  16. 16.
    Ostrowski, K., Birman, K., Dolev, D., Ahnn, J.H.: Programming with Live Distributed Objects. In: Dell’Acqua, P. (ed.) ECOOP 2008. LNCS, vol. 5142, pp. 463–489. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  17. 17.
    Luckham, D.C., Vera, J.: An event-based architecture definition language. IEEE Trans. Softw. Eng. 21(9), 717–734 (1995)CrossRefGoogle Scholar
  18. 18.
    Medvidovic, N., Taylor, R.N.: A classification and comparison framework for software architecture description languages. IEEE Trans. Softw. Eng. 26(1), 70–93 (2000)CrossRefGoogle Scholar
  19. 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
  20. 20.
    Aldrich, J., Notkin, D.: Architectural Reasoning in ArchJava. In: Deng, T. (ed.) ECOOP 2002. LNCS, vol. 2374, pp. 334–367. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  21. 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. 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. 23.
    Agha, G.: Actors: a model of concurrent computation in distributed systems. MIT Press, Cambridge (1986)Google Scholar
  24. 24.
    Fähndrich, M., Aiken, M., Hawblitzel, C., Hodson, O., Hunt, G., Larus, J.R., Levi, S.: Language support for fast and reliable message-based communication in Singularity OS. SIGOPS Oper. Syst. Rev. 40(4), 177–190 (2006)CrossRefGoogle Scholar
  25. 25.
    Varga, A., Hornig, R.: An overview of the OMNeT++ simulation environment. In: Simutools 2008 (2008)Google Scholar
  26. 26.
    van Renesse, R., Birman, K.P., Maffeis, S.: Horus: a flexible group communication system. Commun. ACM 39(4), 76–83 (1996)CrossRefGoogle Scholar
  27. 27.
    Killian, C.E., Anderson, J.W., Braud, R., Jhala, R., Vahdat, A.M.: Mace: language support for building distributed systems. SIGPLAN Not. 42(6), 179–188 (2007)CrossRefGoogle Scholar
  28. 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

Copyright information

© IFIP International Federation for Information Processing 2012

Authors and Affiliations

  • Cosmin Arad
    • 1
    • 2
  • Jim Dowling
    • 1
    • 2
  • Seif Haridi
    • 1
    • 2
  1. 1.KTH Royal Institute of TechnologyStockholmSweden
  2. 2.Swedish Institute of Computer ScienceKistaSweden

Personalised recommendations