springboot-plus is a management backend system based on SpringBoot 2, which includes user management, organization management, role management, function point management, menu management, permission allocation, data permission allocation, code generation and other functions.
The system is based on Spring Boot2 technology, and the front end uses Layui2. The database uses MySQL as an example, and is theoretically cross-database platform.
Plus is a Java rapid development platform suitable for monolithic systems and system splitting. It can also be transformed into a microservice platform (I used to make one, but I felt that Plus should focus on the core of the system instead of simply stacking functions, so I gave up)
The following are the differences between monolithic systems, small systems, and microservices
The monolithic system is a common system design method, and it is also the most important design method in the past ten years. All functions of a single system are in one project, packaged into a war package, and deployed. This has the following obvious benefits:
1. The development method of single system is simple. When we learn programming from the beginning, it is the completed single system. Developers only need to concentrate on developing the current project.
2. Easy to modify. If you need to modify any function, it is very convenient. You only need to modify the code within a project scope.
3. The test is simple. There is no need to consider other systems when testing a single system, and avoid the various REST and MQ calls mentioned in the second volume of this book.
4. Deployment is also very easy: there is no need to consider the relationship with other systems, just package the war package and deploy it to the web server
5. The performance is easy to expand, and an application can be deployed to multiple servers through Nginx.
With business development and reconstruction, there are more and more monolithic systems. When developing a huge monolithic system, there will be the following disadvantages:
1. The single system is huge and it is becoming increasingly difficult to understand the single system. Small changes involve a wide range of aspects, causing the development team to be cautious and the development speed will become slower and slower. In addition, starting a large single system may take 3 minutes or more.
2. Multiple functions are developed on the same single system, resulting in slower and slower testing. For example, testing must be scheduled and serial testing
3. If you want to upgrade the technology of a single system, the cost will be very high. If it is a small system, you can choose a small system to try first. It is almost impossible to upgrade a single large system technically.
4. All functions of a single system run in the same JVM, and the functions will affect each other. For example, a function that counts the page numbers of uploaded word documents consumes a lot of CPU. Therefore, the entire system will be temporarily unavailable because of the call to the statistics function. , the phenomenon of suspended animation appears
Therefore, when designing a system, more and more architects will consider splitting the system into multiple individual small systems or even microservices. For traditional enterprise applications, it is more appropriate to split them into small systems. For Internet systems, it is more appropriate to use microservices. This is because
1. Traditional IT systems essentially still use a database, while microservices advocate one service and one database.
2. Traditional IT systems rarely need to call other module services. Traditional IT systems connect other subsystems through workflows. E-commerce microservices interact through RPC and other methods, which is a lightweight protocol. Traditional IT systems can also interact with other systems (non-subsystems) through SOA and JMS, using heavyweight protocols.
3. Microservices have very high requirements on system infrastructure, such as microservice governance, elastic libraries, etc. Only e-commerce systems have the manpower and material resources to do this kind of thing, while traditional IT systems, even if they have deep pockets, do not have the capabilities of microservices for the time being. IT infrastructure like services
Therefore, for most traditional IT applications, there is no technical risk in splitting a single small system and it is an architecture that can be implemented immediately. The following is the physical architecture of a single system after splitting
For users, accessing different menu functions will locate different subsystems and provide services.