Many teams are learning and researching Quora. Some time ago I saw this Quora's Technology examined, explained the technical architecture of Quora, and recorded and shared some important information.
Use cloud computing services
Quora uses Amazon EC2 and S3 services in large quantities. The operating system is deployed in Ubuntu Linux, which is easy to deploy and manage. The static content is cloudfront. service delivery: images are first transmitted to the EC2 server, processed using the pyhon S3 API, and then uploaded to S3.
The advantage of using cloud computing services from the very beginning is that it saves a lot of costs for manual maintenance of hardware servers. Of course, this practice is not feasible in our land.
Web layer and CMS
Haproxy serves as the front-end Server Load balancer, the reverse proxy server is nginx, And the nginx is followed by pylons (pylons + paste) to undertake dynamic Web requests.
The webnode2 and livenode internal systems are responsible for creating and managing content. webnode2 generates HTML, CSS, and
Javascript, and has mild coupling with livenode. Livenode is used to display web page content. Python, C ++, and
Written in JavaScript. Jquery and cython are used in particular. Livenode may be open-source.
Why python?
Some Python-related technical components have been mentioned earlier. Interestingly, Facebook's team actually uses python as the main development language. Quora explains this: Choosing PHP on Facebook is not the best choice, but it has historical reasons. The Quora technical team chose python after examining multiple languages. Of course there are a lot of reasons. In general, it seems that it is not very radical.
Communication Processing
Backend communication uses thrift, which is open source from Facebook. In addition to the simple development interface, thrift may also become more familiar. The comet server uses tornado, it is used to process long polling and push updates (what is unknown ?), Tornado is an open-source product of the former friendfeed technical team.
Real-time search
Because sphora cannot meet real-time requirements, Quora
The self-developed search engine is enabled. Only the thrift and Python Unicode libraries are used, and nothing else is used. Quora
Because you need to associate the input content with a valid prompt, you need to provide a better prefix indexing function.
The implementation of Quora search is quite technical, and the query request pressure on the backend is not small (maybe the current number of concurrent requests is not that large ). For this scenario, you may wish to study it carefully. If the general framework is similar, the final cause may be those details.
Data Persistence Layer
MySQL is widely used as the storage solution and memcached is used as the cache layer. No nosql products are currently popular. Quora has its own reason to do this. There is no need to use nosql for SNS websites with millions of users. Quora may be enabled later.
The Founders Charlie Cheever and Adam d'angelo were both on Facebook
Therefore, Quora has many Facebook genes. Quora
The team size is not large, and more than 10 people are estimated to be engaged in technology. Such a compact team has used so many technologies and products that many people are versatile. This is the place where Chinese technical teams need to learn from their foreign counterparts.
.
-- EOF --
Author:Fenng |Can be reproduced, but must be indicated in hyperlink formArticleSource and author information and copyright notice
Http://www.dbanotes.net/arch/quora_tech.html