一、《风靡商城》项目介绍
1.1项目背景
风靡商城——电商平台
- B2C——商家对客户
- C2B2C——客户对商家对客户
1.1.1 B2C
平台运营方即商品的卖家 小米商城
- 商品
- 用户
1.1.2 C2B2C
平台运营费不卖商品(也可以卖)
卖家是平台用户
买家也是平台用户 淘宝
- 用户(店铺)
- 用户(买家)
- 服务
- 商品
1.1.3 java
java 语言的应用领域很广,但主要应用于web领域的项目开发中,web领域的项目类型分为两类:
- 企业级开发(供企业内部使用的系统,无注册功能:企业内部的管理系统CRM、学校的教务管理系统)
- 互联网开发(提供给所有互联网用户使用的系统--用户量)--电商项目
1.2项目功能
1.3技术选型
SSM企业开发框架 基础开发技术
1.3.1单体项目
项目的页面和代码都在同一个项目中,项目开发完成之后直接部署在一台服务器中
单体项目遇到的问题:用户对静态资源以及java代码的请求压力全部落在Tomcat服务器中,容易导致服务器的崩溃
1.3.2技术清单
- 项目架构:前后端分离
- 前端技术:vue(数据渲染)、axios(数据交互)、妹子UI、layui、bootstrap
- 后端技术:SpringBoot+MyBatis(0配置,配置内置)、RESTful(技术规范风格)、swagger(接口)
- 服务器搭建:Linux、Ngins(前端,万级并发优于Tomcat)
二、项目架构的演进
2.1单体架构
项目前后端都写在同一个项目中,并部署在同一台服务器上,写在同一个应用中
缺点:对静态资源的访问压力均集中在Tomcat上
2.2前后端分离
看到登录界面时,全部是从Nginx中获得的
在登录验证的时候通过ajax控制器进行验证,Tomcat只进行数据验证(获取账号密码,返回检验结果)接口
- 前端和后端分离开发和部署(前后端部署在不同的服务器中)
- 页面和服务器之间存在接口调用
- 优点:将对静态资源的访问和对接口的访问进行分离,Tomcat服务器只负责数据服务的访问
- 前后端分离只支持在一定程度下的并发
2.3集群搭建
增加一个负载均衡只负责接收请求,不负责处理
- 负载均衡——将对集群的并发请求按需分配到不同的服务器节点上
- 集群从理论上讲可以解决所有的并发情况
- 集群解决了可用性问题,其中一台服务器节点出现问题,整个服务器还是可以正常运行
可能会导致mysql数据库崩溃(商品超卖问题)
2.4分布式
为什么使用分布式
互联网项目必须保证三高(高并发、高可用、高性能)
- 基于redis实现分布式锁
- 分布式数据库mycat
- redis集群
- 数据库中间件-ElasticSearch
- 消息中间件
2.5微服务架构
- 微服务架构——将原本在一个应用中开发的多个模块进行拆分,单独开发和部署
- 一个模块出现问题会导致同一个服务器中的整个项目出现问题
- 将同一个Tomcat中的不同模块分到不同的服务器中,使不同的请求对应不同的服务器,以保证不同项目下不同模块的功能服务,不同模块之间要进行信息交互
- 微服务将不同模块分到不同的服务器上,不同的模块之间要进行服务通信
- 微服务保证项目的可用性和性能性