Evolution of HTTP server architecture

Abbot's temple 2020-11-13 05:41:07
evolution http server architecture


stay Detailed explanation http message In related articles, we introduced http How the agreement works , So building a real website also needs to introduce components ? What do some common nouns mean ?

  1. What is a forward agent , What is reverse proxy
  2. The difference between service agent and load balancing
  3. With nginx, Why do we need LVS
  4. What are the load balancing methods

Server evolution

In the previous article we introduced the simplest client - Server response mode , as follows

This is a http The simplest form of service , The server is one layer web The server .

Now our server is more complex , The number of users has increased , Concurrency has increased . Requirements for our server have been increased

  • Service capability, : A server can't satisfy so many http The request of . We need more machines , The service has been expanded
  • Safety protection : Someone started to attack our service , Server needs to be protected , Limit ip Address
  • Website upgrade : After the website goes online , Need to provide 7*24 Hours of uninterrupted service , Release a new version , Need to make sure the website is available .

Agency service

To solve these problems , We need to introduce Middle layer That's the agency , Insert an intermediate link between the client and the server , Agency service . agent , In a narrow sense, it means not producing content , Just forward upstream and downstream requests and responses .

Agent services can be divided into

  • Anonymous proxy : The outside doesn't know the real machine , Only the proxy server
  • Transparent proxy : The outside world knows that agents , Also know the real server

According to whether it is close to the client or the server , It is divided into

  • Forward agency : Proxy client , It means that the client sends the request to the server
  • Reverse proxy : Agent server , It means that the server sends the request to the client .

http Protocol support for agents

because http At the beginning of the protocol, the agent service was not considered , The protocol is designed for the client - Server mode . According to our usual architectural standards ,http The protocol layer doesn't care how users use it , Agency service, as an intermediate product, naturally does not need to be considered . The server has access to the client ip The needs of , therefore Squid This caching agent software was first introduced X-Forwarded-For Header fields , Used to represent The reality of the client IP.

The format is as follows , From client to agent services , Record the forwarding of each layer

X-Forwarded-For: client, proxy1, proxy2

This demand is so universal , So it gradually became the standard , Widely used by various agent services , So it was later written to RFC 7239 In the standard

Agency agreement

HTTP The protocol itself doesn't say anything about the proxy service , So the agency agreement came out , The agency agreement is haproxy The author of Willy Tarreau On 2010 Developed and designed in Internet agreement , By providing tcp Add a small header message , To facilitate the transfer of client information ( Protocol stack 、 Source IP、 Purpose IP、 Source port 、 Destination port, etc ), In the complex network situation, we need to obtain customers IP It's very useful .

  • Multi-storey NAT The Internet
  • TCP agent ( four layers ) Or multilayer tcp agent
  • https Reverse proxy http( In some cases due to Keep-alive The result is not that every request is delivered x-forword-for)
  • https Communication encryption , Modification of the original message... Is not allowed

In addition, each layer of proxy service needs to be parsed http header head X-Forwarded-For, Then add your own address , So the cost is higher . So the agency agreement became Just need to , Although it is haproxy Bring up the , But it is also supported by major proxy servers , Such as nginx、apache、squid. Form of agency agreement

PROXY TCP4/TCP6 client ip Responder ip The requester's slogan Responder port number \r\n

In this way, the requester can get the client by parsing the first line ip, There's no need to deal with http Message .

Load balancing

Load balancing , It's actually a distribution request . according to OSI Seven tier protocol

There are two kinds of load balancing

  • 4 Layer load balancing , That is, it works in the fourth layer transmission layer , utilize ip Address port for request forwarding , Because there is no other operation , So it's more efficient
  • Seven layer load balancing , That is, working in the seventh application layer , according to HTTP Request header ,URL Information forwarding specific host . It's relatively inefficient .

nginx It's seven layer load balancing ,LVS Four layer load balancing .

So small websites ,nginx It's enough , When the flow is large enough , Load balancing has become a bottleneck , You can introduce LVS First floor .

About the specific load balancing algorithm , Refer to this article , No more details here

Safety protection

We mentioned earlier that security protection is also an important function of agent service . In response to external attacks , Need to introduce network firewall ,WAF(Web Application Firewall). Working in OSI The seventh floor , It's mainly about http Message for more detailed audit , That is, all kinds of filter.
such as

  • IP Black and white list
  • DDOS attack
  • Various injections

When the security requirements of the service are not so high , Or for the company's business development ROI When it's not that high , We usually just nginx Some rules can be configured in the layer . When the demand escalates , We're going to introduce specialized models , such as ModSecurity1. When the demand is upgraded again , Introduce... Provided by external cloud vendors WAF service .

