springCloud注册Eureka服务、路由器、FeignClient的使用

  1. Eureka注册服务中心

springCloud最常见的微服务注册是eureka,本篇主要讲述eurake注册,为了使springcloud版本统一,先创建一个maven空项目名为parent,作为公共包,只需要一个pom.xml文件

  <modelVersion>4.0.0</modelVersion>
  <groupId>com.springcloud</groupId>
  <artifactId>parent</artifactId>
  <version>1.0.1</version>
  <packaging>pom</packaging>
  <name>spring-cloud</name>                           
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.14.RELEASE</version>
	</parent>
	<!-- 导入spring cloud依赖管理 -->
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Dalston.SR4</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

还可以自己导入一些常用的公共包
再创建eureka注册项目,pom.xml文件配置引入

<!--引入公共包-->
<parent>
		<groupId>com.springcloud</groupId>
		<artifactId>parent</artifactId>
		<version>1.0.1</version>
		<relativePath/>
</parent>
<dependencies>
		<!-- 配置注册中心 -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka-server</artifactId>
		</dependency>
		<!-- 添加用户验证 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-security</artifactId>
		</dependency>
</dependencies>

application.properties配置如下:

#设置服务名称
spring.application.name=eureka-service
security.basic.enabled=true
#注册中心不需要注册自己
eureka.client.register-with-eureka=false
#注册中心不需要去发现服务
eureka.client.fetch-registry=false
#设置服务注册中心的URL
eureka.client.serviceUrl.defaultZone=http://${security.user.name}:${security.user.password}@localhost:9412/eureka
#设置访问服务中心URL的用户名
security.user.name=admin
#设置访问服务中心URL的密码
security.user.password=123456
#驱逐下线的服务,间隔,5秒,默认是60,建议开发和测试环境配置
eureka.server.evictionIntervalTimerInMs= 5000
# 请求连接的超时时间 默认的时间为 1 秒
ribbon.ConnectTimeout= 600000
# 请求处理的超时时间
ribbon.ReadTimeout= 600000
# 请求连接的超时时间
ego-product-provider.ribbon.ConnectTimeout= 600000
# 请求处理的超时时间
ego-product-provider.ribbon.ReadTimeout= 600000

服务注册中心可不设用户名和密码,但如果配置了用名和密码,客户端访问时就要配置用户名和密码。然后,使用@EnableEurakeServer注解开启服务注册,启动类代码如下:

//用来指定该项目为Eureka的服务注册中心
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SpringApplication.run(EurekaApplication.class, args);
	}
}

启动运行,浏览器输入http://localhost:9412/在这里插入图片描述
因为设置了用户名和密码,这里会弹框提示。登录之后进入主界面
在这里插入图片描述

  1. springcloud路由器管理服务


    它主要目的是把各个微服务实际路径转为虚拟路径,我们在请求发送时只需要使用虚拟路径,application.properties配置如下:
server.port=9512
spring.application.name=zuul_service
security.user.name=admin
security.user.password=123456
#设置服务注册中心的URL,本服务要向该服务注册中心注册自己
eureka.client.serviceUrl.defaultZone=http://${security.user.name}:${security.user.password}@localhost:9412/eureka
#通过http方式转发(使用OKhttp)
ribbon.okhttp.enabled=true
#hystrix断路器默认响应时间
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds= 600000
#ribbon连接响应时间
ribbon.ConnectTimeout= 1000000
ribbon.ReadTimeout=1000000
#项目的服务名
zuul.routes.admin-route.serviceId=microservice
#项目的路径通配符
zuul.routes.admin-route.path=/admin/**
#就是把名为microservice项目/admin/**所有请求改为/admin2/**
zuul.routes.admin-route2.serviceId=microservice
zuul.routes.admin-route2.path=/admin2/**
#路由器服务响应时间
zuul.host.connect-timeout-millis=600000
zuul.host.socket-timeout-millis=600000

路由器部署启动类代码如下:

// 开启zuul的网关功能,他是一个组合注解,集成了eureka客户端注解。
@EnableZuulProxy  
@SpringBootApplication
public class ZuulApplication {

	public static void main(String[] args) {
		SpringApplication.run(ZuulApplication.class, args);
	}
}

运行之后,再次浏览器打开 http://localhost:9412
在这里插入图片描述
这个表示路由器服务已经开启

  1. @FeignClient注解


    当我们需要在消费者调用服务提供者时,使用@FeignClient注解,它自带负载均衡的功能,可以在controller层调用,也可以在service层调用,它的使用代码如下:
@FeignClient(name = "microservice-admin", fallback = DemoFallback.class,url="www.aaa.com",configuration=TestFeignConfiguration.class)
public interface IDemoFeignClient {
	@PostMapping("/info")
	public String info();
}
@Component
public class DemoFallback implements IDemoFeignClient {
	@Override
	public String info(){
		return null;
	}
}

name属性表示需要调用的服务名,也可以是value
fallback是返回类,一般是实现其接口的类,它表示当服务发生错误时,需要返回一个静态的值,以节省服务的开销,这种机制称为降级容错处理。
url:表示远程调用域名或ip地址,如果不是远程则不需要。
configuration:FeignClient调用需要的配置类,如远程调用需要加入一些请求头参数来获取token

@Configuration
public class TestFeignConfiguration implements RequestInterceptor {
	@Override
	public void apply(RequestTemplate template) {
		HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
        String token = request.getHeader("Authorization");
		template.header("Content-Type", "application/json; charset=UTF-8");
		template.header("Authorization", token);
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不知道明天和天明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值