KEMBAR78
Apache Etch Introduction @ FOSDEM 2011 | PDF
Apache Etch.
Apache Etch
Grandy/Fitzner
BMW Car IT GmbH
Feb. 2011
Page 1


                  Efficient and feature-rich
                  network services.




                  BMW Car IT GmbH
Apache Etch
Grandy/Fitzner
BMW Car IT GmbH
                  Apache Etch.
Feb. 2011
Page 2            What is Etch?

                  framework for building network services

                  Key facts:

                    symmetric
                    sychronous, two-way and
                    asynchronous, one-way
                    error handling
                    timing constraints
                    convenient service description
                    fast & efficient
                    scalable: from phones to backend servers
                    modular architecture
                    language & transport independent
Apache Etch
Grandy/Fitzner
BMW Car IT GmbH
                  Apache Etch.
Feb. 2011
Page 3            Network Service Description.
                  module org.apache.etch.demo

                  service helloworld{
                         string hello(string msg)
                  }




                           Node                     Node


                      process

                                                       spawn thread

                         wait                          process request

                                                       terminate thread

                      process
Apache Etch
Grandy/Fitzner
BMW Car IT GmbH
                  Apache Etch.
Feb. 2011
Page 4            Symmetric two-way communication.
                  service helloworld{
                         @Direction(server)
                         string hello(string msg)

                        @Direction(client)
                        string askSomething(string question)
                  }



                        Client                      Server




                                 process
Apache Etch
Grandy/Fitzner
BMW Car IT GmbH
                  Apache Etch.
Feb. 2011
Page 5            Asynchronous one-way Communication.
                  service helloworld{
                         @Direction(server)
                         @Oneway
                         void hello(string msg)

                           @Direction(client)
                           @Oneway
                           void howdy(string msg)
                  }

                           Client                   Server



                      process

                                                        process




                                       process
                                    asynchronous
Apache Etch
Grandy/Fitzner
BMW Car IT GmbH
                  Apache Etch.
Feb. 2011
Page 6            Error handling & user data.
                  service helloworld{
                         struct User ( string name )

                        exception UserUnknownException ( string message )

                        @Timeout(500)
                        void hello(User user, string msg)
                             throws UserUnknownException
                  }
                         Node                     Node
Apache Etch
Grandy/Fitzner
BMW Car IT GmbH
                  Apache Etch.
Feb. 2011
Page 7            Non-functional aspects.

                  Programming language independent:
                  Bindings are currently available for
                  - Java
                  - C#
                  - C
                  - Google Go (alpha version), Javascript (alpha version)

                  Transport independent:
                  - default transport is TCP using a binary encoding
                  - adding new transports is simple
                  - XML available e.g. for C#,JavaScript binding

                  Tooling:
                  - Wireshark support
                  - basic Maven integration
                  - Eclipse plugins are underway

                  Efficiency (measured on a desktop system):
                  - ~ 40.000 asynchronous one-way calls per second
                  - ~ 15.000 blocking two-way calls per second
Apache Etch
Grandy/Fitzner
BMW Car IT GmbH
                   Apache Etch.
Feb. 2011
Page 8             Architecture.

                   fully symmetric, flexible protocol stack for client and server

                               Application                                                   Application

                        Stub                 Remote           generated               Stub                 Remote

                            DeliveryService           call stubs / forward requests      DeliveryService
            Mailbox                                                                                           Mailbox
              Mailbox       MailboxManager            manage requests / responses        MailboxManager         Mailbox
                  Mailbox                                                                                           Mailbox

                               Messagizer                    serialization                   Messagizer

                               Packetizer                  byte[]    Packets                 Packetizer

                               Transport                    e.g. TCP, SSL                    Transport




                                                          Implemented the same way for Java, C#, C, Go
Apache Etch
Grandy/Fitzner
BMW Car IT GmbH
                  Apache Etch.
Feb. 2011
Page 9            Roadmap.

                  -   more transports (e.g. UDP, Serial, ...)
                  -   more languages (first steps for JavaScript, Python exist)
                  -   naming service
                  -   discovery
                  -   web service gateway
                  -   more security
                  -   better IDE support
                  -   better maven integration
                  -   message routing, broker
                  -   ...
                               Where do you want to go?
Apache Etch
Grandy/Fitzner
BMW Car IT GmbH
                  Apache Etch.
