本文源码:GitHub·点这里 || GitEE·点这里
更新进度(共 6 节):
01:项目技术选型简介,架构图解说明
02:业务架构设计,系统分层管理
03:数据库选型,业务数据设计规划
04:中间件集成,公共服务管理
05:SpringCloud 基础组件应用设计
一、组件应用规划
1、注册中心
Eureka 组件是 Netflix 开发的,用于定位服务,基于 RESTFul 方式实现服务注册与发现。包括一个 EurekaServer 服务端(通常是指微服务中的注册中心)和 EurekaClient 客户端(通常指微服务中的业务服务)。Eureka 支持高可用的配置,当注册中心发现有故障的服务时,Eureka 就会转入自动保护模式,故障时不影响服务的发现和注册,当故障恢复正常时,注册中心的服务会进行状态同步,继续提供服务。
2、服务调用
Feign 组件是一个声明式的 WebService 客户端。在 Eureka 注册的服务中,可以使用 Feign 接口的形式来进行相关服务间的请求调用,并提供超时回退,快速熔断的相关特性。Feign 是一个便利的 RestFul 框架,简化调用,通过 ribbon 在注册服务器中找到服务实例,然后对请求进行服务分配,实现了负载均衡的效果,默认采用轮询算法。
3、服务网关
GateWay 网关,可以让所有客户端请求先通过微服务网关,跟网关进行交互,由网关进行各个微服务的请求转发,客户端 (前端) 对多服务架构无感知。降低客户端与微服务之间的交互耦合度;便于监控,可在网关中监控数据;在网关层统一处理认证,规划切面编程;也就是说与业务本身功能无关的公共逻辑可以在网关层统一封装实现,类似设计模式中的门面模式。
二、注册中心
1、服务端配置
eureka:
server:
enable-self-preservation: false
eviction-interval-timer-in-ms: 15000
instance:
prefer-ip-address: true
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://127.0.0.1:5001/eureka/
2、客户端配置
eureka:
instance:
prefer-ip-address: true
client:
service-url:
defaultZone: http://127.0.0.1:5001/eureka/
三、Feign 组件
1、Feign 接口
@FeignClient("MOPSZ-SOFT-ROCKET")
public interface UserSearchFeign {@GetMapping("/mq/user/search/sendBookSearch")
void sendBookSearch (@RequestParam("msgContent") String msgContent) ;
}
2、Feign 接口实现
@RestController
public class UserSearchController implements UserSearchFeign {
@Override
public void sendBookSearch(String msgContent) {}}
3、接口配置
该配置文件在实现 Feign 接口的项目中配置就好,也可针对特定方法配置。
feign:
hystrix:
enabled: true
client:
config:
feignName:
connectTimeout: 60000
readTimeout: 60000
4、Feign 接口调用
@Resource
private UserSearchFeign userSearchFeign ;
userSearchFeign.sendBookSearch("");
四、服务网关
1、网关组件配置
zuul:
# 前缀,可以用来做版本控制
prefix: /v1
# 禁用默认路由,执行配置的路由
ignored-services: "*"
routes:
# 配置 Token 服务
pro6601:
serviceId: mopsz-basis-token
path: /api/6601/**
# 配置 UserClient 服务
pro6102:
serviceId: mopsz-user-client
path: /api/6102/**
- 配置 FilterConfig 进行用户 Token 认证拦截;
- 配置 FallBackConfig 进行服务降级响应管理;
2、项目部署
在项目上线后,对外暴露一个网关服务端口,其他服务端口不对外暴露,所有的请求都必须通过网关拦截或者转发,这就是微服务提供服务的一种常见方式。
五、源代码地址
GitHub·地址
https://github.com/cicadasmile/husky-spring-cloud
GitEE·地址
https://gitee.com/cicadasmile/husky-spring-cloud