开篇
之前使用过基于dubbo和zookeeper的分布式服务,现在想学习一下springcloud的使用。
注册中心
注册中心的作用是用来管理服务的。分布式架构中,各个服务都将自己注册到注册中心,通过注册中心访问别的服务。大家都在注册中心报名,然后其中某个服务要调用另外一个服务的某个方法时就通过注册中心中的名单,就能直接找到并调用了。RPC框架就是干这个的,dubbo和springcloud都是一种RPC框架。
pom中引入eureka
springboot版本 2.2.2.RELEASE
springcloud版本 Hoxton.SR1
1.idea中新建一个springboot项目
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.tzc.springcloud</groupId>
<artifactId>eureka-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>eureka-server</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</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.yml
server:
port: 8761
eureka:
instance:
hostname: localhost #实例ip
client:
registerWithEureka: false #是否注册到注册中心,因为此服务是用来做注册中心的,所以不需要注册
fetchRegistry: false #表示是否从Eureka Server获取注册信息,不需要,因为这个就是注册中心
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ 注册地址
启动项目,注册中心就已经搭建完成了,访问localhost:8761就能进到注册中心的管理界面
注册服务
另外创建一个springboot项目,向上面一样,其中在pom文件中加入springboot的web模块。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
修改application.yml
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/ #注册中心
server:
port: 8765
spring:
application:
name: client2-provider #服务名
启动项目后,在管理界面中就能看到我们启动的这个服务
完成了!我们可以注册很多个服务,注意修改spring.application.name。学习的第一步OK了