微服务架构演变
单体架构
业务所有的功能集中在一个项目内开发,打包成一个包部署。
优点:架构简单、部署成本低
缺点:耦合度低
分布式架构
根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。服务互相调用。
优点:降低服务耦合、有利于服务升级拓展
缺点:架构复杂、难度大
微服务
一种经过良好架构设计的分布式架构方案,微服务架构的特征:
- 单一职责:拆分粒度更小
- 面向服务:微服务对外暴露业务接口
- 自治:团队独立、技术独立、数据独立、部署独立
- 隔离性强:隔离、容错、降级,避免发生级联问题
微服务架构
微服务技术对比
SpringCloud
SpringCloud集成了各种微服务功能组件,并基于Springboot实现了自动装配,开箱即用。
服务拆分原则
- 不同微服务,不要重复开发相同业务,做到单一职责
- 微服务数据独立,应该有自己的数据库,不要访问其他微服务的数据库
- 微服务可将自己的业务暴露为接口,供其他微服务调用
远程调用
实现远程调用的步骤:
- 创建RestTemplate并注入IoC容器
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
- 获取RestTemplate对象
@Autowired
private RestTemplate restTemplate;
- 根据当前服务的一些参数(如userid)生成访问点URL路径
String url = "" + order.getUserId();
- 利用RestTemplate发起http请求
User user = restTemplate.getForObject(url, User.class);
- 封装请求返回的信息
order.setUser(user);
- 回应当前服务