Gateway结合Nacos使用!!!

news2024/12/23 18:59:14

一、本地结合使用

1. 引入依赖

<dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2. bootstarp.yml配置文件

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

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配置

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注解

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

public class GatewayApp {

}

6. 验证

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

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

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

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多个国家和地区的企业、开发者和政府机构提供云计算基础服务及解决方案。阿里云云计算、安全、大数据、人工智能、企业应用、物联网等云计算服务。icon-default.png?t=N7T8https://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)发送消息获取镜像地址和镜像名称,通过钉钉发送信息

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中

 

 发布多个:

 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文件进行挂载:

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;
    #}
}

挂载:

docker run -d --name=nginx01 -v /opt/nginx/default.conf:/etc/nginx/conf.d/default.conf  -p 3000:80 nginx

6、测试

三、 如何做负载均衡

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1631429.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 0基础_变现_38岁_day 15(匿名函数)

匿名函数&#xff1a; 不用定义函数名&#xff0c;无需使用def关键字&#xff0c;使用lambda将函数写成一行&#xff1b;#使用匿名函数定义一个两个数字相加的函数add lambda x,y : xy #使用变量接收匿名函数的内容&#xff0c;且变量名作为调用函数的变量名&#xff1…

Linux软件包管理器——yum

文章目录 1.什么是软件包1.1安装与删除命令1.2注意事项1.3查看软件包1.3.1注意事项&#xff1a; 2.关于rzsz3.有趣的Linux下的指令 -sl 1.什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一…

Django之搭配内网穿透

一&#xff0c;安装coplar 二&#xff0c;开启8087的内网穿透 三&#xff0c;setting.py中加入如下配置&#xff1a; ALLOWED_HOSTS [*]CSRF_TRUSTED_ORIGINS ["https://localhost:8087", "http://localhost:8087"]四&#xff0c;启动项目 五&#xff…

rust疑难杂症解决

rust疑难杂症解决 边碰到边记录&#xff0c;后续可能会逐步增加&#xff0c;备查 cargo build时碰到 Blocking waiting for file lock on package cache 原因是Cargo 无法获取对包缓存的文件锁&#xff0c; 有时vscode中项目比较多&#xff0c;如果其中某些库应用有问题&…

Spring快速入门!(超详细)——工厂模式

GOF之工厂模式 设计模式&#xff1a;一种可以被重复利用的解决方案。GoF&#xff08;Gang of Four&#xff09;&#xff0c;中文名——四人组。《Design Patterns: Elements of Reusable Object-Oriented Software》&#xff08;即《设计模式》一书&#xff09;&#xff0c;19…

红米A2/A2+/POCO C51手机秒解BL+快速获取root权限+解谷歌锁刷机救砖教程

红米A2/A2/POCO C51手机是目前小米公司针对于国外用户的1个独立的品牌&#xff0c;或者和国内的红米手机都非常相似&#xff0c;几款手机由于硬件非常接近&#xff0c;我们这里将其放在一起和大家介绍而从他们的代号中我们可以得知&#xff0c;目前A2/POCO的代号为water&#x…

Ubuntu22.04安装freecad、ODAFileConverter

一、背景 作为程序界的萌新&#xff0c;不只写代码&#xff0c;还需要临危受命看看CAD图。 手上的一份CAD图是DWG格式的&#xff0c;先得找款看DWG格式文件的软件&#xff0c;很快找到了“CAD迷你看图”&#xff0c;这款软件直接傻瓜式安装&#xff0c;不是本文重点。 本文重…

RejectedExecutionHandler 以及线程池的自行实现

RejectedExecutionHandler handler 拒绝方式/拒绝策略(线程池考察的重点) 我们知道,线程池有一个阻塞队列,当阻塞队列满了之后,继续添加任务,我们该如何去应对? Java系统的四个处理方式 ThreadPoolExecutor.AbortPolicy 直接抛出异常,这样做的话,整个线程池就不干活了 T…

【Vue】组件化编程

定义 实现应用中局部功能代码和资源的集合 为什么要用组件化编程? 传统方式编写:依赖关系混乱,不好维护,且代码复用率不高 模块化编写:只关注解决js,复用js,简化js的编写与效率 组件方式编写:好维护、复用率更高、提高运行效率 在组件出现之前,我们开发基本都是用htm…

