当前位置:网站首页>Architecture evolution of high-performance servers -- Suggestions
Architecture evolution of high-performance servers -- Suggestions
2022-06-25 15:24:00 【Running pig ZC】
Catalog
The way of architecture evolution
Write in the front
For back-end development , High concurrency is an old topic , Recently, the author encountered a very thorny problem , It's about high concurrency , At present, it is in support of 30W Terminals , But it will continue to grow in the later period , When I hear to support 500W When , I feel like I will have a bald head soon , But don't panic , There is always a way , I checked various materials and consulted several big men , Solved the problem step by step , Next, I will share how to build a high-performance , Highly concurrent servers .
The way of architecture evolution
1: The simplest --- Direct access tomcat Single application , Basically no problem

2: in consideration of tomcat Handle task Upper limit ( Plus tuning ) I still can't bear it , use nginx Load balancing , There should be no problem compared with this

3: Find this time DB The pressure will be greater , So I made a separation of reading and writing , No problem

4: Even if it is read-write separation , But now a large number of streams are generally queries ,DB There is still a bottleneck , You can consider DB colony ( at present mysql Has supported ), Skip here , Caching is considered in this article ( Now the projects are basically distributed , Then consider distributed caching ), So the architecture diagram becomes a dead end

5:4 It just basically solves the problem of reading , But what if it's written ? I'm not going straight to DB Write , Every time I write ? It doesn't exist well , Consider using caching , When the data is accumulated to a certain amount , Write the data once again DB, Or is it ES( After my test ,ES Write performance is really low , But reading is really powerful , Basically, it can be counted G Data in 100ms Back inside .), Use here JVM The cache of , You may need a global clock . Then the architecture diagram looks like this

6: Think it's over here ? As a person who is about to have a bald head , We must not stop here , So consider whether you can not let the request return results without passing through the background server ? So there was a great roar OpenResty(nginx Enhanced version of , The original author is Russian , The Chinese will strengthen and upgrade it , Add a series of plug-ins , And open source , at present JD Use this to cache product details ), Currently used in the project OpenResty Of Cache( operation nginx The cache of , Expiration time can be set , Cache size , Strategy and so on ),mysql( Can be operated directly mysql),redis( Can operate redis) modular , Cooperate with Lua Script together , The result is really fragrant , Then the architecture diagram evolves into the following ghost , It looks a little complicated anyway .

summary
There are many high concurrency problems in the project , Many solutions can be considered , For example, a single body cannot , I just distributed + colony , If not, consider caching , Caching can be divided into two types , Server cache and web Layer cache , Then you can optimize the code , Unnecessary synchronization can be changed to asynchronism , Use thread pool , The parameters of the thread pool can be tuned , Reference resources https://blog.csdn.net/weixin_45191798/article/details/100153524 , When writing for a large amount of data traffic , We can take into account the so-called tens of millions of KAFKA To cut the flow peak , Finally, it's really no good , With a bald head , Growing cabbages and raising pigs at home is also an option ( Pork is still more expensive , The way to get rich ), like JAVA And architecture students can discuss , AC duck .
边栏推荐
- p1408
- Is it safe to open a stock account through the account opening link of the account manager?
- Automatic correlation between QT signal and slot
- Learning notes on February 8, 2022 (C language)
- System Verilog - data type
- QT article outline
- [C language] implementation of magic square array (the most complete)
- ‘make_ unique’ is not a member of ‘std’
- (2) Relational database
- Pytorch | how to save and load pytorch models?
猜你喜欢

Build a minimalist gb28181 gatekeeper and gateway server, establish AI reasoning and 3D service scenarios, and then open source code (I)

System Verilog - thread

QT excel table read / write library - qtxlsx

How to cut the size of a moving picture? Try this online photo cropping tool

One question per day,

Custom structure type

CV pre training model set

Data preprocessing - normalization and standardization

Yolov5 Lite: fewer parameters, higher accuracy and faster detection speed

QT pattern prompt box implementation
随机推荐
Std:: vector minutes
[paper notes] rethinking and improving relative position encoding for vision transformer
QT set process startup and self startup
Afterword of Parl intensive learning 7-day punch in camp
How to combine multiple motion graphs into a GIF? Generate GIF animation pictures in three steps
0706-- replace fields in the use case, such as mobile phone number or ID
New title of PTA
[C language] 32 keyword memory skills
Paddlepaddle paper reproduction course biggan learning experience
The difference between sizeof and strlen
One question per day,
Learning to Measure Changes: Fully Convolutional Siamese Metric Networks for Scene Change Detection
Generation method and usage of coredump
Stderr and stdout related standard outputs and other C system APIs
@Font face fonts only work on their own domain - @font-face fonts only work on their own domain
Source code analysis of synergetics and ntyco
Pytorch distributed test pit summary
p1408
Solution of push code failure in idea
User defined data type - structure