php eureka客户端,Spring Cloud Eureka 注册与发现操作步骤详解

在搭建Spring Cloud Eureka环境前先要了解整个架构的组成,常用的基础模式如下图:

5ef5207d0f0002b76b95a2a8d8ca3b92.png

服务提供者:将springboot服务编写好以后,通过配置注册中心地址方式注册,提供给消费者使用。

注册中心:服务的中间桥梁,服务提供者将服务注册。服务消费者可以通过注册信息调用需要使用的服务。

服务消费者:通过规定的调用方式,读取注册中心的注册信息,调用相应的服务。

e64159c8efaf9ca70d7eb75a082a1006.png

根据后续的服务复杂度进化以后,可以看到服务提供者也可以是服务消费者,服务消费者也可以是服务提供者。根据不同的业务情况是可以互相调用的。

下面来搭建一个基础的eureka。环境还是使用的之前的spring官方下载的。

内容写的比较详细,可以跟这一步步操作。

一、注册中心

685996d39a1900939093b69d362638b9.png

0e380ba576deb13f54d21ce2160b1820.png

7fcf7859cc9d6dbf6efed2bfba7e45d0.png

8491a8afc0779390619ae22864520b86.png

以下是几个需要修改和添加的地方,后面会有完整的pom.xml

org.springframework.boot

spring-boot-starter-parent

2.1.3.RELEASE

org.springframework.cloud

spring-cloud-dependencies

Finchley.SR2

pom

import

org.springframework.cloud

spring-cloud-starter-netflix-eureka-server

org.springframework.boot

spring-boot-starter-actuator

Spring Cloud

Spring Boot

Angel版本

兼容Spring Boot 1.2.x

Brixton版本

兼容Spring Boot 1.3.x,也兼容Spring Boot 1.4.x

Camden版本

兼容Spring Boot 1.4.x,也兼容Spring Boot 1.5.x

Dalston版本、Edgware版本

兼容Spring Boot 1.5.x,不兼容Spring Boot 2.0.x

Finchley版本

兼容Spring Boot 2.0.x,不兼容Spring Boot 1.5.x

Greenwich版本

兼容Spring Boot 2.1.x

这里采用Finchley.SR2版本 springboot版本改成 2.1.3.RELEASE

完整的pom.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.1.3.RELEASE

com.example

eureka1

0.0.1-SNAPSHOT

eureka1

Demo project for Spring Boot

1.8

org.springframework.cloud

spring-cloud-dependencies

Finchley.SR2

pom

import

org.springframework.boot

spring-boot-starter

org.springframework.cloud

spring-cloud-starter-netflix-eureka-server

org.springframework.boot

spring-boot-starter-actuator

org.springframework.boot

spring-boot-starter-test

test

org.junit.vintage

junit-vintage-engine

org.springframework.boot

spring-boot-maven-plugin

package com.example.demo;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer

@SpringBootApplication

public class Eureka1Application {

public static void main(String[] args) {

SpringApplication.run(Eureka1Application.class, args);

}

}

然后在代码文件中添加@EnableEurekaServer注解

修改application.yml文件

server:

port: 3000 # 端口

eureka:

instance:

hostname: eureka-center

appname: 注册中心

client:

registerWithEureka: false # 单点的时候设置为 false 禁止注册自身

fetchRegistry: false

serviceUrl:

defaultZone: http://localhost:3000/eureka

server:

enableSelfPreservation: false

evictionIntervalTimerInMs: 4000

9a70b236bd507a66874195e30e2e9908.png

启动服务

浏览器输入 http://127.0.0.1:3000

fb0790a0585f846a0308506fa7a36ab4.png

证明注册中心搭建成功了

二、服务提供者

前面的步骤一样

afab4d1be9e45ba6a2c2283e737c54a4.png

ProviderController是新建的一个服务代码

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-starter-web

org.springframework.cloud

spring-cloud-starter-netflix-eureka-client

不同的地方有加了一个spring-boot-starter-web和spring-cloud-starter-netflix-eureka-client客户端

完整的pom.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.1.3.RELEASE

com.example

eurekaClient1

0.0.1-SNAPSHOT

