Xu Cao
Bringing more power and beauty to the system with Erlang
Lightpole.net
Xu obtained a Masters in Computer Architecture from Wuhan University, China in 2008. After graduation, he started his development career with mobile banking and airline services, in which robust and scalable backend services are of paramount importance. After looking through several programming languages, they found Erlang inspired them to construct the core of their system. He spent three years building the core system with Erlang. Since then, it has been deployed in a handful of the largest banks and airline companies in China. Now he is an enthusiast of Erlang and is working on bringing more power and beauty to the system.
Xu Cao is Giving the Following Talks
Design and implementation of an Erlang-based gateway
To contemporary applications, the Web has become a fundamental layer
of databases and application logic. For example, in a mobile banking
system, financial services--such as account management, bill payment,
security trading--sit in application servers, and a content gateway
integrates these web services APIs, translates data to presentation, and
delivers to mobile devices for rendering. In such an architecture, a
content gateway is the key integration point of many application
systems. HTTP persistent connections are used between the gateway and
application servers, and between the gateway and mobile clients. This
gateway is required to efficiently support large number of concurrent
requests from many clients, and within each request, possibly long
queries to and from various remote application servers; therefore, the
scalability and robustness of the gateway are crucial to the entire
system.
In this presentation, we describe the implementation of such a
content gateway system, and share our real-world experience in its
optimization and operation. We chose to use Erlang to implement this
gateway because of its efficient and robust support of asynchronous
communication and process abstraction. To reduce CPU and memory usage
under load, we made frequent use of linked-in drivers to implement
functions such as template generation, XML processing, and database
connection. This system has been deployed and running in some of the
largest mobile banking systems and airline mobile portals in China,
supporting millions of users. We found that the robustness of Erlang and
the freedom to optimize a component by migrating it to C were crucial
during this process.