SpringCloud (GreenwichR2) 第一章 Eureka 服务注册与调用 附源码

464 阅读3分钟

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 分支!!!