单体架构
在单体架构中,某个接口高并发的情况下可能会导致Tomcat资源占用过高,导致其他功能接口延迟过高
微服务架构
根据功能进行拆分,每个拆分出来的微服务是一个独立的项目,拥有自己的数据库,微服务之间互不影响,但是微服务之间是业务有联系的,需要解决微服务之间沟通问题
项目拆分
黑马商城功能模块:
拆分原则
- 高内聚:每个微服务职责单一,
- 低耦合:每个微服务功能要相对独立
拆分原则
- 纵向拆分:按业务模块进行拆分
- 横向拆分:抽取公共服务,提高复用性
工程结构
- 独立Project:大型项目(一般用不到)
- Maven聚合:一个Project,多个模块(Mudule)
拆分模块
拆分出的商品模块, 拆分步骤:
- 配置微服务的pom.xml
- 配置启动类
- 配置properties或yaml文件 注意 模块名称 数据库 端口 每个微服务根据需求进行配置
- 构建domain、controller、mapper、service
远程调用
1. 初始版本
// 注入RestTemplate到Spring
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
// 发起远程调用
public <T> ResponseEntity<T> exchange(
String url, // 请求路径
HttpMethod method, // 请求方式
@Nullable HttpEntity<?> requestEntity, // 请求实体,可以为空
Class<T> responseType, // 返回值类型
Map<String, ?> uriVariables // 请求参数