eurekaClient1

Demo project for Spring Boot

1.8

org.springframework.cloud

spring-cloud-dependencies

Finchley.SR2

pom

import

org.springframework.boot

spring-boot-starter

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-starter-web

org.springframework.cloud

spring-cloud-starter-netflix-eureka-client

org.springframework.boot

spring-boot-maven-plugin

EurekaClient1Application

package com.example.demo;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@EnableEurekaClient

@SpringBootApplication

public class EurekaClient1Application {

public static void main(String[] args) {

SpringApplication.run(EurekaClient1Application.class, args);

}

}

ProviderController

package com.example.demo;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController

public class ProviderController {

@RequestMapping(value = "/hello")

public String hello(){

return "hello spring cloud!";

}

@RequestMapping(value = "/nice")

public String nice(){

return "nice to meet you!";

}

}

application.yml

server:

port: 3001

eureka:

instance:

preferIpAddress: true

client:

serviceUrl:

defaultZone: http://localhost:3000/eureka ## 注册到 eureka

spring:

application:

name: single-provider ## 应用程序名称,后面会在消费者中用到

0adbd010905a6321afff958a4100c88b.png

4cb538ec26e91512a0128087f8909338.png

c6ed0abfb44617b0251dc2cbe7732579.png

证明服务已经注册成功

三、服务消费者

前面还是同上

bc36ab57e2c588d5ea79a69a8507f83d.png

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-starter-web

org.springframework.cloud

spring-cloud-starter-openfeign

org.springframework.cloud

spring-cloud-starter-netflix-eureka-client

pom.xml新增以上内容

完整pom.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.1.3.RELEASE

com.example

eurekaClient1

0.0.1-SNAPSHOT

eurekaClient1

Demo project for Spring Boot

1.8

org.springframework.cloud

spring-cloud-dependencies

Finchley.SR2

pom

import

org.springframework.boot

spring-boot-starter

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-starter-web

org.springframework.cloud

spring-cloud-starter-openfeign

org.springframework.cloud

spring-cloud-starter-netflix-eureka-client

org.springframework.boot

spring-boot-maven-plugin

EurekaClient2Application

package com.example.demo;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;

import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

import org.springframework.cloud.openfeign.EnableFeignClients;

import org.springframework.context.annotation.Bean;

import org.springframework.web.client.RestTemplate;

@EnableEurekaClient

@EnableFeignClients

@SpringBootApplication

public class EurekaClient2Application {

/**

* 注入 RestTemplate

* 并用 @LoadBalanced 注解,用负载均衡策略请求服务提供者

* 这是 Spring Ribbon 的提供的能力

* @return

*/

@LoadBalanced

@Bean

public RestTemplate restTemplate() {

return new RestTemplate(); //用于调用服务对象

}

public static void main(String[] args) {

SpringApplication.run(EurekaClient2Application.class, args);

}

}

ConsumerController

package com.example.demo;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import org.springframework.web.client.RestTemplate;

@RestController

public class ConsumerController {

@Autowired

private RestTemplate restTemplate;

private static final String applicationName = "single-provider";//服务注册名

@RequestMapping(value = "commonRequest")

public Object commonRequest(){

String url = "http://"+ applicationName +"/hello";

String s = restTemplate.getForObject(url,String.class);//Ribbon方式调用服务

return s;

}

}

application.yml

server:

port: 3002

eureka:

client:

serviceUrl:

defaultZone: http://127.0.0.1:3000/eureka ## 注册到 eureka

instance:

preferIpAddress: true

spring:

application:

name: single-customer

f6e765810f7a126b2f4bac66bd412b96.png

启动服务

http://127.0.0.1:3002/commonRequest

dac5c6849ebfbdb9800c4f10834f316e.png

返回服务提供者的 hello方法参数。

整个最简单的过程就完成了,需要更好的使用spring cloud 后续需要了解分布式、负载均衡、熔断等概念。在后续章节将一步步的拆分。

到此这篇关于Spring Cloud Eureka 注册与发现操作步骤详解的文章就介绍到这了,更多相关Spring Cloud Eureka 注册内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值