写点什么

Spring Cloud 构建微服务架构(一)服务注册与发现

  • 2022 年 5 月 12 日
  • 本文字数:1516 字

    阅读完需:约 5 分钟

<dependency>


<groupId>org.springframework.boot</groupId>


<artifactId>spring-boot-starter-test</artifactId>


<scope>test</scope>


</dependency>


<dependency>


<groupId>org.springframework.cloud</groupId>


<artifactId>spring-cloud-starter-eureka-server</artifactId>


</dependency>


</dependencies>


<dependencyManagement>


<dependencies>


<dependency>


<groupId>org.springframework.cloud</groupId>


<artifactId>spring-cloud-dependencies</artifactId>


<version>Brixton.RELEASE</version>


<type>pom</type>


<scope>import</scope>


</depend 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 ency>


</dependencies>


</dependencyManagement>


通过@EnableEurekaServer注解启动一个服务注册中心提供给其他应用进行对话。这一步非常的简单,只需要在一个普通的 Spring Boot 应用中添加这个注解就能开启此功能,比如下面的例子:


@EnableEurekaServer


@SpringBootApplication


public class Application {


public static void main(String[] args) {


new SpringApplicationBuilder(Application.class).web(true).run(args);


}


}


在默认设置下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为,只需要在application.properties中问增加如下配置:


server.port=1111


eureka.client.register-with-eureka=false


eureka.client.fetch-registry=false


eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/


为了与后续要进行注册的服务区分,这里将服务注册中心的端口通过server.port属性设置为1111


启动工程后,访问:[http://localhost:1111/](()


可以看到下面的页面,其中还没有发现任何服务



alt


该工程可参见:[Chapter9-1-1/eureka-server](()

创建“服务提供方”

下面我们创建提供服务的客户端,并向服务注册中心注册自己。


假设我们有一个提供计算功能的微服务模块,我们实现一个 RESTful API,通过传入两个参数 a 和 b,最后返回 a + b 的结果。


首先,创建一个基本的 Spring Boot 应用,在pom.xml中,加入如下配置:


<parent>


<groupId>org.springframework.boot</groupId>


<artifactId>spring-boot-starter-parent</artifactId>


<version>1.3.5.RELEASE</version>


</parent>


<dependencies>


<dependency>


<groupId>org.springframework.boot</groupId>


<artifactId>spring-boot-starter-test</artifactId>


<scope>test</scope>


</dependency>


<dependency>


<groupId>org.springframework.cloud</groupId>


<artifactId>spring-cloud-starter-eureka</artifactId>


</dependency>


</dependencies>


<dependencyManagement>


<dependencies>


<dependency>


<groupId>org.springframework.cloud</groupId>


<artifactId>spring-cloud-dependencies</artifactId>


<version>Brixton.RELEASE</version>


<type>pom</type>


<scope>import</scope>


</dependency>


</dependencies>


</dependencyManagement>


其次,实现/add请求处理接口,通过DiscoveryClient对象,在日志中打印出服务实例的相关内容。


@RestController


public class ComputeController {


private final Logger logger = Logger.getLogger(getClass());


@Autowired


private DiscoveryClient client;


@RequestMapping(value = "/add" ,method = RequestMethod.GET)


public Integer add(@RequestParam Integer a, @RequestParam Integer b) {


ServiceInstance instance = client.getLocalServiceInstance();


Integer r = a + b;


logger.info("/add, host:" + instance.getHost() + ", service_id:" + instance.getServiceId() + ", result:" + r);

用户头像

还未添加个人签名 2022.04.13 加入

还未添加个人简介

评论

发布
暂无评论
Spring Cloud构建微服务架构(一)服务注册与发现_Java_爱好编程进阶_InfoQ写作社区