1、大型网站架构演变历程
2、架构师需要拥有的技术栈与能力
3、项目分层设计
项目拆分与聚合
类似于汽车组装一样,汽车厂并不生产全部的零件,而是由各个工厂完成生成,汽车厂在进行组装,
对应到项目中,把相对应的功能外包给到其他组织,由他们去实现,最终整合到一起,完成整个项目。
Maven 聚合项目
一个项目是由多个模块组成,而 pom 用于记录对应的模块,项目也可以根据模块进行拆分,例如common、pojo,都可以拆分成单独的模块,模块之间也可以互相引用。
这里使用 RuoYi项目目录作为例子
PDMan数据库建模工具

数据库物理外键移除原因
- 性能影响
- 设置主外键查询,需要查询关联表,查询不必要的数据
- 热更新
- 不停机,进行维护
- 降低耦合度
- 物理外键,逻辑外键
- 数据库分库分表
- 大型数据库,如果有主外键关联,分库分表难处理,如有多个外键,分库分表很难处理
4、SpringBoot数据源
5、Mybatis数据库逆向生成工具
6、Restful Web Service
- 通信方式
- 系统之间相互通信
- 信息传递
- 无状态
- 独立性
Rest 设计规范
7、事务的传播
/*** @link https://www.cnblogs.com/YuyuanNo1/p/11400638.html* 事务传播* Propagation* REQUIRED:【默认】* 使用当前的事务,如果当前没有事务,则自己新建一个事务,子方法必须运行在一个事务中的;* 如果当前存在事务,则加入这个事务,成为一个整体* 举例:领导没饭吃,我自己有钱, 自己吃,领导有饭吃,自己也有饭吃* SUPPORTS:【支持,主要做查询】* 如果当前有事务,则使用事务,如果当前没有事务,则不使用事务【非事务方式】* 举例:领导没饭吃,我也没饭,领导有饭,我也有饭* MANDATORY:【强制】* 如果已存在一个事务,那么支持当前这个事务,如果没有一个活动的事务,则抛出异常* 举例:领导必须管饭,不管饭没饭吃,我就不乐意了,我就不干了(抛出异常)* REQUIRES_NEW:【需要新的】* 如果当前有事务,则挂起事务,并且自己创建一个新的事务给自己使用* 如果当前没有事务,则同 REQUIRED* 举例:领导有饭吃,我不要,我自己买了自己吃* NOT_SUPPORTED:【不支持】* 如果当前有事务,则把事务挂起,自己不适用事务去运行数据库操作【总是非事务执行,并挂起任何存在的事务】* 举例:领导有饭吃,分一点给你,我太忙了放一边,我不吃* NEVER【绝不】* 总是非事务执行,如果存在一个活动事务,则抛出异常* 举例:领导有饭吃,我偏不吃 我热爱工作 我抛出异常* NESTED:【嵌套】* 如果当前有事务,则开启子事务(嵌套事务)嵌套事务是独立提交或回滚* 如果当前没有事务,默认使用 REQUIRED* 但是如果主事务提交,则会携带子事务一起提交* 如果主事务回滚,则子事务一起回滚,相反,子事务异常,则父事务可以回滚或不回滚* 外层事务失败,会回滚内层事务做的操作,而内层事务失败,并不会引起外层事务的回滚* 举例: 领导决策不对,老板怪罪,领导带着小弟一同受罪,小弟出了差错,领导可以推卸责任。* @param id* @return*/
