Spring Cloud 微服务(三) 服务发现Eureka
我们创建了一个简单的服务,现在我们想治理我们的服务,首先需要做的是把服务注册在一个公共的服务上,让它可以被别的服务发现,本篇主要介绍Eureka服务发现。
项目搭建
我们还是像上一篇一样用IntelliJ的Spring Initializer创建一个基础工程,这次选择的组件是Eureka Server。
image.png
这样我们就有了一个入口方法类以及一个配置文件。
image.png
注意这里配置文件本来是application.properties,我改成了个人更喜欢的application.yml格式,这样可以用yaml格式来写配置,好处是比properties文件更能展示配置的层级关系。
服务注册与发现
打开入口文件,我们需要把这个服务注解成Eureka注册服务器,所以加上注解@EnableEurekaServer。
@EnableEurekaServer@SpringBootApplicationpublic class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } }
我们还需要配置一下服务器的端口,所以编辑application.yml:
server: port: 8081 eureka: instance: hostname: localhost client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
我们配置了服务器的端口为localhost的8081,通过配置registerWithEureka false和fetchRegistry fase表明这是一个Eureka服务器。
这时启动项目,我们可以打开http://localhost:8081/ 观察Eureka服务器页面。
image.png
看到Instances currently registered with Eureka,目前还没有服务注册。我们打开上一篇文章创建的项目,准备把它注册到我们的Eureka服务器作为一个Eureka Client。打开Client项目的配置文件修改:
server: port: 8870 spring: application: name: dummy-service eureka: instance: hostname: localhost port: 8081 client: serviceUrl: defaultZone: http://${eureka.instance.hostname}:${eureka.instance.port}/eureka/
Client端口监听8870,定义了一个名字叫"dummy-service"来作为服务名称,然后指定我们的Eureka Server为localhost:8081。然后在代码加上@EnableDiscoveryClient注解:
@EnableDiscoveryClient@RestController@SpringBootApplicationpublic class Example { @RequestMapping("/") String home() { return “Hello World”; } ... }
运行Client
启动我们的Client项目,它会自动去寻找我们的Eureka Server,并注册,这时候再刷新我们的http://localhost:8081/ 页面,就可以看到我们的服务"dummy-service"已经成功注册
image.png
Client会发送心跳,CPU等运行数据给Eureka Server,所以如果Client挂了很快就会从Eureka Server上消失。
作者:Lin_XJ
链接:https://www.jianshu.com/p/67b0d2108f67
共同学习,写下你的评论
评论加载中...
作者其他优质文章