Gateway结合Nacos使用!!!

一、本地结合使用

1. 引入依赖

XML 复制代码
<dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2. bootstarp.yml配置文件

如果Nacos中配置使用yaml格式,一定要在这里配置file-extension:yaml

bash 复制代码
spring:
  application:
    name: gateway-app
  cloud:
    nacos:
      config:
        server-addr: 192.168.11.91:8848
        file-extension: yaml
      discovery:
        server-addr: 192.168.11.91:8848

4.Nacos配置

bash 复制代码
spring:
  cloud:
    gateway:
      routes:
        - id: user-service-app
#跳转的路径
          uri: lb://user-service-app
#配置断言,你访问路径时必须携带nacos-a这一目录
          predicates:
            - Path=/user-service-app/**
#过滤器,StripPrefix是移除前缀nacos-a;LogTime自定义的局部过滤器
          filters:
            - StripPrefix=1
        - id: order-service-app
          #跳转的路径
          uri: lb://order-service-app
          #配置断言,你访问路径时必须携带nacos-a这一目录
          predicates:
            - Path=/order-service-app/**
          #过滤器,StripPrefix是移除前缀nacos-a;LogTime自定义的局部过滤器
          filters:
            - StripPrefix=1
logging:
  level:
    root: error
    com.by: debug

5. 启动类加@EnableDiscoveryClient注解

java 复制代码
@SpringBootApplication
@EnableDiscoveryClient //原则上启动类需要添加这个注解,Nacos做了一个优化,可以不用这个注解
//1.应用启动后,会将自己的基本信息(如服务名、IP 地址、端口等)注册到服务注册中心。 - 服务注册
//2.可以从服务注册中心获取到所有服务的实例列表,从而实现动态寻址和负载均衡。- 服务发现

public class GatewayApp {

}

6. 验证

二、将应用发送到docker进行部署使用

1、将你的项目进行打包,并编写dockerfile文件

dockerfile文件:你只需要改变打包的架包的名称即可

bash 复制代码
FROM openjdk:8
WORKDIR /opt/
COPY target/gateway-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT [ "java","-jar","app.jar" ]

2、第一步先将你的项目发推送到gitee上

3、建立流水线

前提:你需要建立一个镜像仓库:

阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台欢迎登录阿里云,全球领先的云计算及人工智能科技公司,阿里云为200多个国家和地区的企业、开发者和政府机构提供云计算基础服务及解决方案。阿里云云计算、安全、大数据、人工智能、企业应用、物联网等云计算服务。https://cr.console.aliyun.com/repository/cn-beijing/wsm-app/order-service-app/details

可以参考这个博客:或者我接下来写的

CICD流水线(发布后端代码)!!!_后端cicd配置-CSDN博客文章浏览阅读259次。1、Docker部署。_后端cicd配置https://blog.csdn.net/qq_64847107/article/details/136950302?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171431131516800211526556%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=171431131516800211526556&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-136950302-null-null.nonecase&utm_term=cicd&spm=1018.2226.3001.4450

1)进入到推送到gitee的源码中,建立流水线
2)java构建镜像
3)发送消息获取镜像地址和镜像名称,通过钉钉发送信息
bash 复制代码
curl -X POST \
     'https://oapi.dingtalk.com/robot/send?access_token=你的key' \
     -H 'Content-Type: application/json' \
     -d '{"msgtype":"text","text":{"content":"镜像:'${image}'"}}'

4、发布到docker中

发布多个:

bash 复制代码
 docker run -d --name=gateway01 -p 3111:8080 registry.cn-beijing.aliyuncs.com/wsm-app/gateway-app:2024-04-28-20-35-35


docker run -d --name=gateway02 -p 3222:8080 registry.cn-beijing.aliyuncs.com/wsm-app/gateway-app:2024-04-28-20-35-35

5、配置nginx,调用服务

将default.conf文件进行挂载:

bash 复制代码
upstream gateway-app{
    server 172.17.0.4:8080;
    server 172.17.0.3:8080;
}
server {
    listen 80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
       add_header 'Access-Control-Allow-Origin' '*';
       proxy_pass http://gateway-app ;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

挂载:

bash 复制代码
docker run -d --name=nginx01 -v /opt/nginx/default.conf:/etc/nginx/conf.d/default.conf  -p 3000:80 nginx

6、测试

三、 如何做负载均衡

思路:将你的某个应用通过CICD发布后,在本地起一个应用,然后在docker中启一个应用,就可以做负载均衡了。

1、CICD发布

通过CICD发布就不再写了,和上边的基本一致,只需要修改dockerfile文件,和一些发布的一些路径。

2、发布到docker中

通过docker下载镜像和上边的很类似,可以参考,拉去镜像时需要注意端口。

3、本地idea启动一个应用,在docker中启动一个,通过断点的方式进行轮询调用,你就会发现时负载均衡的。

具体可参考:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

相关推荐
王解34 分钟前
webpack loader全解析,从入门到精通(10)
前端·webpack·node.js
我不当帕鲁谁当帕鲁39 分钟前
arcgis for js实现FeatureLayer图层弹窗展示所有field字段
前端·javascript·arcgis
那一抹阳光多灿烂43 分钟前
工程化实战内功修炼测试题
前端·javascript
放逐者-保持本心,方可放逐2 小时前
微信小程序=》基础=》常见问题=》性能总结
前端·微信小程序·小程序·前端框架
码上一元2 小时前
SpringBoot自动装配原理解析
java·spring boot·后端
计算机-秋大田2 小时前
基于微信小程序的养老院管理系统的设计与实现,LW+源码+讲解
java·spring boot·微信小程序·小程序·vue
魔道不误砍柴功4 小时前
简单叙述 Spring Boot 启动过程
java·数据库·spring boot
失落的香蕉4 小时前
C语言串讲-2之指针和结构体
java·c语言·开发语言
毋若成4 小时前
前端三大组件之CSS,三大选择器,游戏网页仿写
前端·css
枫叶_v4 小时前
【SpringBoot】22 Txt、Csv文件的读取和写入
java·spring boot·后端