不多说,直接上货!不足之处欢迎提出!
针对自己学习 springcloud进行一份总结,就从 Eureka(服务注册中心)开始。
接下来会分别会搭建 服务中心 ,消费者1和2 ,生产者1和2
服务中心:启动时会进行服务注册,相当于前台,进行服务调用
生产者:其实就是业务代码,集群部署,由消费者调用,这样便拆开
消费者:与前台进行交互,根据调用生产者服务,实现集群部署
前提:自己建好一个maven项目,我直接从建立子模块开始
由于是配合springboot的,所以有两步骤是重复的
首先搭建服务中心:server工程
配置文件
启动项注解
启动成功
接下来搭建生产者
项目模块
配置文件
启动项
第二个一样,之所以建立两个,是为了测试负载均衡
搭建消费者:
消费者分为两种 ribbon+restTemplate和feign,接下来分别搭建一种
消费者一般与前台交互,因此可能是web项目
而且加入了断路器(当服务崩掉的时候,用断路器可以让其调用其他方法,防止雪崩),所以要 多添加下依赖
先搭建ribbon+restTemplate
配置文件: 指明自己服务名称与要注册的服务中心就可以
启动项:restTemplate类就是专门用来断路器
Controller层正常写
Service层 交互用
restTemplate.getForObject(“http://SERVICE-HI/hi?name=”+name,String.class);
明白断路器的注解
接下来是feign模式,此模式简单优雅,以接口的形式来调用 ,这样就相当于原来的service接口,但是你却不需要写实现类一般
项目 只有第三个不同
依赖注意此处
配置文件
启动项
因为启动的时候会找@ FeignClient注解,所以要指定下包路径
接口:@ FeignClient的名字是服务名
方法上的路径就是生产者的服务接口
Controller层直接调用就可以
这样就看下效果图
注册中心,有两个生产者,一个消费者(因为我只启动了一个,两个效果其实一样)
消费者效果图。刷新两次页面就可以
可以看出两者的区别,这就是负载均衡,轮询的形式。
那我们的断路器效果呢?很简单,我们停掉一个生产者服务,消费者服务用ribbon的,因为只有它配了
可以看到,宕掉的服务会走断路器的那个方法