spring-cloud部署合集-项目架构说明(一)

一、说明

本文档说明,spring-cloud微服务部署,涉及两个spring-cloud项目,这里举例cloud-learn、cloud-platform、cloud-learn-nacos、cloud-platform-nacos。其中两个nacos都是单机启动。并且两个微服务的项目都是暂时使用jar包方式启动(也可以学习使用docker容器化启动,链接)

二、cloud-learn项目架构

spring-cloud部署合集-项目架构说明(一)_第1张图片

三cloud-platform项目架构

跟cloud-learn项目架构差不多,这里不做展示。

四、组网

这个网络架构图,说白了就是从客户端请求一个接口,涉及服务的交互过程,理解这里的话就是知道怎么在linux部署

spring-cloud部署合集-项目架构说明(一)_第2张图片

相信在行的人能看懂这个组网,这里使用到的技术:springcloud、nacos、redis、mysql、nginx

1、首先app发送请求,nginx会拦截请求,将请求转发到cloud-platform的网关gateway
2、cloud-platform的网关gateway会将请求拦截,进入鉴权(如果是配置了url白名单就不会鉴权),鉴权通过,会将请求转发到cloud-learn的网关。
3、cloud-learn的gateway接收到请求,根据外部客户端请求的url,重定向到内部服务的url(后续会贴出学习代码)
4、处理业务开始,可能涉及自身微服务调用,也涉及cloud-learn服务调用cloud-platform服务之间的调用。

五 配置说明
nginx配置
upstream cloud_platform_gateway {
  server 11.11.11.11:111;
}

location /cloudlearn{
    proxy_pass http://cloud_platform_gateway /cloudlearn;
    include ./proxy.conf;
  }

cloud-platform的gateway配置
spring:
  cache:
    type: redis
    redis:
    lettuce:
      pool:
        enabled: true
    password: 123@123、
    #集群模式
    cluster:
    #这里的ip是假的
      nodes: 11.12.1.1:6379,11.1.1.0:6379
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
          lowerCaseServiceId: true
      routes:
        # 管理服务
        - id: system
          filters: [StripPrefix=1]
          predicates: [Path=/system/platform/**]
          uri: lb://system

        # 订单服务,这里配置的是用于cloud-learn微服务调用cloud-platform的接口,gateway路由转发到对应的cloud-platform里面的内部微服务
        - id: order_platform
          filters: [StripPrefix=1]
          predicates: [Path=/order/platform/**]
          uri: lb://order
          
        # cloud-learn请求被nginx拦截转发的入口
        - id: learn_cloud
          filters: ['PlatAuthFilter'] #这个是具体鉴权的过滤器
          predicates: [Path=/cloudlearn/**]
          # token鉴权
          # cloud-learn的gateway的内网地址
          uri: http://12.12.12.12:12

cloud-learn的gateway配置
spring:
    redis:
    lettuce:
      pool:
        enabled: true
    password: 123@123、
    #集群模式
    cluster:
    #这里的ip是假的
      nodes: 11.12.1.1:6379,11.1.1.0:6379
  cache: {type: redis}
  cloud:
    gateway:
      discovery:
        locator: {enabled: true, lowerCaseServiceId: true}
      routes:
      #配置路由断言
      - filters: [StripPrefix=1]
        id: user
        predicates: [Path=/user/**]
        uri: lb://user
        #这里配置的是路径重写,意思是客户端的请求路径比如是/api/abc,然后在代码controller实际的路径是:/user/tempUrl
        #通过这里的配置,实现路径重写,达到客户端请求的路径是/api/abc,实际在服务里面是/user/tempUrl
      - filters: ['RewritePath=/api/abc,/user/tempUrl']
        id: /api/abc
        #断言:这里的配置意思是必须路径是匹配到/api/abc的才会被路由转发
        predicates: [Path=/api/abc]
        #这里是指user服务,意思是将上面的请求/user/tempUrl转发到user服务controller
        uri: lb://user/**

你可能感兴趣的:(spring,java,spring,cloud)