2. 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
3. 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
4. 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
5. 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
6. 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
7. 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
8. 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
9. 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?
10. 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