目录:
(1)学习路径
(2)认识微服务
(3)微服务对比
(4)认识微服务SpringCloud
(5)服务拆分
(6)服务查分-服务远程调用
(1)学习路径
(2)认识微服务
为了解决分布式架构的问题:出现了WbeService、ESB、Hession、Dubbo、SpringCloud等技术
(3)微服务对比
SpringCloudAlibab本质上讲是实现了SpringCloud的标准,可以认为是SpringCloud中的一部分。
(4)认识微服务SpringCloud
(5)服务拆分
选择两个数据库,分别导入sql文件:
Cloud_usert数据库表tb_user表:
cloud_order数据库中表tb_order表:
导入文件:
用户模块:
配置文件:
User对象:
用户模块的controller:
订单模块:
订单模块的配置文件:
订单Controller:
订单对象:
分别运行这两个模块:
在浏览器输入: 查询用户:
查询订单:
上面这两个模块复合微服务查分的单一原则,每个模块干不同的事,Order查订单,User服务查用户,并且数据库也做了分离
(6)服务查分-服务远程调用
上面的结果可以看出查询的订单用户为null ,我们想要也把用户信息查出来,能不能直接查数据库呢?不能的因为我们数据库也进行了拆分,只能向用户模块发起远程调用
我们需要在订单模块如果能像js代码一样,发起http请求 ,查询用户,订单模块在结合本地数据库查询的订单信息,就组合出了订单目标了,这样问题就定义成了如何在java代码里面发起http请求?
需要使用RestTemplate这个类,来发请求:
在Order模块的主配置类中加入这个类:
现在就可以使用这个类发起请求了:修改查询业务:
在修改OrderService:
订单:是有用户id信息的:
首先注入restTemplate,利用它的方法发情Get(getForObject)或者Post(postForObject)请求,他返回的是一个json的字符串,它可以帮你反序列化为对象类型,User.class
重新启动项目:可以看到成功查到了用户的相关信息