Home > Article > Backend Development > apache cluster
After solving the performance problem, the next step is to solve the problem of session synchronization
After building a web cluster, you will definitely consider the session synchronization problem first, because after load balancing, the same IP access to the same page will be assigned to different servers. If the sessions are not synchronized, a logged-in user will be logged in for a while and not logged in for a while. Therefore, this article gives three different methods to solve this problem based on this situation:
1. Use database to synchronize sessions
I did not use this method when doing multi-server session synchronization. If I have to use this method, I have thought of two methods:
1. Use a low-end computer to build a database specifically Store the session of the web server, or build this special database on the file server. When the user accesses the web server, he will check the session status in this special database to achieve the purpose of session synchronization.
2. This method is to put the table that stores the session together with other database tables. If mysql is also clustered, each mysql node must have this table, and the data table of this session table must be real-time Synchronize.
Note: Using a database to synchronize sessions will increase the burden on the database. Databases are inherently prone to bottlenecks. If you put sessions in the database, it will undoubtedly make things worse. Of the two methods above, the first method is better because it separates the session table and reduces the burden on the real database.
2. Use cookies to synchronize sessions
Session is a file format stored on the server side, and cookie is a file format stored on the client side. How to achieve synchronization? The method is very simple, which is to put the session generated by the user's access to the page into the cookie, using the cookie as the transfer station. When you visit web server A, a session is generated and placed in a cookie. Your visit is assigned to web server B. At this time, web server B first determines whether the server has the session. If not, it will check the client's cookie. Is there this session in it? If not, it means that the session really does not exist. If it is in the cookie, synchronize the session in the cookie to web server B, so that the session can be synchronized.
Note: This method is simple and convenient to implement, and will not increase the burden on the database. However, if the client disables cookies, the session will not be synchronized, which will cause losses to the website; cookie security The security is not high. Although it has been encrypted, it can still be forged.
3. Use memcache to synchronize sessions
memcache can be distributed. Without this function, it cannot be used for session synchronization. It can combine the memory in the web server to form a "memory pool". No matter which server generates sessoin, it can be placed in this "memory pool", and others can be used.
Advantages: Synchronizing sessions in this way will not increase the burden on the database, and the security is greatly improved compared to using cookies. Putting the session in the memory is much faster than reading from the file.
Disadvantages: memcache divides the memory into storage blocks of many specifications. Each block has a size. This method determines that memcache cannot fully utilize the memory and will produce memory fragmentation. If the storage blocks are insufficient, memory overflow will occur.
4. Summary
The above three methods are all feasible
The first method is the one that affects the system speed the most and is not recommended;
The second method has good effect, but the security risks still exist;
The third method There are three methods. I personally think the third method is the best and I recommend everyone to use it
The above has introduced the apache cluster, including aspects of it. I hope it will be helpful to friends who are interested in PHP tutorials.