做音乐网站需要版权么,物流网站前端模板,清远住房和城乡建设部网站,餐厅设计公司餐厅设计API 网关是系统的唯一入口#xff0c;调用任何服务的请求都需要经过网关层#xff0c;最终才可能到达目标服务#xff0c;既然是必经之路#xff0c;那我们可以在网关层进行一些通用的操作#xff0c;如#xff1a;认证、鉴权、限流、智能路由、缓存、日志、监控、超时、… API 网关是系统的唯一入口调用任何服务的请求都需要经过网关层最终才可能到达目标服务既然是必经之路那我们可以在网关层进行一些通用的操作如认证、鉴权、限流、智能路由、缓存、日志、监控、超时、熔断、重试等等这样既使整个框架条理清晰也让开发者更多注重功能的逻辑实现。常见的 API 网关项目有Kong、Tyk、Netflix zuul、Ocelot 等。在 Spring Cloud 中Zuul 是其核心组件下面将介绍 .NET Core 中通过 Zuul 来进行统一 API 调用。搭建 Zuul ServerEureka Server 的搭建请参考 .NET Core Spring Cloud服务注册与发现在 IntelliJ IDEA 中新建项目选 Spring Initializr 完成项目创建在 pom.xml 添加 zuul 和 eureka-client 的依赖我们将会把 Zuul Server 注册到 Eureka ServerdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-zuul/artifactId
/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-client/artifactId
/dependency
在启动类上添加 EnableZuulProxy 注解EnableZuulProxy
SpringBootApplication
public class EurekaServiceApplication {public static void main(String[] args) {SpringApplication.run(EurekaServiceApplication.class, args);}
}
修改 application.yml 配置文件集群模式通过一个类似 gateway.xxx.com 的域名指向多个 Zuul Server 实例即可spring:application:name: zuul-serviceserver:port: 5555eureka:instance:hostname: server1# 超过这个时间没收到心跳就剔除这个服务这个配置一般为服务刷新时间配置的三倍默认90slease-expiration-duration-in-seconds: 15# 服务刷新时间默认30slease-renewal-interval-in-seconds: 5client:service-url:defaultZone: http://server1:8001/eureka/,http://server2:8002/eureka/,http://server3:8003/eureka/
启动服务访问http://server1:8001/请确保 Eureka Server 已启动可以发现 Zuul Server 已在 5555 端口启动创建 .NET Core 服务这里直接基于文章 .NET Core Spring Cloud服务注册与发现 中的测试项目修改 .NET Core 客户端服务的配置文件 services:base-service:urlservices: {base-service: {url: http://server1:5555/base-service/ // 原来 http://base-service/}
}
因为我们的 Zuul Server 是启动在 server1 的 5555 端口通过 Zuul 网关调用服务的路由规则是 http://server1:5555/ {Application 小写}而基础服务的 Application名称为 BASE-SERVICE所以 url 设置为 http://server1:5555/base-service/测试访问 base-service通过网关的路由地址 http://server1:5555/base-service/ 访问 api/values 接口多次请求可测试负载均衡效果访问 client-service通过网关的路由地址 http://server1:5555/client-service/ 访问 api/values 接口而配置文件中的 base-service 设置的也是网关地址所以实际在调用 base-service 也是通过网关