微服务虽然可以将我们的开发单元拆分的更为细致,有效降低了开发难度,但是他所引出的各种问题如果处理不当会成为实施过程中的不稳定因素。甚至掩盖掉原本实施微服务带来的优势。所以再微服务的实施方案中,api网关服务的使用几乎成为了必要的选择。
下面着手搭建一个可用的api-gateway服务
构建springcloud-server-api-gateway服务
引入依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath />
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Edgware.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
创建入口文件
@SpringCloudApplication
@EnableZuulProxy
public class SpringCloudServerApiGatewayApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudServerApiGatewayApplication.class,args);
}
}
创建配置文件
server:
port: 8004
spring:
application:
name: springcloud-server-api-gateway
eureka:
client:
service-url:
defaultZone: http://peer1:8080/eureka/
zuul:
routes:
api-a:
path: /api-a/**
serviceId: springcloud-consumer-ribbon
api-b:
path: /api-b/**
serviceId: springcloud-consumer-feign
启动项目
1.启动服务注册中心集群(springcloud-server-eureka)
2.启动服务提供者(springcloud-producer-rest)
3.启动服务消费者(springcloud-consumer-ribbon)
4.启动服务消费者(springcloud-consumer-feign)
5.启动网关服务(springcloud-server-api-gateway)
启动完服务之后的服务注册中心如下图
分别调用
http://localhost:8004/api-b/api/rest/getMessage?token=sss
http://localhost:8004/api-b/api/rest/getMessage?token=sss
服务,结果分别如下:
源码
springcloud-server-api-gateway
历史文章
springcloud实战之1 技术选型:dubbo还是springcloud
springcloud实战之2 服务注册与发现(eureka实现)
springcloud实战之3 高可用服务注册中心(eureka集群)
springcloud实战之8 断路器-仪表盘-单例监控(Hystrix)