技术栈:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qZ5I5Q04-1671717226154)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221120503366.png)]](https://img-blog.csdnimg.cn/965dd8fa3cfb4e3e83e4a61d3e9487cb.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-biIWADbM-1671717226159)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221120644023.png)]](https://img-blog.csdnimg.cn/05e466b6d90d48dbaf3d521ae7b685f0.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jUpj99eJ-1671717226159)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221121347389.png)]](https://img-blog.csdnimg.cn/c88f4ded41aa4707a96769107a0161c4.png)
-
认识微服务
-
服务架构演变
-
单体架构
- 将业务的功能集中在一个项目中开发,打成一个包部署
- 优点:
- 架构简单
- 部署成本低
- 缺点:
- 耦合度高
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TqEDCvr6-1671717226160)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221150750575.png)]](https://img-blog.csdnimg.cn/dcac2de98b0b44ff9dc8bd4d01c380d1.png)
-
分布式架构
- 根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。
- 优点:
- 降低服务耦合
- 有利于服务升级拓展
- 问题:
- 服务拆分粒度如何?
- 服务集群地址如何维护?
- 服务之间如何实现远程调用?
- 服务健康状态如何感知?
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rAxglusl-1671717226161)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221150921484.png)]](https://img-blog.csdnimg.cn/56d0b783b4634bb89b3eca7574ffca4f.png)
-
微服务是一种良好架构设计的分布式架构方案
- 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发
- 面向服务:微服务对外暴露业务接口
- 自治:团队独立,技术独立,数据独立,部署独立
- 隔离性强:服务调用做好隔离,容错,降级,避免出现级联问题
- 缺点架构非常复杂,运维,监控,部署难度提高
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CSHoSl8b-1671717226163)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221150959884.png)]](https://img-blog.csdnimg.cn/5d9c088d99944096bb3e7847b6167834.png)
-
-
微服务技术对比
-
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S8SgRKzO-1671717226164)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221152244913.png)]](https://img-blog.csdnimg.cn/7723f84cc334460892328fbdfe7c9a3d.png)
-
企业需求
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i9Ot50rp-1671717226164)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221152635857.png)]](https://img-blog.csdnimg.cn/f5dee4c79bb8434e9ca6338d3e58c875.png)
-
-
SpringCloud
-
SpringCloud是目前国内使用最广泛的微服务框架。官网地址:SpringCloud官网
-
SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pZmst11J-1671717226165)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221153319614.png)]](https://img-blog.csdnimg.cn/dd30f3c13147493d9692d0159c9daaf4.png)
-
SpringCloud与SpringBoot的版本兼容性关系如下
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kntnal5h-1671717226165)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221153638862.png)]](https://img-blog.csdnimg.cn/cd37e665ee1646fc98d04c5b931e318c.png)
-
-
-
分布式服务架构案例
-
服务拆分及远程调用
-
服务拆分注意事项
- 不同微服务,不要重复开发相同业务
- 微服务数据独立,不要访问其它微服务的数据库
- 微服务可以将自己的业务暴露为接口,供其它微服务调用
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-STBls3EO-1671717226166)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221154207816.png)]](https://img-blog.csdnimg.cn/bb81621cad364f2bb516079bfe0261ff.png)
-
拆分Demo
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4aUuCY61-1671717226167)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221154446023.png)]](https://img-blog.csdnimg.cn/eb1eb38a5a9d452bb4317fa729665b66.png)
-
拆分服务之后产生的问题:在8080端口服务查询订单时并没有将用户信息一起返回
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DsSimrnW-1671717226168)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221224139080.png)]](https://img-blog.csdnimg.cn/a3cdd5b5c69b433f957ca279d3457f78.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qwu6xBJA-1671717226168)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221224123143.png)]](https://img-blog.csdnimg.cn/718be1a9ba3d492898375e379e5789a8.png)
-
解决问题(微服务远程调用):
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8m0aLung-1671717226169)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221224706756.png)]](https://img-blog.csdnimg.cn/65fd7bb9b899463999a7133933adae53.png)
-
注册RestTemplate:在order-service的模块中注册RestTemplate
@Configuration public class RestTemplateConfig { /** * 创建RestTemplate并注入Spring容器 * @return */ @Bean public RestTemplate restTemplate(){ return new RestTemplate(); } }在查询订单时发送http请求用户信息
@Service public class OrderService { @Autowired private OrderMapper orderMapper; @Autowired private RestTemplate restTemplate; public Order queryOrderById(Long orderId) { // 1.查询订单 Order order = orderMapper.findById(orderId); // 2.利用RestTemplate发起http请求,查询用户 // 2.1.url路径 String url ="http://localhost:8081/user/"+order.getUserId(); // 2.2发送http请求,实现远程调用 User user = restTemplate.getForObject(url, User.class); // 3.封装user到Order order.setUser(user); // 4.返回 return order; } }这样就可以在查询订单消息的同时查询用户信息,解决了微服务远程调用
微服务调用方式:
- 基于RestTemplate发起的http请求实现远程
- http请求做远程调用是与语言无关的调用,只要知道对方的ip,端口,接口路径,请求参数即可。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LCqBCN2P-1671717226169)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221231503391.png)]](https://img-blog.csdnimg.cn/173fdb09772d47a8a31a9e5555b988d0.png)
-
-
提供者与消费者
- 服务提供者:一次业务中,被其他微服务调用的服务。(提供接口给其它微服务)
- 服务消费者:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口)
- 提供者与消费者角色其实是相对的
- 一个服务可以同时是服务提供者和服务消费者
-

![[洛谷]P2234 [HNOI2002]营业额统计](https://img-blog.csdnimg.cn/2b16129baca447e0bbbff25c0fb92c79.png)







![[java]-JDBC](https://img-blog.csdnimg.cn/img_convert/36b4c16b3c96f0cd2648f4108c520d33.png)









