1.主要是前端先访问我们的消费者client的控制层,然后控制层访问feign,frign再访问真正的业务接口。主要香的是feign不用写接口的实现层。
2.Feign中已经自动集成了Ribbon负载均衡,因此不需要自己定义RestTemplate进行负载均衡的配置。
3.Spring Cloud Gateway其实就相当于端口映射,先到Gateway再到feign。。。后面跟1一样,其实那个Gateway如果不是追求完美,没必要开。
一 项⽬需求
客户端:针对普通⽤户,⽤户登录、⽤户退出、菜品订购、我的订单。
后台管理系统:针对管理员,管理员登录、管理员退出、添加菜品、查询菜品、修改菜品、删除菜品、
订单处理、添加⽤户、查询⽤户、删除⽤户。
account 提供账户服务:⽤户和管理的登录退出。
menu 提供菜品服务:添加菜品、删除菜品、修改菜品、查询菜品。
order 提供订单服务:添加订单、查询订单、删除订单、处理订单。
user 提供⽤户服务:添加⽤户、查询⽤户、删除⽤户。
分离出⼀个服务消费者(主要是前端先访问消费者的控制层,然后控制层访问feign,frign再访问真正的业务接口。主要香的是feign不用写接口的实现层),调⽤以上四个服务提供者,服务消费者包含了客户端的前端⻚⾯和后台接⼝、后台管理系统的前端⻚⾯和后台接⼝。⽤户 / 管理员直接访问的资源都保存在服务消费者中,服务消费者根据具体的需求调⽤四个服务提供者的业务逻辑,通过 Feign 实现负载均衡。
四个服务提供者和⼀个服务消费者都需要在注册中⼼进⾏注册,同时可以使⽤配置中⼼(这里不用git)来对配置⽂件进⾏统⼀集中管理。
数据库表:
遇到的问题
1.yaml的数据库的:2.通用 Mapper 的 selectByPrimaryKey 方法无法识别 int 类型,需要在 POJO 类中将 int 改为包装类型 Integer(还要在实体类加上@Id)
3.//选择性新增;如果属性为空则该属性不会出现在insert语句上
userMapper.insertSelective(user);
4.保存或者删除在controller传入对象的话,要加@RequstBoby
5.过程(重点)
feign 接口(不用写方法体的 )上要加上@FeignClient
client的访问方法可以不加menu的
浏览器输入:http://localhost:9903/client/getMenus/3/3就可以访问到: