java 连接eureka_java环境 服务注册发现Eureka组件

本文详述了如何使用Spring Cloud Eureka搭建服务注册与发现中心,包括服务提供者和服务消费者的配置,涉及Eureka Server的安全认证、服务提供者的API接口、Swagger文档集成以及服务消费者的调用方式。通过实例展示了Eureka在Java环境下的应用。
摘要由CSDN通过智能技术生成

springcloud下单机版的Eureka使用

服务注册中心

服务提供者

服务消费者

Eureka 服务注册发现中心配置

1、pom文件需要添加的依赖

org.springframework.cloud

spring-cloud-starter-netflix-eureka-server

org.springframework.cloud

spring-cloud-dependencies

${spring-cloud.version}

pom

import

注意spring-cloud-dependencies和springboot版本的兼容

2、application.properties下配置Eureka的配置属性

# 设置spring应用命名,可以自定义,非必要

spring.application.name=eureka-server

# 设置Eureka Server WEB控制台端口,自定义

server.port=8761

#是否将自己注册到Eureka-Server中,默认的为true(服务器自己就不注册自己了)

eureka.client.register-with-eureka=false

#是否从Eureka-Server中获取服务注册信息,默认为true

eureka.client.fetch-registry=false

3、启动类配置,添加 @EnableEurekaServer 注解

@EnableEurekaServer

@SpringBootApplication

public class SpringCloudEurekaServerApplication {

public static void main(String[] args) {

SpringApplication.run(SpringCloudEurekaServerApplication.class,args);

}

}

4、注册中心的安全认证(如果可以任意访问的话,那么其安全性太低)

1、添加依赖

org.springframework.boot

spring-boot-starter-security

引入依赖后后默认认证,再次访问 注册服务中心会要求登录

45dee48a3a67e0e573ce43831df43893.png

秘密是随机生成的UUID,启动时会显示在控制台。默认用户名是user

97e8041fb37591195092e722cbdacf20.png

用户名和密码也可以在application.properties配置文件中配置

#安全验证

spring.security.user.name=liang

spring.security.user.password=123456

如果要禁用安全认证,可以在启动类中添加exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class}

@EnableEurekaServer

@SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class})

public class Springcloud01EurekaServerApplication {

public static void main(String[] args) {

SpringApplication.run(Springcloud01EurekaServerApplication.class, args);

}

}

security安全认证存在跨站调用问题,不然服务提供者和消费者无法跨站调用。

@EnableWebSecurity

public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

@Override

protected void configure(HttpSecurity http) throws Exception {

http.csrf().ignoringAntMatchers("/eureka/**");

super.configure(http);

}

}

6da8a7cc750577f06af54f64e0c9bc2a.png

Eureka 服务提供者配置

1、pom文件需要添加的依赖

org.springframework.cloud

spring-cloud-starter-netflix-eureka-client

org.springframework.boot

spring-boot-starter-web

io.springfox

springfox-swagger2

2.7.0

io.springfox

springfox-swagger-ui

2.7.0

org.springframework.cloud

spring-cloud-dependencies

${spring-cloud.version}

pom

import

提供接口服务,所以顺便把swagger的依赖也引入了

2、在apiController包下添加了一个StudentController

@Api(tags = "学生管理相关接口")

@RequestMapping(value = "/student",method = {RequestMethod.GET})

@RestController

public class StudentController {

@ApiOperation("根据id查询用户的接口")

@RequestMapping("/get/{id}")

public String getName(@PathVariable("id") Integer studentId){

System.out.println("打印获取参数:"+studentId);

return "打印获取参数:"+studentId;

}

}

3、在config包下建一个swaggerConfig配置类

注意要添加上@EnableSwagger2注解,不让访问swagger页面会弹出一个alert错误

@Configuration

@EnableSwagger2 //启用 Swagger2

public class swaggerConfig {

@Bean

public Docket createRestApi() {

return new Docket(DocumentationType.SWAGGER_2)

.select()

.apis(RequestHandlerSelectors.basePackage("com.liang.springcloud02eurekaprovider.apiController"))

.paths(PathSelectors.any())

.build().apiInfo(new ApiInfoBuilder()

.title("SpringBoot整合Swagger")

.description("SpringBoot整合Swagger,详细信息......")

.version("1.0")

.license("The Apache License")

.licenseUrl("http://www.baidu.com")

.build());

}

}

4、配置Eureka 客户端注册 (确认以上的swagger和接口能正常访问)

启动类中添加@EnableEurekaClient 注解

@EnableEurekaClient

@SpringBootApplication

