当前位置: 首页 > news >正文

学校门户网站360推广客服电话是多少

学校门户网站,360推广客服电话是多少,深圳企业网站建设优惠,做教育网站1. 微服务为什么需要 API 网关? 1.1. 在微服务架构中,通常一个系统会被拆分为多个微服务,面对多个微服务客户端应该如何去调用呢? 如果根据每个微服务的地址发起调用,存在如下问题: 客户端多次请求不同的…

1. 微服务为什么需要 API 网关?

1.1. 在微服务架构中,通常一个系统会被拆分为多个微服务,面对多个微服务客户端应该如何去调用呢?

如果根据每个微服务的地址发起调用,存在如下问题:

  • 客户端多次请求不同的微服务,会增加客户端代码和配置的复杂性,维护成本比较高;
  • 认证复杂,每个微服务可能存在不同的认证方式,客户端去调用,要去适配不同的认证;
  • 存在跨域的请求,调用链有一定的相对复杂性(防火墙、浏览器不友好的协议);
  • 难以重构,随着代码的迭代,可能需要重新划分微服务。

1.2. 为了解决以上问题,微服务引入了 API 网关的概念

API 网关为微服务架构的系统提供简单、有效且统一的 API 路由管理,作为系统的统一入口,提供内部服务的路由中转,给客户端提供统一的服务,可以实现一些和业务没有耦合的公共逻辑,主要功能包括:认证、鉴权、路由转发、安全策略、防刷、流量控制、监控日志等。

2. Spring Cloud Gateway 是什么?

官方文档:Spring Cloud Gateway :: Spring Cloud Gateway

Spring Cloud Gateway 是 Sprinig Cloud 官方推出的第二代网关框架,定位取代 Netflix Zuul。

Spring Cloud Gateway 旨在为微服务架构提供一种简单且有效的 API 路由的管理方式,并基于 Filter 的方式提供网关的基本功能,例如说安全认证、监控、限流等。

Spring Cloud Gateway 是有 WebFlux + Netty + Reactor 实现的响应式的 API 网关。它不能再传统的 Servlet 容器中工作,也不能构建成 war 包。

3. 微服务快速接入 Spring Cloud Gateway

3.1. 构建网关服务

3.1.1. 创建一个新的 module 模块 icoolkj-mall-gateway

  • pom.xml 文件中引入 Spring Cloud Gateway 网关依赖
<dependencies><!-- gateway网关 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!--nacos-discovery  注册中心依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- loadbalancer 负载均衡器依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-loadbalancer</artifactId></dependency></dependencies>

3.2. 微服务快速接入网关服务

3.2.1. 以订单服务为例

在网关服务配置 application.yml 文件

server:port: 18888spring:application:name: icoolkj-mall-gatewaycloud:nacos:discovery:server-addr: icoolkj-mall-nacos-server:8848gateway:# 设置路由:路由ID、路由到微服务的 uri、断言routes:- id: order_route # 路由ID,全局唯一,建议配置服务名uri: lb://icoolkj-mall-order # lb 整合负载均衡器 loadbalancerpredicates:- Path=/api/order/** # 断言,路径相匹配的进行路由

商品、库存、账户服务同上配置,网关服务的完整的 application.yml 配置如下:

server:port: 18888spring:application:name: icoolkj-mall-gatewaycloud:nacos:discovery:server-addr: icoolkj-mall-nacos-server:8848gateway:# 设置路由:路由ID、路由到微服务的 uri、断言routes:- id: order_route # 路由ID,全局唯一,建议配置服务名uri: lb://icoolkj-mall-order # lb 整合负载均衡器 loadbalancerpredicates:- Path=/api/order/** # 断言,路径相匹配的进行路由- id: product_route # 路由ID,全局唯一,建议配置服务名uri: lb://icoolkj-mall-product # lb 整合负载均衡器 loadbalancerpredicates:- Path=/api/product/** # 断言,路径相匹配的进行路由- id: inventory_route # 路由ID,全局唯一,建议配置服务名uri: lb://icoolkj-mall-inventory # lb 整合负载均衡器 loadbalancerpredicates:- Path=/api/inventory/** # 断言,路径相匹配的进行路由- id: account_route # 路由ID,全局唯一,建议配置服务名uri: lb://icoolkj-mall-account # lb 整合负载均衡器 loadbalancerpredicates:- Path=/api/account/** # 断言,路径相匹配的进行路由

优化:可以将 gateway 的配置移到 Nacos 配置中心

    1. 网关服务的 pom.xml 文件中引入 Nacos 配置中心依赖
<!-- nacos-config 配置中心依赖 -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
    1. Nacos 控制台创建 dataId 为 icoolkj-mall-gateway.yml,配置内容如下:
spring:cloud:gateway:# 设置路由:路由ID、路由到微服务的 uri、断言routes:- id: order_route # 路由ID,全局唯一,建议配置服务名uri: lb://icoolkj-mall-order # lb 整合负载均衡器 loadbalancerpredicates:- Path=/api/order/** # 断言,路径相匹配的进行路由- id: product_route # 路由ID,全局唯一,建议配置服务名uri: lb://icoolkj-mall-product # lb 整合负载均衡器 loadbalancerpredicates:- Path=/api/product/** # 断言,路径相匹配的进行路由- id: inventory_route # 路由ID,全局唯一,建议配置服务名uri: lb://icoolkj-mall-inventory # lb 整合负载均衡器 loadbalancerpredicates:- Path=/api/inventory/** # 断言,路径相匹配的进行路由- id: account_route # 路由ID,全局唯一,建议配置服务名uri: lb://icoolkj-mall-account # lb 整合负载均衡器 loadbalancerpredicates:- Path=/api/account/** # 断言,路径相匹配的进行路由

    1. 网关服务的 application.yml 调整引入 icoolkj-mall-gateway.yml 配置
server:port: 18888spring:application:name: icoolkj-mall-gatewaycloud:nacos:config:server-addr: icoolkj-mall-nacos-server:8848file-extension: yml   # 指定配置文件扩展名为ymlconfig:import:- optional:nacos:${spring.application.name}.yml- nacos:nacos-discovery.yml

3.3. 启动网关服务,测试

postman 中通过网关服务的 18888 端口下单,看看能否成功。

icoolkj-mall-forntend 前端服务 order.html 中访问后端服务地址都替换成 icoolkj-mall-gateway:18888,测试下单是否成功。

4. Gateway 跨域资源共享配置

官方文档:Spring Cloud Gateway

4.1. 通过 yml 配置的方式

spring:cloud:gateway:globalcors:cors-configurations:'[/**]':allowedOrigins: "*"allowedMethods:- GET- POST- DELETE- PUT- OPTIONallowedHeaders: '*'

4.2. 通过 java 配置的方式

@Configuration
public class CorsConfig {@Beanpublic CorsWebFilter corsFilter() {CorsConfiguration config = new CorsConfiguration();// 允许的前端地址config.addAllowedOrigin("http://localhost:88"); // 只允许特定的前端地址// 允许所有 HTTP 方法(包括 GET)config.addAllowedMethod("*");// 允许所有请求头config.addAllowedHeader("*");// 设置允许带有凭证(如 Cookies)config.setAllowCredentials(true);UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();source.registerCorsConfiguration("/**", config); // 全局匹配所有请求路径return new CorsWebFilter(source);}
}

4.3. 发现问题

通过通过以上配置,后台接口可以访问,但是还是提示跨域。解决方案去除微服务内部的注解 @CrossOrigin

  • 全局 CORS 配置放在网关服务中,这会确保跨域请求的集中管理,避免每个微服务都进行重复配置。
  • 微服务内部的 CORS 配置一般不需要,除非某些微服务的接口有特殊需求,可以通过 @CrossOrigin 注解进行单独配置。
  • 网关处理 CORS 后,微服务只需专注于业务逻辑,不必关注跨域问题,简化了微服务的开发和维护。

5. 小结

gateway 就是整个微服务架构的统一入口。

http://www.zhongyajixie.com/news/11515.html

相关文章:

  • 用discuz做交友网站网站制作开发
  • 农产品如何建设网站北京seo优化服务
  • 余姚住房和建设局网站域名大全查询
  • 网站开发w亿玛酷1专注竞价推广遇到恶意点击怎么办
  • 百度电商广告代运营郑州seo教程
  • pc网站做app京东如何制作网站赚钱
  • 出口网站有哪些临沧seo
  • 做网站运营话术百度权重怎么查询
  • 湖南网站搜索排名优化公司营销型网站的公司
  • 做公司网站需要多久百度商家
  • 学网页设计需要什么学历seo优化与品牌官网定制
  • 中国的网站为什么要备案长尾关键词是什么
  • 巩义做网站优化营销页面设计
  • 中文域名网站标识市场调研的方法有哪些
  • 网站开发要会英语吗重庆seo博客
  • 广州哪里有做网站推广免费推广网站大全集合
  • 做外贸的网站哪个好百度网站如何优化排名
  • 什么是手机网站建设网络营销经典失败案例
  • 简阳市市建设委员会网站优秀的软文
  • 做本地的分类信息网站南京seo域名
  • 计算机网站建设论文范文沪深300指数是什么意思
  • 医院网站怎么做厦门seo优化多少钱
  • 建个小型网站虚拟主机 vpsseo自学网视频教程
  • 网站空间 云端网络推广策划案
  • 烟台 网站设计网销怎么销售的
  • 重庆涪陵网站建设凡科建站客服电话
  • 简单的阿里云建设网站竞价点击软件工具
  • 做外贸网站咨询广东培训seo
  • 网站建设服务费怎么做会计分录品牌推广计划
  • 长沙做网站的平谷头条新闻