Feb. 2011
Page 10           Find out more.

                  Website
                  www.incubator.apache.org/etch

                  Mailing Lists
                  etch-dev@incubator.apache.org
                  etch-user@incubator.apache.org

                  Contributors: (initial development done @ Cisco)
                  Rene Barrazza, Seth Call, Scott Comer, James
                  DeCocq, James Dixson, Michael Fitzner, Holger Grandy,
                  J.D. Liau, Youngjin Park, Gaurav Sandhir

                  Speaker contact:
                  Holger.Grandy@bmw-carit.de

Apache Etch Introduction @ FOSDEM 2011

  • 1.
    Apache Etch. Apache Etch Grandy/Fitzner BMWCar IT GmbH Feb. 2011 Page 1 Efficient and feature-rich network services. BMW Car IT GmbH
  • 2.
    Apache Etch Grandy/Fitzner BMW CarIT GmbH Apache Etch. Feb. 2011 Page 2 What is Etch? framework for building network services Key facts: symmetric sychronous, two-way and asynchronous, one-way error handling timing constraints convenient service description fast & efficient scalable: from phones to backend servers modular architecture language & transport independent
  • 3.
    Apache Etch Grandy/Fitzner BMW CarIT GmbH Apache Etch. Feb. 2011 Page 3 Network Service Description. module org.apache.etch.demo service helloworld{ string hello(string msg) } Node Node process spawn thread wait process request terminate thread process
  • 4.
    Apache Etch Grandy/Fitzner BMW CarIT GmbH Apache Etch. Feb. 2011 Page 4 Symmetric two-way communication. service helloworld{ @Direction(server) string hello(string msg) @Direction(client) string askSomething(string question) } Client Server process
  • 5.
    Apache Etch Grandy/Fitzner BMW CarIT GmbH Apache Etch. Feb. 2011 Page 5 Asynchronous one-way Communication. service helloworld{ @Direction(server) @Oneway void hello(string msg) @Direction(client) @Oneway void howdy(string msg) } Client Server process process process asynchronous
  • 6.
    Apache Etch Grandy/Fitzner BMW CarIT GmbH Apache Etch. Feb. 2011 Page 6 Error handling & user data. service helloworld{ struct User ( string name ) exception UserUnknownException ( string message ) @Timeout(500) void hello(User user, string msg) throws UserUnknownException } Node Node
  • 7.
    Apache Etch Grandy/Fitzner BMW CarIT GmbH Apache Etch. Feb. 2011 Page 7 Non-functional aspects. Programming language independent: Bindings are currently available for - Java - C# - C - Google Go (alpha version), Javascript (alpha version) Transport independent: - default transport is TCP using a binary encoding - adding new transports is simple - XML available e.g. for C#,JavaScript binding Tooling: - Wireshark support - basic Maven integration - Eclipse plugins are underway Efficiency (measured on a desktop system): - ~ 40.000 asynchronous one-way calls per second - ~ 15.000 blocking two-way calls per second
  • 8.
    Apache Etch Grandy/Fitzner BMW CarIT GmbH Apache Etch. Feb. 2011 Page 8 Architecture. fully symmetric, flexible protocol stack for client and server Application Application Stub Remote generated Stub Remote DeliveryService call stubs / forward requests DeliveryService Mailbox Mailbox Mailbox MailboxManager manage requests / responses MailboxManager Mailbox Mailbox Mailbox Messagizer serialization Messagizer Packetizer byte[] Packets Packetizer Transport e.g. TCP, SSL Transport Implemented the same way for Java, C#, C, Go
  • 9.
    Apache Etch Grandy/Fitzner BMW CarIT GmbH Apache Etch. Feb. 2011 Page 9 Roadmap. - more transports (e.g. UDP, Serial, ...) - more languages (first steps for JavaScript, Python exist) - naming service - discovery - web service gateway - more security - better IDE support - better maven integration - message routing, broker - ... Where do you want to go?
  • 10.
    Apache Etch Grandy/Fitzner BMW CarIT GmbH Apache Etch. Feb. 2011 Page 10 Find out more. Website www.incubator.apache.org/etch Mailing Lists etch-dev@incubator.apache.org etch-user@incubator.apache.org Contributors: (initial development done @ Cisco) Rene Barrazza, Seth Call, Scott Comer, James DeCocq, James Dixson, Michael Fitzner, Holger Grandy, J.D. Liau, Youngjin Park, Gaurav Sandhir Speaker contact: Holger.Grandy@bmw-carit.de