SpringCloud之Eureka

SpringCloud之Eureka

一个服务发现组件,由于SpringCloud对其支持比较好,所以使用Eureka,当然也可以使用Dubbo。

简介:

Eureka是Nexfliex开发的服务注册与发现框架,本身是一个Rest服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层故障移除的目的,SpringCloud将其集成在子项目Spring-Cloud-nexfliex中,以实现SpringCloud服务发现的功能。

废话不多说,这些介绍在官网或百度都有,就不再啰嗦了,感兴趣的同学可以自行了解。

最终达成目的:是两个或多个服务之间可以远程调用。下文将会实现movie服务通过eureka远程调用user服务

例子:
1.用于服务的注册与发现,那自然需要至少3个工程,一个用于提供eureka服务,两个用于注册与发现,以及验证结果。这里创建出3个springboot工程。

eureka用于提供eureka服务,剩下两个模拟用户远程订电影票操作

2.导入eureka依赖以及其他web工程需要的依赖,这个网上也有(注意:服务端和发现端的依赖不一样)

服务端:(eureka工程)

发现端:(user工程和movie工程)

3.

a.需要在(eureka工程)springboot启动类上加注解(表示eureka作为一个服务端)

b.修改(eureka工程)application.properties配置文件(和yaml文件是同一个,只是写法不同,yaml更倾向于面向对象)

参数分析:

server.port:更改当前tomcat端口

service-url.defaultZone:服务注册地址

修改完毕后就可以启动了,启动后在页面输入eureka地址http://localhost:8761/,访问成功

因为并没有服务注册到eureka上,所以页面application 并没有应用显示(其他的信息包括eureka服务端的参数设置以及当前机器内存,核心等等)

4.

a.需要在(user工程和movie工程)springboot启动类上加注解(表示eureka作为一个客户端)

b.修改(user工程和movie工程)application.properties配置文件

参数分析:如上图注释所示

spring.application.name:表示修改应用名

spring.application.instance_id:表示当前机器ip地址

server.port:当前服务端口

修改完毕后就可以启动了,因为eureka服务端会实时监测是否有服务注册上,所以一旦有服务注册,就会自动发现

如图所示:注册到eureka注册后,application应用处会显示当前注册的user服务工程。同理,将movie服务工程也注册上去。

5.user服务工程连接MySQL数据库,先完成调用数据

测试完毕,可以正常调用数据库

6.编写movie服务工程代码

application启动类注入RestTemplate类,需要用RestTemplate类进行远程调用(@LoadBalance注解表示Ribbon客户端的负载均衡)

@SpringBootApplication
@EnableEurekaClient
public class MicroserviceSimpleComsumerMovieApplication {

	public static void main(String[] args) {
		SpringApplication.run(MicroserviceSimpleComsumerMovieApplication.class, args);
	}
	
	@Bean
	@LoadBalanced
	public RestTemplate restTemplate() {
		return new RestTemplate();
	}
	
}

controller类

package com.miss.cloud.microservicesimplecomsumermovie.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import com.miss.cloud.microservicesimplecomsumermovie.entity.User;

/**
 * movie服务通过eureka远程调用user服务
 * @author Hang W
 * @Date 2018-12-1 23:18:45
 *
 */
@RestController
@RequestMapping("/comsumer")
public class MovieController {

	@Autowired
	private RestTemplate restTemplate;
	
	// user.address=http://localhost:8443/miss/query/
	@Value("${user.address}")
	private String host;
	
	@GetMapping("/query/{id}")
	public User queryUserById(@PathVariable Long id) {
		
		User user = restTemplate.getForObject(host + id, User.class);
		
		return user;
	}
	
}

说明:

1.使用restTemplate调用如果不进行转换,那返回的是Json,也可以,自行决定。

2.host:表示user服务的远程地址,写在application.properties配置文件中

调用movie接口,可以看到返回的user信息。调用成功

总结:

1.使用Eureka,是因为和springcould支持较好,当然服务之间调用也可以使用dubbo。(下次分享dubbo服务之间的调用)

2.完全得力于springboot的便捷,使我们使用spring完全都可以不用写xml,实在非常方便。

3.好久好久好久没写过博客了,,,,,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值