SpringCloud 框架的演变由来是就不多介绍了。
需要准备工具:
我这里使用
IntelliJ IDEA (2018.2)
JDK:1.8
Maven 3.3.9
直接上干货,方便学习(不喜勿喷)~
一.原理图
主要可以理解为三个部分
1.Eureka Server:用于提供服务注册与发现功能,Eureka没有提供后台的存储而是将服务保存在内存的注册中心,通过心跳来保持最新状态。
2.Eureka Provider:服务提供者是Eureka的客户端,向服务端注册服务、向服务器发送心跳、获取服务注册列表。当服务注册到服务端时,会提供自己的元信息(主机、端口、服务名等)。
3.Eureka Consumer:对于注册发布到服务端的服务,服务消费者可以对其进行查找与调用,服务调用者也是一个Eureka客户端,但其主要职责是查找与调用服务。
~开始撸代码~
二.构建一个主工程(多模块开发)
File -> New -> Project - Maven
创建一个maven项目
点击next,创建包名
创建完目录结构,并删除src文件,pom.xml 文件暂时不用修改,进入第三节吧。
三.创建Eureka Server 模块
选中scloud项目,右击 New - Module - Spring Initializr (springcloud是一个基于springboot实现的一系列框架的集合,如果你的父pom.xml已经依赖Spring-boot 这个就创建maven模块吧)
生成如下目录结构
修改主工程的pom.xml 和 eureka_server 的pom.xml 文件
主工程的pom.xml
eureka_server 模块 pom.xml
主工程启动类加入注解@EnableEurekaServer
@SpringBootApplication
@EnableEurekaServer public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
配置eureka_server项目下的application.properties
到此,eureka_server 服务已经配置完成,现在我们启动项目 访问 http://localhost:8666 端口
四.创建服务提供者模块
当服务提供者向server注册时,它会提供一些元数据,例如主机和端口,URL,主页等。Eureka server 从每个client实例接收心跳消息。 如果心跳超时,则通常将该实例从注册server中删除。
创建步骤类似eureka_server模块,依赖不一样,如下图
创建完成修改项目下的pom.xml
通过注解@EnableEurekaClient 表明自己是一个eureka client。
@SpringBootApplication
@EnableEurekaClientpublic class EurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args);
}
}
配置服务提供者的application.properties
为了简单的演示效果,我在程序入口在加入一个Restful接口
@SpringBootApplication
@EnableEurekaClient@RestControllerpublic class EurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args);
}
@Value("${server.port}")Stringport;
@RequestMapping("/hello")
public String home(@RequestParam(value ="name", defaultValue ="gdl") String name) {
return "hello: " + name +" ,from port:" +port;
}
}
启动服务,在启动服务提供者。访问 http://localhost:8666
继续访问接口 http://localhost:8667/hello?name='wrold'
五.创建服务消费者模块
创建步骤和步骤四创建服务提供者一样。
然后修改项目下的pom.xml文件 和 服务提供者类似,修改下包名等即可。
修改 application.properties 文件
启动类加入注解 @EnableEurekaClient 并加入 Restful api 提供服务实例获取案例,这里实例后去方式采用Ribbon+RestTemplate模式,后面一章会使用Feign。
现在我们在启动服务,启动服务提供者(如果二者已经启动请忽略),在启动服务消费者,访问 http://localhost:8666/ 如下
然后我们在访问服务消费者的接口 ,http://localhost:8668/hello?name=wrold
nice~,至此 SpringCloud Eureka服务发现与注册已经讲解完毕,下一章在服务消费者中集成Feign提供一个负载均衡的http客户端。
附源码地址:gitee.com/dolan/sclou…
并切换到f_eureka 分支!!!