七、OSPF特殊区域及其特性

目录 OSPF区域分类 hello报文中option字段 1.末节区域&#xff08;Stub区域&#xff09; 2.完全末节区域&#xff08;Toally Stub区域&#xff09; 3.七类LSA 4.非完全末节区域&#xff08;NSSA区域&#xff09; 5.完全非完全末节区域&#xff08;Toally NSSA区域&#…

Android 11 bindService 流程分析

我们可以使用bindService来跨进程通信&#xff0c;其使用方法如下 Intent intent new Intent("xxx"); intent.setPackage("xxx"); boolean result bindService(intent,new ServiceConn(),BIND_AUTO_CREATE);private class ServiceConn implements Servi…

Django初步了解

目录 一、什么是Django 二、Django的设计模式 三、涉及的英文缩写及其含义 四、安装&#xff08;官方教程&#xff09; 一、什么是Django Django是一个Python Web框架&#xff0c;可以快速开发网站&#xff0c;提供一站式的解决方案&#xff0c;包括缓存、数据库ORM、后台…

windows如何安装MySQL(详)

MySQL在Windows上的安装和配置 官网&#xff1a;www.mysql.com 下载地址&#xff1a;MySQL :: Download MySQL Community Server (Archived Versions) window系统 安装包&#xff08;Windows (x86, 64-bit), MSI Installer&#xff09; 压缩包&#xff08;Windows (x86, 64…

【车载开发系列】UDS诊断时间参数说明

【车载开发系列】UDS诊断时间参数说明 一. 应用层诊断时间参数 1&#xff09;P2 CAN_Client 诊断仪成功发送诊断报文请求之后到收到 ECU回复诊断响应的超时时间间隔 2&#xff09;P2 CAN_Server ECU 接收到诊断请求之后到开始发送诊断报文的时间间隔&#xff0c;一般默认最…

特征的前期融合与后期融合在召回、粗排、精排应用

前期融合&#xff1a;先对所有特征做concat&#xff0c;再输入DNN&#xff0c;一般常见于精排模型 特点&#xff1a;线上推理代价大&#xff0c;若有n个候选item需要做n次模型计算 后期融合&#xff1a;把用户和物品特征分别输入不同的神经网络&#xff0c;不对用户和物品做融…

js获取某月往前推一年或半年的年月数组

前言 需求&#xff1a;需要显示某月份往前推一年或者半年的费用情况&#xff0c;显示到柱形图上&#xff0c;后台接口只返回有数据的年份&#xff0c;这就需要前端拿全部月份数组去比对并显示。 开始 上代码&#xff1a; // date:选择的月份,比如:2024-04,//n:半年或者1年,…

函数递归与迭代

目录 1.递归 1.1递归的思想 1.2递归的限制条件 2.递归与迭代 1.递归 函数递归是什么&#xff1f; 递归是学习C语⾔函数绕不开的⼀个话题&#xff0c;那什么是递归呢? 递归其实是⼀种解决问题的⽅法&#xff0c;在C语⾔中&#xff0c;递归就是函数⾃⼰调⽤⾃⼰。 写⼀个史…

引入高德地图

1、配置 试试keytool 有没有反应 就算java -version没问题也一定是你没配path路径 在系统中配到bin就行了 2、获取密钥 网上真的坑太多了还有有chat问了一下 keytool -v -list -keystore "C:\Users\xxxx\.android\debug.keystore"执行这个你看你的 3、去高德地…

Office疑难杂症-Word页码重复无法修改

在现代办公环境中&#xff0c;Microsoft Office 套件扮演着不可或缺的角色&#xff0c;尤其是 Word 文档处理软件&#xff0c;在日常生活和工作中的应用广泛。然而&#xff0c;即使是这样成熟的软件&#xff0c;也不免有一些令人头疼的技术问题。本文将详细介绍如何解决Word中页…

【Python】常用数据结构

1、熟悉字典和列表 2、使用条件判断语句 3、list列表中计算 1、从键盘输人一个正整数列表,以-1结束,分别计算列表中奇数和偶数的和。 &#xff08;1&#xff09;源代码&#xff1a; # 初始化奇数和偶数的和为0 odd_sum 0 even_sum 0 #输入 while True:num int(input(&qu…