SpringCloud-API网关

SpringCloud文章系列

  1. SpringCloud
  2. SpringCloud-注册中心
  3. SpringCloud-配置中心
  4. SpringCloud-链路跟踪
  5. SpringCloud-消息总线
  6. 【当前文章】SpringCloud-API网关
  7. SpringCloud-异步消息
  8. SpringCloud-同步调用
  9. SpringCloud-断路降级
  10. SpringCloud-监控管理
  11. SpringCloud-番外篇-临时任务
  12. SpringCloud-番外篇-文档生成
  13. SpringCloud-番外篇-源码解析

接入说明

  1. 目前采用最新的1.xRelease版本:1.5.15.RELEASE
  2. SpringCloud项目可以在start.spring.io下载,不过更方便的应该是通过idea新建项目,建立Spring Initializr项目
  3. 我一般习惯将具体实现服务用具体的服务名,而公共组件用service-xxx来命名,当然还有一些比较固定名字的公共组件
  4. 基于配置中心,请先按照配置中心章节,配置公共配置
  5. 依赖链路追踪章节

API网关

1. 新建项目

新建artifactId为api-gateway的服务

2. 导入依赖

依赖说明

  1. actuator用于暴露监控的接口
  2. eureka是Eureka客户端,注册到注册中心
  3. config是Config客户端,从配置中心拉取配置
  4. sleuth + zipkin是链路追踪客户端,用于监控链路调用
  5. bus-kafka是基于kafka的bus消息总线客户端,用于接收消息总线异步事件
  6. zuul是zuul网关的依赖
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<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-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-kafka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>

3. 编写启动类

打开ApiGatewayApplication,在class上加入@EnableZuulProxy注解

4. 修改配置

1
2
3
4
5
6
7
server.port=9998
spring.application.name=api-gateway

#private
feign.httpclient.connection-timeout=3000

#public 注册中心+配置中心+链路追踪+BUSkafka

feign.httpclient.connection-timeout:API网关依赖Fegion客户端,而API调用时可能超时,一般远程调用的时间需要调整下

5. 启动main

6. 验证

访问 http://localhost:8761/ 看到api-gateway已经注册了一台
访问 http://localhost:9998/应用名/接口名 即可验证,被代理的接口是否调用成功

API网关集群

只要配置2个端口区分开即可,如9998,9999

客户端使用

启动代理后就可以通过代理访问请求了,所以无客户端

疑问

其他API网关

目前还有SpringCLoud亲儿子,基于SpringBoot2的SpringCloud API Gateway

快速接入

略…

------ 本文结束 ------

版权声明

dawell's Notes by Dawell is licensed under a Creative Commons BY-NC-ND 4.0 International License.
Dawell创作并维护的dawell's Notes博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证
本文首发于dawell's Notes 博客( http://dawell.cc ),版权所有,侵权必究。

坚持原创技术分享,您的支持将鼓励我继续创作!