eureka注册中心的搭建 博主使用IDEA搭建
文章有点长,但不要怕,图多字少,步骤超详细,满足您的需要 ~废话不多说,直接上图 ~
1.首先新建一个空的maven项目,如图:
填入参数,如图:
2.点击finish之后,cloudDemo项目就创建成功了;
删除目录下src文件夹以及pom.xml文件,如图:
3.然后在cloudDemo项目下创建一个springboot项目作为项目cloudDemo的一个module 模块,module的名字叫做eureka如图:
此时的项目结构如下:
4.启动eureka注册中心:只需要在EurekaApplication启动类上加上注解@EnableEurekaServer即可,如图:
5.配置springboot启动:
将resource下面的 application.properties文件改 为application.yml文件并添加如下配置:
需要在application.yml文件中添加的配置如下:
server:
port: 8801
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
添加完配置之后如图:
6.然后启动项目,项目启动后访问localhost:8801,看到这个界面(如图),Eureka注册中 心就已经启动成功。
7.接下来我们可以编写一个提供者(ribbon模块),一个消费者 (ribbon-consumer模块):
spring cloud的消费者也可以是提供者,二者只有逻辑上的区别,它 是链式的存在。在spring boot中有两种消费方式:
1.rest+ribbon
2.Feign
接下来我们编写消费者:
A、rest+ribbon消费:
1.首先保持Eureka的启动不变,然后在cloudDemo下新建一个 module 叫做ribbon,它也是spring boot结构,如图:
2.创建完成后,编写RibbonApplication启动类,在该启动类中添加注解 @EnableDiscoveryClient 注册服务,然后注入RestTemplate对象,@LoadBalanced 表示开启负载均衡,如图:
RibbonApplication启动类中的完整代码如下:
@SpringBootApplication
@EnableDiscoveryClient //注册服务
public class RibbonApplication {
public static void main(String[] args) {
SpringApplication.run(RibbonApplication.class, args);
}
@Bean
@Autowired
@LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
}
3.在ribbon模块下创建一个测试用的service文件,如图:
HelloService类中的完整代码如下:
@Service
public class HelloService {
public String sayHello(){
return "helloWorld"; // 提供一个hello World
}
}
4.然后我们再编写一个controller,提供一个hello的 controller,如图:
5.HelloController类中的完整代码如下:
@RestController
public class HelloController {
@Autowired
private HelloService helloService;
@GetMapping("/hello")
public String sayHello(String name){
return helloService.sayHello() + " " + name;
}
}
然后我们再配置application.yml , 一样的 将配置文件改为yml格式,然后输入配置,如图:
在application.yml配置文件中添加一下配置,如图:
添加的配置的完整的信息如下:
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8801/eureka/
server:
port: 8802
spring:
application:
name: ribbon-provider
7.然后在启动eureka服务的同时启动ribbon服务,如图:
两个服务都启动后访问 localhost:8802/hello?name=zhangtaifeng,如图 :
8.测试完成,这个服务(ribbon模块)我们把他叫做服务提供者,然后我们再重新建一个module,可以叫做 ribbon-consumer,我们把他叫做服务的消费者,整体配置与上边新建模块配置一致,我们只需要修改service和controller部分(注意package):
完整的配置信息如下:
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8801/eureka/
server:
port: 8803
spring:
application:
name: ribbon-consumer
RibbonConsumerApplication启动类中的代码如图:
RibbonConsumerApplication启动类中的完整代码如下:
@SpringBootApplication
@EnableDiscoveryClient //注册服务
public class RibbonConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(RibbonConsumerApplication.class, args);
}
@Bean
@Autowired
@LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
}
编写service,如图:
HelloService类中的完整代码如下:
@Service
public class HelloService {
@Autowired
RestTemplate restTemplate;//注入restTemplate
public String sayHello(){
//通过rest调用 调用provider服务
return restTemplate.getForObject("http://ribbon-provider/hello?name=zhangtaifeng",String.class);
}
}
编写controller,如图:
HelloController类中的完整代码如下:
@RestController
public class HelloController {
@Autowired
private HelloService helloService;
@GetMapping("/hello")
public String sayHello(String name){
return helloService.sayHello() + " " + name;
}
}
启动该应用:运行该启动类(前两个启动类也要启动起来),效果如图:
所以,RestTemplate成功调用了8802端口上的provider。
到了这里,相信大家对spring cloud调用服务有了一定的了解,cloud通过rest调用服务进行服务间的通信,每一个controller的方法对外提供对应的服务接口。
B、Feign消费
1、feign消费是通过注解的方式进行的消费模式,它默认打开了负载均衡,还是在cloudDemo下创建一个module,名字叫feign:
2、feign模块创建成功后,在FeignApplication启动类上加两个注解,如下:(这两个注解,用于注册和发现服务。)
@EnableDiscoveryClient:
@EnableFeignClients
3.在feign模块的目录下创建controller
HelloController类中的完整代码如下:
@RestController
public class HelloController {
@Autowired
private HelloService helloService;
@GetMapping("/hello")
public String sayHello(String name){
return helloService.sayHello() + " " + name;
}
}
4.在feign模块的目录下创建service
HelloService类中的完整代码如下:
@Service
public class HelloService {
@Autowired
private GetHello getHello; //注入rpc
public String sayHello(){
return getHello.sayHello(); // 提供一个hello World
}
}}
5.在feign模块的目录下新建一个rpc文件夹,然后在rpc下新建一个GetHello接口:
GetHello接口中的完整代码如下:
@FeignClient(value = "ribbon-consumer")
public interface GetHello {
@RequestMapping(value = "/hello?name=feign",method = RequestMethod.GET)
public String sayHello();
}
6.修改application.yml文件如下:
application.yml文件中的完整配置如下:
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8801/eureka/
server:
port: 8804
spring:
application:
name: feign-consumer
7.启动所有服务,分别是:eureka模块、ribbon模块、ribbon-consumer模块和feign模块,启动后效果图如图所示:
到此,springcloud微服务就搭建完成了!
有问题请留言~
希望我的文章能对你有所帮助!