springcloud微服务实践⼀
最近在学习spring框架.其中spring cloud在微服务⽅⾯很⽕,所以在学习过程中,也做⼀些记录.
注:这⼀个系列的开发环境版本为 java1.8, spring boot2.x, spring cloud Greenwich.SR2, IDE为 Intelli IDEA spring cloud的简介
注册中⼼Eureka
Eureka是Netflix开源的⼀款提供服务注册和发现的产品.它是spring cloud最核⼼的组件之⼀.
接下来我们看看具体的构建步骤:
构建步骤
1.创建spring cloud项⽬
选择菜单 File>New>Project, 选择 Spring Initializr,然后 next.
2.输⼊项⽬名称
Group 为组织名, Artifact 为项⽬名, 输出完毕后 next.
3.选择依赖
接下来选择依赖,直接Spring Cloud, 然后 next.
4.选择项⽬路径
选好路径,直接 next.
5.完成创建
到这⾥,⼀个标准的spring cloud项⽬就出来了
6.补充代码
接下来就是补充代码了.
实例代码
1.⾸先的依赖关系: l
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/POM/4.0.0 /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.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.xingyys.firstCloud</groupId>
<artifactId>discovery</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>discovery</name>
<description>Demo project for Spring Cloud Discovery</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR2</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>
</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>
要注意的是spring boot2.x版本和1.x版本在依赖上有⼀些不同,所以特别注意 properties中的<spring-cloud.version>Greenwich.SR2</spring-cloud.version>
2.启动代码中添加@EnableEurekaServer注解
@SpringBootApplication
@EnableEurekaServer
public class DiscoveryApplication {
public static void main(String[] args) {
SpringApplication.run(DiscoveryApplication.class, args);
}
}
3.配置⽂件 application.properties
spring.application.name=spring-cloud-eureka
server.port=8000
ister-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=localhost:${server.port}/eureka/
ister-with-eureka :表⽰是否将⾃⼰注册到Eureka Server,默认为true。
eureka.client.fetch-registry :表⽰是否从Eureka Server获取注册信息,默认为true。
eureka.client.serviceUrl.defaultZone :设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。默认是localhost:8761/eureka ;多个地址可使⽤ , 分隔。
4.编译打包
进⼊到discovery⽬录下执⾏命令:
# 忽略测试
mvn clean package -st.skip=true
编译成功后会在 target⽬录下⽣成 jar包
5.运⾏discovery
java -jar target/discovery-0.0.1-SNAPSHOT.jar
注册中⼼的⾼可⽤
既然注册中⼼这么重要,那么单机运⾏怎么能保证服务的可靠性呢.所以我们就需要对注册中⼼做集.
Eureka通过互相注册的⽅式来实现⾼可⽤的部署,所以我们只需要将Eureke Server配置其他可⽤的serviceUrl就能实现⾼可⽤部署.接下来我们就来看看怎么实现吧:
双活配置
1.创建application-node1.properties,作为node1服务中⼼的配置,并将serviceUrl指向node2`, :
spring.application.name=discovery-node1
server.port=8001
ister-with-eureka=true
eureka.client.fetch-registry=true
eureka.instance.hostname=node1
eureka.client.serviceUrl.defaultZone=node2:8002/eureka/
2.创建application-node2.properties,作为node2服务中⼼的配置,并将serviceUrl指向node1:
spring.application.name=discovery-node2
server.port=8002
ister-with-eureka=true
eureka.client.fetch-registry=true
eureka.instance.hostname=node2
eureka.client.serviceUrl.defaultZone=node1:8001/eureka/
3.修改hosts
127.0.0.1 node1
127.0.0.1 node2
4.修改代码,添加@EnableEurekaClient注解:
@SpringBootApplication
微服务注册中心有哪些@EnableEurekaServer
@EnableEurekaClient
public class DiscoveryApplication {
public static void main(String[] args) {
SpringApplication.run(DiscoveryApplication.class, args);
}
}
5.打包启动
依次执⾏下⾯命令
#打包
mvn clean package -st.skip=true
# 分别以node1和node2 配置信息启动eureka
# --spring.profiles.active 指定启动不同的配置⽂件
java -jar target/discovery-0.0.1-SNAPSHOT.jar --spring.profiles.active=node1
java -jar target/discovery-0.0.1-SNAPSHOT.jar --spring.profiles.active=node2
成功后访问浏览器就会变成这样:
更多集
如果是三个及以上的节点⼜要怎么配合呢,其实也是同样的原理.以三个节点为例,每个节点注册为其他节点的client就可以了.
因为spring cloud也⽀持yaml格式的配置⽂件,所以三个节点的配置⽂件可以写在⼀个yaml⽂件中:
---
spring:
application:
name: discovery
profiles: nodes1
server:
port: 8000
eureka:
instance:
hostname: node1
client:
serviceUrl:
defaultZone: node2:8001/eureka/,node3:8002/eureka/
---
spring:
application:
name: discovery
profiles: nodes2
server:
port: 8001
eureka:
instance:
hostname: node2
client:
serviceUrl:
defaultZone: node1:8000/eureka/,node3:8002/eureka/
-
--
spring:
application:
name: discovery
profiles: nodes3
server:
port: 8002
eureka:
instance:
hostname: node3
client:
serviceUrl:
defaultZone: node1:8000/eureka/,node2:8001/eureka/
分别启动:
java -jar target/discovery-0.0.1-SNAPSHOT.jar --spring.profiles.active=nodes1 java -jar target/discovery-0.0.1-SNAPSHOT.jar --spring.profiles.active=nodes2 java -jar target/discovery-0.0.1-SNAPSHOT.jar --spring.profiles.active=nodes3浏览器访问:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。