1. 单体项目
单体项目指的是前端和后端都部署在 Tomcat 服务器上,所以静态资源和用户的请求都会在 Tomcat 上处理。
2. 前后端分离
由于 Tomcat 的并发数通常在 200 ~ 300 左右,所以静态资源会占据一定的并发数。
所以我们应将前端与后端分开部署,前端部署在 Nginx 上,Nginx 支持万级并发。
- 项目架构:前后端分离
- 前端技术:vue、axios、妹子UI、layui、bootstrap
- 后端技术:SpringBoot+MyBatis、RESTful、swagger
- 服务器搭建:Linux、Nginx
优点:将对静态资源的访问和对接口的访问进行分离,Tomcat服务器只负责数据服务的访问。
3. 集群与负载均衡
由于一台服务器的并发量是有上限的,所以我们需要使用多台服务器来处理用户的请求。多台服务器就是集群,每个服务器就是其中的一个节点。
但是由于可能用户会只请求其中的某个服务器导致一方有难,八方观战的局面,所以我们需要将发送到后端服务器的权力从用户手中剥离。这就诞生了一个负载均衡服务器,它负责接收所有的用户请求,并根据每台后端服务器的压力进行请求分发。
优点:提供并发能力、可用性
4. 分布式
分布式是由服务器集群导致的一个问题,因为每台服务器都能单独对数据进行修改,但是每个服务器都对对方的修改无感知,所以我们需要设置分布式锁来让服务器对其他的服务器的修改有所感知。
比如分布式锁可以解决由服务器集群导致的商品超卖问题。这是服务器层面上的锁。例如可以设置商品的 ID 为 redis 中的一个 key,服务器可以查询 redis 中是否有这个 key,有说明其他服务器在进行修改。
- 基于redis实现 分布式锁
- 分布式数据库mycat
- redis集群
- 数据库中间件
- 消息中间件
5. 微服务
一个项目中可能有各种各样的功能,这些功能之间通常是没有任何关系的,这些功能被称为模块。
为了防止一个模块可能的故障导致整个项目故障,所以提出了微服务,微服务就是将每个模块单独部署在一台服务器上,然后这些服务器之间可能会进行通信。但是一个模块出现了问题,并不会导致整个项目的不可用。
- 微服务架构:将原来在一个应用中开发的多个模块进行拆分,单独开发和部署
- 保证可用性、性能