Final architecture form

http The evolution of server architecture is similar to that of our single application architecture . When the business is not complicated , It can be done by single module ( such as Nginx), When the number of requests increases , When the demand escalates , We need to introduce the middle layer to solve . When a module requires an increase , Separate modules need to be decoupled to handle .

So on the whole , A medium-sized server architecture is shown in the figure below .

Reference resources



Official account 【 Abbot's temple 】, The first time to receive an update of the article , Start the road of technical cultivation with the abbot

 Insert picture description here

Related reading
Detailed explanation http message

Detailed explanation http message (2)-web How does the container parse http The message

本文为[Abbot's temple]所创,转载请带上原文链接,感谢

  1. [front end -- JavaScript] knowledge point (IV) -- memory leakage in the project (I)
  2. This mechanism in JS
  3. Vue 3.0 source code learning 1 --- rendering process of components
  4. Learning the realization of canvas and simple drawing
  5. gin里获取http请求过来的参数
  6. vue3的新特性
  7. Get the parameters from HTTP request in gin
  8. New features of vue3
  9. vue-cli 引入腾讯地图(最新 api,rocketmq原理面试
  10. Vue 学习笔记(3,免费Java高级工程师学习资源
  11. Vue 学习笔记(2,Java编程视频教程
  12. Vue cli introduces Tencent maps (the latest API, rocketmq)
  13. Vue learning notes (3, free Java senior engineer learning resources)
  14. Vue learning notes (2, Java programming video tutorial)
  15. 【Vue】—props属性
  16. 【Vue】—创建组件
  17. [Vue] - props attribute
  18. [Vue] - create component
  19. 浅谈vue响应式原理及发布订阅模式和观察者模式
  20. On Vue responsive principle, publish subscribe mode and observer mode
  21. 浅谈vue响应式原理及发布订阅模式和观察者模式
  22. On Vue responsive principle, publish subscribe mode and observer mode
  23. Xiaobai can understand it. It only takes 4 steps to solve the problem of Vue keep alive cache component
  24. Publish, subscribe and observer of design patterns
  25. Summary of common content added in ES6 + (II)
  26. No.8 Vue element admin learning (III) vuex learning and login method analysis
  27. Write a mini webpack project construction tool
  28. Shopping cart (front-end static page preparation)
  29. Introduction to the fluent platform
  30. Webpack5 cache
  31. The difference between drop-down box select option and datalist
  32. CSS review (III)
  33. Node.js学习笔记【七】
  34. Node.js learning notes [VII]
  35. Vue Router根据后台数据加载不同的组件(思考->实现->不止于实现)
  36. Vue router loads different components according to background data (thinking - & gt; Implementation - & gt; (more than implementation)
  37. 【JQuery框架,Java编程教程视频下载
  38. [jQuery framework, Java programming tutorial video download
  39. Vue Router根据后台数据加载不同的组件(思考->实现->不止于实现)
  40. Vue router loads different components according to background data (thinking - & gt; Implementation - & gt; (more than implementation)
  41. 【Vue,阿里P8大佬亲自教你
  42. 【Vue基础知识总结 5,字节跳动算法工程师面试经验
  43. [Vue, Ali P8 teaches you personally
  44. [Vue basic knowledge summary 5. Interview experience of byte beating Algorithm Engineer
  45. 【问题记录】- 谷歌浏览器 Html生成PDF
  46. [problem record] - PDF generated by Google browser HTML
  47. 【问题记录】- 谷歌浏览器 Html生成PDF
  48. [problem record] - PDF generated by Google browser HTML
  49. 【JavaScript】查漏补缺 —数组中reduce()方法
  50. [JavaScript] leak checking and defect filling - reduce() method in array
  51. 【重识 HTML (3),350道Java面试真题分享
  52. 【重识 HTML (2),Java并发编程必会的多线程你竟然还不会
  53. 【重识 HTML (1),二本Java小菜鸟4面字节跳动被秒成渣渣
  54. [re recognize HTML (3) and share 350 real Java interview questions
  55. [re recognize HTML (2). Multithreading is a must for Java Concurrent Programming. How dare you not
  56. [re recognize HTML (1), two Java rookies' 4-sided bytes beat and become slag in seconds
  57. 【重识 HTML ,nginx面试题阿里
  58. 【重识 HTML (4),ELK原来这么简单
  59. [re recognize HTML, nginx interview questions]
  60. [re recognize HTML (4). Elk is so simple