快速搭建gateway并接入nacos,并使用nacos配置文件

前言:

        本文使用springboot版本2.3.7,springCloud:Hoxton.SR9,springCloudAlibaba:2.2.6.RELEASE,使用时候需要注意版本搭配,否则可能出现奇怪问题

搭建步骤

1、使用idea搭建一个空白项目gateway
2、POM引入下面依赖
 <properties>
        <java.version>11</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
        <spring-cloud.version>Hoxton.SR9</spring-cloud.version>
        <spring-cloud-alibaba.version>2.2.6.RELEASE</spring-cloud-alibaba.version>
    </properties>
    <dependencies>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter</artifactId>
        </dependency>

        <!--gateway网关-->
        <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>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!--nacos服务器注册发现-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <!--nacos配置中心-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>
        
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</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>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
3、启动本地nacos

        ncaos可以是windows本地的或者linux的都可以,我这里使用本地nacos,启动后访问loalhost:8848 目前是没有服务的

4、添加启动类注解和nacos注册以及配置信息

        gateway启动类添加 @EnableDiscoveryClient 注解,亲测不添加也可以

        配置nacos注册中心地址,application.yml添加如下内容:

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

     配置nacos配置中心,在bootstrap.yml中添加如下内容,如果没有这个文件也可以直接在上面application.yml中添加。

spring:
  application:
    name: gateway
  cloud:
    nacos:
      discovery:
        enabled: true
        service: ${spring.application.name}
      config:
        enabled: true
        encode: UTF-8
        file-extension: yml
 5、在nacos中配置gateway的内容,方便实时更新,内容如下:
spring:
  cloud:
    gateway:
      routes:
        - id: baidu
          uri: https://www.baidu.com
          predicates:
            - Path=/
        - id: user-service-login
          uri: lb://user-service
          predicates:
            - Path=/user-service/user/login
          filters:
            - StripPrefix=1
#            - PrefixPath=/
        - id: user-service-info
          uri: lb://user-service
          predicates:
            - Path=/user-service/user/info
          filters:
            - StripPrefix=1
            - Auth
6、启动相关,观察nacos服务列表是否有gateway注册成功

出现如上图说明启动注册成功,可以访问网关配置观察路由配置是否成功

### 使用 Alibaba 技术栈搭建 Java 微服务架构的最佳实践 #### 1. 架构概述 构建基于Java的微服务应用时,采用Alibaba提供的技术组件可以极大提升开发效率和服务质量。这些组件覆盖了从基础设施到业务逻辑实现所需的各个方面。 #### 2. 基础设施层的选择 对于消息队列而言,推荐使用阿里云RabbitMQ来处理点对点的消息传递;而对于广播式的场景,则更适合选用阿里云Kafka[^1]。存储方面,在面对结构化数据需求时应优先考虑阿里云RDS MySQL作为关系型数据库解决方案;当遇到大规模分片的需求时可借助Sharding-JDBC增强MySQL的能力。针对非结构化的NoSQL需求,阿里云MongoDB是一个不错的选择。为了加速频繁访问的数据查询速度减轻主库压力,建议引入阿里云Redis做缓存机制。静态资源如图片视频等内容则可以通过阿里云OSS对象存储来进行管理。此外,短信通知功能可通过集成阿里云短信服务平台快速实施。网络层面要保障高可用性和高性能,可以选择阿里云SLB或Nginx来做负载均衡器部署。定时调度任务可以用XXL-Job或者Elastic-Job这类分布式作业框架完成自动化运维工作流的设计与执行。日志收集分析环节应当利用ELK这套开源工具链配合自定义脚本达成集中式管理和实时监控的目的。最后,在持久层操作上Mybatis Plus提供了简洁易用且高效的API接口封装方式值得采纳。 #### 3. 网关设置 鉴于Spring Cloud Gateway内部集成了Netty这一轻量级HTTP服务器的事实,不建议再额外依赖Tomcat这样的重量级容器运行环境。通过创建专门用于路由转发请求至下游各个独立子系统的网关微服务实例,能够有效简化整体拓扑结构的同时也便于后续维护升级动作开展。 #### 4. 配置中心接入 考虑到实际生产环境中往往存在多个不同版本的应用程序共存的情况,这就要求有一个统一而灵活的配置管理系统支持动态调整参数设定而不影响正常运转流程。此时就可以依靠Nacos所提供的命名空间隔离特性以及强大的注册发现能力轻松解决上述难题。具体来说就是在项目的`bootstrap.yaml`文件里指定好连接目标Nacos集群的信息之后就能自动获取最新的全局变量值了。 ```yaml spring: application: name: demo-service profiles: active: dev cloud: nacos: server-addr: localhost:8848 config: file-extension: yaml ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值