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

梧州网站推广郑州模板网站建设

梧州网站推广,郑州模板网站建设,c网站制作,页面设计读书笔记1500在使用微服务架构时,往往我们需要搭建一个网关服务,作为各个微服务的统一入口。Spring gateway作为网关服务的后起之秀,受到各大企业的欢迎。下面介绍下网关服务Spring gateway的搭建。 引入依赖,这一步比较重要,也需要…

在使用微服务架构时,往往我们需要搭建一个网关服务,作为各个微服务的统一入口。Spring gateway作为网关服务的后起之秀,受到各大企业的欢迎。下面介绍下网关服务Spring gateway的搭建。

  1. 引入依赖,这一步比较重要,也需要小心,要不然会因为jar问题导致服务无法正常启动,下面要贴出网关服务pom文件核心代码:

    <properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.2.1.RELEASE</spring-boot.version><spring-cloud.version>Hoxton.RELEASE</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--  服务注册/发现--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--  配置中心来做配置管理--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>
<!--        <dependency>-->
<!--            <groupId>org.springframework</groupId>-->
<!--            <artifactId>spring-webmvc</artifactId>-->
<!--        </dependency>-->
<!--        <dependency>-->
<!--            <groupId>javax.servlet</groupId>-->
<!--            <artifactId>javax.servlet-api</artifactId>-->
<!--        </dependency>--><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope><!--provided 打包时不用带上,tomcat已包含--></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.1.RELEASE</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

在这一步需要注意的地方有,1,不要引入 spring-webmvc依赖,spring-cloud-starter-gateway集成了webflux,具备web方便的功能了,因此不要引入spring-webmvc;2.要引入servlet-api依赖,不要引入javax.servlet-api依赖;3.注意jdk,springboot,springcloud的版本对应关系,版本对应不上,启动也会报错。

2.跨域问题的统一处理

使用单一服务,跨域服务放在服务内,使用微服务架构后,跨域交由网关统一处理,各个微服务不必再处理了,如果网关配置了跨域,各个微服务还保留跨域,运行时也会报错,下面贴出网关中跨域处理:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;@Configuration
public class CorsConfiguration {@Beanpublic CorsWebFilter corsWebFilter() {UrlBasedCorsConfigurationSource source =  new UrlBasedCorsConfigurationSource();CorsConfiguration corsConfiguration = new CorsConfiguration();corsConfiguration.addAllowedHeader("*");corsConfiguration.addAllowedMethod("*");corsConfiguration.addAllowedOrigin("*");corsConfiguration.setAllowCredentials(true);source.registerCorsConfiguration("/**",corsConfiguration);return new CorsWebFilter(source);}
}

3.路由的配置,gateway主要通过配置路由,断言,过滤器进行URL识别和服务分发,以下是gateway三大核心:

Route路由:路由是构建网关的基本模块,它由ID、目标URI、一系列的断言和过滤器组成,如果断言为true则匹配该路由。对应DispatcherHandler分发请求和RoutePredicate-HandlerMapping路由查找
Predicate(断言):参考的是Java8的java.util.function.Predicate。开发人员可以匹配HTTP请求中的所有内容(例如请求头或请求参数),如果请求与断言相匹配则进行路由。即匹配Predicate成功,才跳转到对应的目标URI
Filter过滤:指的是Spring框架中GatewayFilter的实例,使用过滤器,可以在请求被路由前或者之后对请求进行修改。对应FilteringWebHandler过滤器链,代理服务处理。

配置在网关服务的application.yml文件中,下面贴出示例:

server:
  port: 8088
spring:
  application:
    name: mall-gateway 
  main:
    web-application-type: reactive

  cloud:
    gateway:
      routes:
        - id: mall_web_route
          uri: lb://mall
          predicates:
            - Path=/system/**,/tool/**

        - id: mall_app_route
          uri: lb://mall
          predicates:
            - Path=/api/**

        - id: genarator_web_route
          uri: lb://genarator
          predicates:
            - Path=/tool/**


        - id: mall-bbs_web_route
          uri: lb://mall-bbs
          predicates:
            - Path=/admin/**,/sys/**


        - id: mall-bbs_app_route
          uri: lb://mall-bbs
          predicates:
            - Path=/app/**,/resource/**

      discovery:
        locator:
          enabled: true

这里有一点需要注意的是,不同服务之意path开头不要相同,相同的话,gateway会交由第一个服务进行处理,此时就会出现诸如鉴权失败等问题。举个例子,服务1和服务2拥有独立的后台管理系统,服务1路径以admin开头,服务2也以admin开头,网关中服务1和服务2 path均配置了/admin/**开头,当请求服务2的/admin/**开头的接口时,由于存在同样路径开头的配置,gateway会路由到服务1交由服务1进行处理。此时就得不到预期的结果,需要将其中一个路径更换为不同的地址。

4.配置启动类,注意排除数据源

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@EnableDiscoveryClient
public class GatewayApplication {public static void main(String[] args) {SpringApplication.run(GatewayApplication.class, args);}
}

经过以上4个主要步骤就完成Spring gateway微服务的搭建。 

http://www.hkea.cn/news/875174/

相关文章:

  • 企业邮箱腾讯杭州seo按天计费
  • 政府网站建设先进个人事迹互动营销
  • 网站建设之织梦模板做国外网站
  • 小程序电商模板seo关键词排名优化品牌
  • 泉州网站优化排名百度关键字优化价格
  • 上海网站建设好处win优化大师官网
  • 适合毕设做的简单网站初学seo网站推广需要怎么做
  • 想把书放到二手网站如何做深圳seo关键词优化
  • 合肥网站优化排名推广合理使用说明
  • 如何网站专题策划互联网推广是什么
  • 用hadoop做网站日志分析推广工作的流程及内容
  • 凡科做网站技巧站长之家域名信息查询
  • 网站建设国际深圳网络营销课程ppt
  • 网站开发人员需要具备的能力电脑培训班多少费用
  • discuz集成wordpressseo的概念是什么
  • 子网站如何做网站营销方案模板
  • dreamweaver做的网站电商培训班一般多少钱
  • 国外做科研的网站东莞网站设计公司排名
  • 亿唐网不做网站做品牌原因seo网站诊断报告
  • 宝鸡网站建设东东怎么推广软件让别人下载
  • 21dove谁做的的网站百度一下首页设为主页
  • 猪八戒网站建设推广平台排名前十名
  • 广西建设质监站官方网站站长工具seo综合查询可以访问
  • 通用搭建网站教程优化营商环境的意义
  • 网站中加入地图怎样优化网站排名
  • 网站如何被搜索引擎收录地推推广平台
  • 池州做网站公司游戏搜索风云榜
  • 东丽区做网站网站查询平台
  • wordpress什么主题好用seo优化范畴
  • 局域网端口映射做网站西安竞价托管代运营