Taobao, is an online product volume breakthrough 100 million, daily turnover of more than 200 million yuan, registered users close to 80 million of the large E-commerce site, is Asia's largest shopping site. So for a large-scale Taobao site, I guess you will be very concerned about what the entire site has adopted what kind of technology, products and architecture, but also would like to know whether the use of Taobao in the open source software or the full use of commercial software. Then I will briefly introduce the application of Taobao open source software.
For a slightly larger site, its it must be a server cluster to provide Web services, the database must be separated from the application services, have a separate database server. For web sites such as Taobao, the application is also divided into many groups. Then I will introduce the application of open source software in Taobao from the application server operating system, Application Server software, Web server, database, development framework and so on.
Let's start with the operating system of the application server. An application server, from the software point of view of the bottom of his first is the operating system. Select the operating system first and then the application software based on the operating system. In Taobao, our application server is based on the Linux operating system. The Linux operating system, which was officially published for the first time since 1991, has been ¾¬ for 17 years and has been widely used on PC servers. On the hardware we choose PC Server instead of minicomputer, then the server's operating system is typically the LINUX,FREEBSD, Windows Server, or Windows Servers 2003. If you are not prepared to use a range of Microsoft products to build your application and have the ability to maintain Linux or FreeBSD, plus cost considerations, you should choose between Linux and FreeBSD. It can be said that now Linux and FreeBSD these two systems are hard to say, which must be better than the other one to a lot of good, can comprehensively surpass opponents, should be strengths. Then there is a factor in the choice of the company's technical personnel for which system more familiar, this familiar on the one hand is the system management, on the other hand is familiar with the kernel, the knowledge of the kernel for performance tuning and customization of the operating system will have a great help. and the application of comprehensive optimization, improve performance is also from the operating system optimization began.
After determining the server's hardware and the server's operating system, let's say the build of the business system. Taobao has a lot of business system applications are based on the JEE specification system. There are also some applications that are built in C + + or Java-built standalone. Then we have to select a implementation of the JEE specification of the application server. Our choice is JBoss applcation Server. JBoss as is an Open-source application server for Redhat Support JEE specification. A few years ago, if the use of Java technology to build Internet applications or enterprise-class applications, the choice of open source software is generally the Apache organization Tomcat, JBoss as and resin. In a strictly speaking sense, Tomcat and resin are not an application server, they are a container that implements some of the Java EE specifications. and the choice of commercial software is IBM's WebSphere and Bea's WebLogic. By now, in addition to JBoss as, Apache's Geronimo,sun GlassFish is also a very good JEE application server. It also gives more choices to current developers. Specifically for the current JEE application server comparison. This is not to repeat.
At the front of the application server, we used the Web server to do a forwarding, our choice of Web servers is the famous Apache. A few years ago, Apache was almost the only choice for open source Web server on Linux systems. There were other open source Web servers at that time, but not as powerful or as robust as Apache. Lighty will also be a very good choice for today. Lighty is a very lightweight, memory-intensive, and relatively small web Server. Although the function is not strong Apache, but in many scenarios, performance is very good, stronger than Apache. And Microsoft's IIS, it can only work on the Windows system. And using IIS, is basically the choice of ISAPI, ASP or asp.net for Web application development.
After talking about our operating system, application server, and webserver, let's talk about our database. In the application of Taobao, two kinds of relational database management systems are used. One is Oracle 10g for Oracle and the other is MySQL for Sun MySQL. Oracle is an excellent, widely used business database management software. It has a powerful function and security that can handle relatively large amounts of data. And MySQL is a very good open source database management software, is very suitable for multiple PC server composed of multiple points of storage node array (here I do not refer to the MySQL itself provided by the cluster function), each unit of data storage cost is very low. Install MySQL with multiple PC server to form a storage node array, through the replication of MySQL itself or the application of its own processing, can be a good guarantee of fault tolerance (allow some node failure), to ensure the robustness and reliability of the application. It can be said that in the choice of relational database management system, you can consider the application of its own circumstances to decide.
An Internet application, in addition to the server's operating system, WEB Server software, application Server software, database software, we will also involve a number of other systems, such as middleware systems, file storage systems, search, distributed framework, caching system and so on. In Taobao, these systems are self-developed, without the use of current commercial or open source products. Some systems, there will be some open source products or commercial products. However, considering Taobao's own needs and the pressure of large concurrent volume, these systems have chosen to develop themselves. Development framework
All of the above are system-level products, and we'll talk about the use of the development framework below. May have a friend to ask, as a such large-scale website, Taobao Web presentation layer is adopted what framework, how to achieve it. Once ¾¬ also have to Taobao candidates asked me this question, he asked me to say is not the use of struts. I told him that it was not. In fact, Taobao's Web presentation layer framework is not used struts, not webwork, not spring MVC and so on. The framework of the Web presentation layer of Taobao is a set of web frameworks developed internally by the group. This framework can solve some of the other web frameworks can not solve, in the application of Taobao will appear and need to solve the problem. In many applications of Taobao, there are also some open source frameworks, such as spring, IBatis, JBPM, Hessian, Mina, and so on. The adoption of these Open-source software has provided us with a great help in building the application system.
Using open source software to build the system, I think there are two great benefits:
One is to reduce costs. Suppose you have 1000 application servers, and if you're using either JBoss as or other open-source software on each server, use the commercial Oracle BEA WebLogic or IBM's WebSphere, So the cost of buying license for the applications of these 1000 machines is very high.
Another benefit (I think the biggest advantage) is that you can see the source code of the software, you can study the internal process of the software work, principles. This is very helpful for application design, development, error-checking and optimization.
The open source view of Taobao
For the application of open source software, some people may worry about the quality of the problem, some people may worry about the development of the software itself, and so on. For the quality of the problem, I think many of the open source software, especially some very well-known open source software has a very good organization, has a sound development, testing, publishing process. Before a new version is complete, there will be multiple beta releases and finally the official version. This is the same as commercial software. And because the code is open, it is more easy to find errors, improve quality. As for the second question, I think, like the first question, the key is to organize and plan instead of open source, and behind many well-known Open-source software, there will be vendors supporting it. The development of the software itself should not be a problem, it is unlikely that the software will suddenly stop the development of the situation.
In the future development, we will continue to focus on the development of open source software, but also according to the need to adopt different open source software. When choosing an open source product, I will consider the following points:
1. The current function of the software and its roadmap
2. Architecture of the software itself
3. The active degree of the software development
4. Is the Open-source software compliant with international norms in this field
5. In similar products, to select a comparative advantage. and consider the possible transplant costs. The transplant refers to the porting of the existing system after the open source software, or to the porting of the Open-source software to other software.
For enterprise-class systems, Internet applications, the adoption of open source software can not only reduce costs, but more importantly, can really understand the internal working mechanism of the software. Can also be based on the current basis for enhancements and customization, but also from open source software to learn a lot of good design and implementation. Hope that more enterprises in the domestic use of open source software, but also to open up some of their own software, or can become a number of open-source software contributors. As Taobao, we will also be very active in the open source activities, will also strive for the development of open source to make our due contributions.