服务注册与发现 | 上手实践Spring Cloud Eureka 和 Feign(二)

这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战

上一篇文章《上手实践Spring Cloud Eureka 和 Feign(一)》讲到了服务注册与发现的简单概念,这篇文章直接上手实践Eureka,启动一个服务注册中心,以及将业务服务注册到这个中心上。

二、Eureka

Eureka作为Spring Cloud的服务注册中心,我们需要引入Spring Cloud相关的依赖,其次我们需要启动一个Eureka注册服务中心,最后为了验证服务注册的功能,需要启动一个web 服务注册到注册中心。

2.1 Eureka的Spring Cloud 依赖

首先,我们将创建一个新的 Maven pom 项目模块,并将Spring Cloud的的依赖放入,这个依赖将决定Spring Cloud 相关组件Starter的版本。

<properties>
    <version.spring-cloud>2020.0.1</version.spring-cloud>
</properties>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>${version.spring-cloud}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
复制代码

Spring Cloud 依赖的版本我用的比较新,根据实际工程选择合适的即可。

2.2 注册中心

我们新建一个子模块管理Eureka的注册中心服务,在这里要引入Eureka的Server依赖包。

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
复制代码

然后写一个启动类Launcher,目的是把服务启动起来,包含的内容如下。

@SpringBootApplication
@EnableEurekaServer
public class Launcher {

    public static void main(String[] args) {
        SpringApplication.run(Launcher.class,args);
    }
}
复制代码

application.yml的配置信息如下。

server.port=8761
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
复制代码

此时启动服务,浏览器上访问URLhttp://{yourhost}:8761,如下图所示,表示服务注册中心启动成功,能提供服务注册和发现的功能。

screenshot-127-0-0-1-8761-1636959093343.png

2.3 服务提供方

在有了服务注册中心后,我们可以启动一个服务去注册到服务注册中心,这些服务都统统成为Eureka Client,所以要引入Client相关的依赖。

扫描二维码关注公众号,回复: 13169470 查看本文章
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
复制代码

我们提供一个简单的greeting api接口。

public interface GreetingController {

    @GetMapping("/greeting")
    String greeting();
}
复制代码

然后在启动类Launcher去实现这个接口。

@SpringBootApplication
@RestController
public class Launcher implements GreetingController {

    @Autowired
    @Lazy
    private EurekaClient eurekaClient;

    @Value("${spring.application.name}")
    private String appName;

    @Override
    public String greeting() {
        return String.format(
            "Hello from '%s'!", eurekaClient.getApplication(appName).getName());
    }

    public static void main(String[] args) {
        SpringApplication.run(Launcher.class,args);
    }
}
复制代码

配置文件application.yml的内容如下。

spring:
  application:
    name: spring-cloud-eureka-client

server:
  port: 0
eureka:
  client:
    serviceUrl:
      defaultZone: ${EUREKA_URI:http://localhost:8761/eureka}
  instance:
    preferIpAddress: true
复制代码

然后启动这个服务,观察Eureka的服务管理页面,可以看到有服务注册成功。

screenshot-127-0-0-1-8761-1636959488655.png 此时,服务的提供方也准备好了,接下来就需要去消费这个服务了。


少年,没看够?点击石头的主页,随便点点看看,说不定有惊喜呢?欢迎支持点赞/关注/评论,有你们的支持是我更文最大的动力,多谢啦!

猜你喜欢

转载自juejin.im/post/7030944034499592222
今日推荐