public class Springcloud02EurekaProviderApplication {

public static void main(String[] args) {

SpringApplication.run(Springcloud02EurekaProviderApplication.class, args);

}

}

5、在application.properties(或yaml文件)中配置 Eureka的配置信息

提供者的应用名称必填,服务中心的应用名称可以不填

# 定义SpringBoot应用的名称,建议必须提供。在SpringCloud中,对服务的最大粒度的管理是使用应用命名的

# 最好是一个应用一个名称,在消费者角色开发的时候,比较容易查找Provider

spring.application.name=eureka-provider

server.port=8001

eureka.client.register-with-eureka=true

eureka.client.fetch-registry=true

#配置Eureka Server的地址信息,如果是Eureka Server集群,多个节点使用逗号','分割。

eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

#设置注册跳转地址

eureka.instance.status-page-url-path=/swagger-ui.html

6、服务提供者安全认证访问(如果注册中心中配置了认证访问)

defaultZone 格式http://用户名:密码@地址:端口/eureka/

#配置Eureka Server的地址信息,如果是Eureka Server集群,多个节点使用逗号','分割。

# 如果Eureka Server 中用了安全认证组件,需要使用安全认证语法。

#eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

eureka.client.service-url.defaultZone=http://liang:123456@localhost:8761/eureka/

Eureka 服务消费者配置

1、pom文件需要添加的依赖

org.springframework.cloud

spring-cloud-starter-netflix-eureka-client

org.springframework.boot

spring-boot-starter-web

org.springframework.cloud

spring-cloud-dependencies

${spring-cloud.version}

pom

import

2、添加一个控制器调用执行消费

两种执行方法

一个是获取提供者实例结合(可能是一个)DiscoveryClient

一个是选择提供者实例 LoadBalancerClient

@RestController

public class IndexController {

@Autowired

private RestTemplate restTemplate;

@Bean

public RestTemplate restTemplate(){

return new RestTemplateBuilder().build();

}

@Autowired

DiscoveryClient discoveryClient;

@Autowired

private LoadBalancerClient loadBalancerClient;

@GetMapping("/consumer/{id}")

private String getInfo(@PathVariable("id") int id){

// 由于查询到的服务列表是一个集合 可能是集合化部署 集合中每一项就是一个实例

List provider = discoveryClient.getInstances("eureka-provider-01");

for(ServiceInstance serviceInstance : provider){

String host= serviceInstance.getHost();

Integer port= serviceInstance.getPort();

StringBuilder sb=new StringBuilder();

sb.append("http://");

sb.append(host);

sb.append(port);

sb.append("/student/get");

sb.append("/"+id);

System.out.println("格式拼接:"+sb.toString());

System.out.println(serviceInstance.toString());

String geturlInfo=restTemplate.getForObject(sb.toString(),String.class);

System.out.println("获取提供内容:"+geturlInfo);

}

return "执行ID:"+id;

}

@GetMapping("/consumer2/{id}")

private String getInfo2(@PathVariable("id") int id){

ServiceInstance serviceInstance= loadBalancerClient.choose("eureka-provider-01");

String host= serviceInstance.getHost();

Integer port= serviceInstance.getPort();

StringBuilder sb=new StringBuilder();

sb.append("http://");

sb.append(host);

sb.append(port);

sb.append("/student/get");

sb.append("/"+id);

System.out.println("格式拼接:"+sb.toString());

System.out.println(serviceInstance.toString());

String geturlInfo=restTemplate.getForObject(sb.toString(),String.class);

System.out.println("获取提供内容:"+geturlInfo);

return "执行ID:"+id;

}

}

3、application.properties中配置Eureka信息

消费者可以不注册到服务中心

spring.application.name=eureka-consumer

server.port=8080

# 消费者可以不注册到服务中心

eureka.client.register-with-eureka=false

eureka.client.fetch-registry=false

#配置Eureka Server的地址信息,如果是Eureka Server集群,多个节点使用逗号','分割。

eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

4、启动类添加@EnableDiscoveryClient 注解

@EnableDiscoveryClient

@SpringBootApplication

public class Springcloud03EurekaConsumerApplication {

public static void main(String[] args) {

SpringApplication.run(Springcloud03EurekaConsumerApplication.class, args);

}

}

5、消费者安全认证访问(如果注册中心中配置了认证访问)

defaultZone 格式http://用户名:密码@地址:端口/eureka/

#配置Eureka Server的地址信息,如果是Eureka Server集群,多个节点使用逗号','分割。

#eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

eureka.client.service-url.defaultZone=http://liang:123456@localhost:8761/eureka/

依次启动 注册中心、服务提供者、服务消费者。执行消费者中的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值