一、什么是服务注册与发现
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://www.lhsxpumps.com/_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://www.lhsxpumps.com/_localhost:8011/hello?name=eureka
五、服务消费方
服务消费方式有resttemplate+ribbon以及feign,所以下章在讲如何消费注册中心的服务。
您可能感兴趣的文章:
如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!
网友评论