最近项目使用到了 spring boot 与 spring cloud 搭建的微服务, 现在简单的记录一下怎么去管理这么微服务的技术, 简单的使用, 有新的见解会持续更新
spring cloud eureka :
一 : 定义 :
服务治理是微服务架构最核心基础的模块, 用来实现各个微服务实例的自动化注册和发现. 简单的说就是一个注册中心, 获取服务提供者的服务, 向消费者提供服务
二 : 服务注册 :
在服务治理框架中, 通常都会构建一个注册中心, 每个服务单元向注册中心登记自己提供的服务, 包括服务的主机与端口号, 服务版本号, 通讯协议等一些附加信息. 注册中心按照服务名分类组织服务清单, 同时还需要以心跳检测的方式去监测清单中的服务是否可用, 若不可用需要从服务清单中剔除, 以达到排除故障服务的效果.
三 : 服务发现 :
在服务治理框架下, 服务间的调用不再通过指定具体的实例地址来实现, 而是通过服务名发起请求调用实现. 服务调用方通过服务名从服务注册中心的服务清单中获取服务实例的列表清单, 通过指定的负载均衡策略取出一个服务实例位置来进行服务调用.
四 : 项目中的实际使用 :
1. 注册服务 :
1 : 项目描述
本项目是一个 spring boot 管理的微服务, 有多个子模块, 暂且称为 A - G , 多模块开发难免会从在模块与模块之间的接口调用, 本项目中就使用 spring cloud eureka 来管理这些服务的注册和调用 .
2 : spring boot pom.xml 配置
- <dependency>
- <groupId>
- org.springframework.cloud
- </groupId>
- <artifactId>
- spring-cloud-starter-netflix-eureka-client
- </artifactId>
- </dependency>
- <dependency>
- <groupId>
- org.springframework.cloud
- </groupId>
- <artifactId>
- spring-cloud-starter-netflix-eureka-server
- </artifactId>
- </dependency>
3 : service-eureka 模块配置
application.YAML 基础配置
3 : 模块服务的注册和调用 :
启动项使用 @EnableFeignClients 注解可以实现调用其他模块接口的功能 , 既可以在注册中心获取其他模块注册上的接口信息
模块启动项的注解 @EnableFeignClients
配置文件中的 service-url 指的是 service-eureka 的地址, 保证我们模块可以注册到 eureka 上
application.YAML 配置文件
4 : 启动 eureka
本项目使用的是 Jenkins 自动构建, 后面会写一篇 Jenkins 的使用
Jenkins 自动构建配置
5 : 启动其他模块, 注册到 eureka 上
eureka 上注册的服务
注意 : 有时候这里会出现 EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE. 提示, 这是在出现一个服务我们注册多次的提示语 , 这属于一种心跳检测 , 我们可以去强行关闭
在 eureka 的 YAML 文件上添加 eureka.server.enableSelfPreservation=false
2. 模块之间的服务调用 :
1 : 新建一个 rpc 接口信息类
使用注解 @FeignClient(value ="需要调用模块名")
接口信息 Client 类
client 类中的接口信息就是 value 值对应的模块在 eureka 上注册是服务 , 我们在使用的使用直接自动注入这个 client, 调用接口即可
来源: http://www.jianshu.com/p/ee00361b1286