SpringCloud(二):服务的注册与发现(Eureka)
2019-10-29 16:01:42来源:博客园 阅读 ()
一、什么是服务注册与发现
Spring Cloud Eureka 模块提供的功能是被动式的服务发现。
服务注册:每个用户去聊天室服务器上注册。
服务发现:这样他的好友们就能看到你,你同时也将获取好友的上线列表.
微服务中,服务就相当于聊天室的用户,而服务注册中心就像聊天室服务器一样。
目前服务发现的解决方案有Eureka,Consul,Zookeeper等等。SpringCloud默认使用eureka作为服务注册中心。
二、Eureka使用过程
三、环境准备
为了简介,以后的文章都不会贴出所有的Maven Pom依赖,除非特殊说明,否则版本都是以下面的版本为准。
- SpringBoot 1.5.12.RELEASE
- SpringCloud Dalston.SR5
四、服务注册中心 Eureka Server
简单来说就是三步:
1.Maven依赖
2.注册中心配置 application.properties
3.EnableEurekaServer服务类
pom依赖:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.demo</groupId> <artifactId>springcloud_one</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.12.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Dalston.SR5</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
2.注册中心配置 application.properties
## 该注册服务器的端口 server.port=8001 ## 应用启动名称 spring.application.name=eureka-server ## eureka配置 ## 注册服务器的名称 eureka.instance.hostname=localhost ## 在默认设置下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为 ## 是否从eureka服务器获取注册信息,所以这里是false eureka.client.fetch-registry=false ## 是否注册自身到eureka服务器,因为当前这个应用就是eureka服务器,没必要注册自身,所以这里是false eureka.client.register-with-eureka=false ## 服务发布的地址 eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
3. @EnableEurekaServer:
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication @EnableEurekaServer public class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args); } }
启动访问:http://localhost:8001
可以看到Application中No instances available,因为还没有任何服务注册。接下来我们写一个用户服务注册到eureka注册中心、
四、服务提供方 Service Provider
这里简单写一个服务项目,Service_Provider,为了看起来简单,接口也直接放在启动类里面。
pom.xml :
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency>
application.properties:
## 该服务发布的端口 server.port=8011 ## 注意这里是作为服务注册名称,在eureka注册中心注册这个名称,自动转化为全大写,之后调用服务用服务名调用 spring.application.name=user-service eureka.client.register-with-eureka=true eureka.client.fetch-registry=true ## 注册服务中心的配置 eureka.client.service-url.defaultZone=http://localhost:8001/eureka/
启动类:
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @EnableEurekaServer @RestController public class HelloServiceApplication { public static void main(String[] args) { SpringApplication.run(HelloServiceApplication.class, args); } @RequestMapping("hello") public String hello (String name) { return "hello, " + name; } }
启动服务,然后继续查看eureka注册中心,刷新,查看变化,发现Hello-SERVICE服务已经注册在注册中心:
测试用户服务:
http://localhost:8011/hello?name=eureka
五、服务消费方
服务消费方式有restTemplate+ribbon以及feign,所以下章在讲如何消费注册中心的服务。
原文链接:https://www.cnblogs.com/2019lgg/p/11757201.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 聊聊微服务架构及分布式事务解决方案! 2020-06-10
- springboot~注册不同级别包里的bean~scanBasePackages 2020-06-10
- java环境教程:Tomcat下载,安装,设置为Windows服务,启动 2020-06-09
- Spring Cloud微服务(一):公共模块的搭建 2020-06-07
- Java生鲜电商平台-微服务生鲜电商系统设计(小程序/APP) 2020-06-04
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash