dubbo:dubbo+zookeeper整合nginx实现网关(四)

文章目录

  • 0. 引言
  • 1. nginx简介
  • 2. 集成nginx
    • 2.1 负载均衡实现
  • 3. 源码
  • 4. 总结

0. 引言

我们之前讲解过dubbo+zookeeper实现服务调用和注册中心,但是还缺乏一个统一的入口,即网关服务。dubbo+zookeeper的模式更加适合的网关组件为nginx,所以今天我们也专门讲解使用nginx来作为dubbo的网关

1. nginx简介

首先针对nginx的学习我们早在nginx专栏就已经从零说明过,如果对于该组件的基础使用还未掌握的,建议大家可以先学习下nginx专栏
Nginx快速上手专栏

在本期文章中重点涉及其中如下几篇内容
Nginx应用场景、安装、部署及设置开机自启(一)

负载均衡upstream配置详解(四)

nginx各类转发、代理配置详解|location、proxy_pass参数详解(五)

2. 集成nginx

2.1 负载均衡实现

1、首先我们演示的项目还是基于前几篇文章的项目,我们在order-server增加一个接口

    @Value("${server.port}")private Integer port;@GetMapping("getUser")public String getUser(){String userName = userService.getUserById(port);return userName + " getUser success";}

2、我们准备两个order-server,用于演示nginx的负载均衡转发

复制一份配置文件,文件名修改为application-8083.yaml,修改其中的端口为8083
在这里插入图片描述
3、idea中复制一份order-server的启动配置,重命名,然后在active profiles中书写8083(即application-xxx.yaml中的xxx)
在这里插入图片描述

在这里插入图片描述
4、启动两个order-server节点

5、在服务器上安装nginx服务,这里安装过程不再累述,参考上述nginx专栏文章

6、修改配置文件

vim /etc/nginx/conf.d/default.conf 

配置内容如下,可以看到定义了一个upstream,转发至两个order-server节点,如果要设置不同的负载均衡算法可以参考《负载均衡upstream配置详解(四》一文

注意定义的转发路径proxy_pass http://order_server/;,默认是有/的,表示绝对路径,匹配路径location中order-server会被消除

upstream order_server{server 192.168.244.1:8082;server 192.168.244.1:8083;
}server {listen       80;server_name  localhost;charset utf-8;location / {root   /data/dist;index  index.html index.htm;}location /order-server/ {proxy_pass http://order_server/; # 通过别名实现负载均衡转发proxy_set_header HOST $host; # 代理过程中添加host头部信息,防止通过ip访问时域名解析不到,不能被server_name解析到proxy_http_version 1.1; # 指定http协议版本proxy_connect_timeout 3s; # 连接后台服务器的超时时间proxy_read_timeout 3s; # 从后台服务器读取数据的超时时间proxy_send_timeout 3s; # 向后台服务器发送数据的超时时间}
}

7、保存后,我们重启nginx

nginx -t
nginx -s reload

8、访问接口http://[nginx ip]/order-server/getUser
在这里插入图片描述
在这里插入图片描述
多次访问可以发现8082,8083端口依次出现,这是因为nginx默认轮询算法,证明我们的配置生效了。

3. 源码

文中源码,可在https://gitee.com/wuhanxue/dubbo_wu_demo下载

4. 总结

如上我们即完成了一个基础版的nginx网关,如果要实现更多的网关功能,就是基于nginx自带功能或者插件进行拓展,这个就留给大家根据各自的业务需求进行探索了。

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

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

相关文章

SQLserver中的触发器和存储过程

在 SQL Server 中,触发器是一种特殊的存储过程,它在指定的数据库表上发生特定的数据修改事件时自动执行。触发器可以用于执行各种任务,如数据验证、数据审计、自动更新相关表等。 触发器的类型 SQL Server 支持以下几种类型的触发器&#x…

如何使用ssm实现开放式教学评价管理系统+vue

TOC ssm121开放式教学评价管理系统vue 第1章 绪论 1.1 背景及意义 系统管理也都将通过计算机进行整体智能化操作,对于开放式教学评价管理系统所牵扯的管理及数据保存都是非常多的,例如个人中心、教师管理、学生管理、游客管理、评价信息管理、综合评…

XSS- - - DOM 破坏案例与靶场

目录 链接靶场: 第一关 Ma Spaghet 第二关 Jefff 第三关 Ugandan Knuckles 第四关 Ricardo Milos 第五关 Ah Thats Hawt 第六关 Ligma 第七关 Mafia 第八关 Ok, Boomer 链接靶场: XS…

在DDD中应用模式

深层模型和柔性设计并非唾手可得。要想取得进展,必须学习大量领域知识并进行充分的讨论,还需要经历大量的尝试和失败。但有时我们也能从中获得一些优势。一位经验丰富的开发人员在研究领域问题时,如果发现了他所熟悉的某种职责或某个关系网&a…

[数据集][目标检测]电力场景输电线杆塔塔架金属锈蚀腐蚀生锈检测数据集VOC+YOLO格式1344张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):1344 标注数量(xml文件个数):1344 标注数量(txt文件个数):1344 标注…

makefile编译

文章目录 一、g和gcc的区别二、Linux下静态库和动态库三、makefile文件如何去编写 一、g和gcc的区别 基本定义(参考AI让生活更美好) gcc(GNU Compiler Collection)是一个编译器集合,最初是为C语言设计的,但…

fl studio mobile2024最新官方版V4.6.8安卓版+iOS苹果版

fl studio mobile,一款非常好用的音乐制作软件。该软件具有丰富多样的音乐类型让大家选择,内置多个好用的编辑工具、渲染工具、特效工具等可以使用。用户可以自由使用软件中的任何道具,直接在手机上编曲,进行音乐创作,…

iOS工程:获取手机相册权限,iOS原生系统弹窗, Privacy隐私政策选择,如何添加系统弹出并修改描述文字

【iOS工程】获取手机相册权限,iOS原生系统弹窗, Privacy隐私政策选择,如何添加系统弹出并修改描述文字 设备/引擎:Mac(11.6)/Mac Mini 开发工具:Xcode(15.0.1) 开发需求&#xff…

【Gaussian splatting系列学习】(三)

3DGS系列(一) 3DGS系列(二) 3DGS系列(三) 3D高斯球的颜色 基函数: 任何一个周期性函数可以分解为正弦和余弦的线性组合 球谐函数: 任何一个球面坐标的函数可以用多个球谐函数来近…

游戏引擎详解——图片

图片 图片的格式 图片文件格式pngjpg 纹理压缩格式ETC1/2PVRTCASTC 图片的属性 图片属性解释分辨率宽高像素值(pt),如:1024*1024位深度用来存储像素颜色的值,如RGBA8888,红黄蓝透明度4个维度每个8bit&…

CentOS Docker搭建Mysql5.7集群

MySQL Replication MySQL提供了Replication功能,可以实现将一个数据库的数据同步到多台其他数据库。前者通常称之为主库(master),后者则被称从库(slave)。MySQL复制过程采用异步方式,但延时非常…

初始redis:Zset有序集合

Set作为集合,有两个特点:唯一且无序。 Zset是有序集合,在保证唯一的情况下,是根据什么来排序的呢?排序的规则是什么? Zset中的member引入了一个属性,分数(score)&#…

立式报工台助力MES系统打造智能硬件解决方案

信息化与自动化的深度结合,使得企业在生产效率、质量控制以及资源管理等方面得以大幅提升。制造执行系统MES作为连接企业管理层与生产现场的重要桥梁,正在愈发得到重视。为了进一步强化MES系统的功能与应用,立式报工台作为一种新兴的智能硬件…

适用于 Windows 10 的最佳数据恢复免费软件是什么?

有没有适用于 Windows 10 的真正数据恢复免费软件?这篇文章将讨论这个话题,并分享什么是适用于 Windows 10/11/8.1/8/7/Vista/XP 的最佳数据恢复工具。 有没有适用于 Windows 10 的真正免费的数据恢复软件? 丢失重要数据,无论是由…

RISC-V vector(1) --- vector的引入与register说明

Vector相较于SIMD的优势 这两种实现方案,都是为了实现数据级并行性(存在大量的数据可供程序同时计算); SIMD(Single Instruction Multiple Data) SIMD是将数据宽度和操作类型,都放在了指令中&a…

一道xss题目--intigriti-0422-XSS-Challenge-Write-up

目录 进入挑战 js代码 代码分析 构造payload ​编辑 结果 进入挑战 Intigriti April Challenge题目地址 打开题目后&#xff0c;找到对应页面的js代码&#xff0c;寻找一下我们用户可控的点 js代码 <!DOCTYPE html> <html lang"en"><head> …

[GKCTF 2021]excel 骚操作1

使用010editor打开发现zip头&#xff0c;改后缀名xlsx为zip&#xff0c;解压&#xff0c;在D:\python\flag (1)\xl\worksheets目录下有个sheet1.xml就是ecxel的sheet1的主要样式style 看到很多c r"B2" s"1&#xff0c;只是单元格数据不同而已 &#xff0c;还有的…

Awesome-LLMs-for-Video-Understanding - 基于大型语言模型的视频理解研究

Awesome-LLMs-for-Video-Understanding 是 基于大型语言模型的视频理解研究 github : https://github.com/yunlong10/Awesome-LLMs-for-Video-Understandingpaper&#xff1a;Video Understanding with Large Language Models: A Survey https://arxiv.org/pdf/2312.17432 视频…

C++20中的约束与概念

类模板、函数模板和非模板函数(通常是类模板的成员)可能与约束(constraint)相关联&#xff0c;该约束指定对模板参数的要求(requirements)&#xff0c;可用于选择最合适的函数重载和模板特化。约束是使用模板时需要通过模板参数满足的条件或要求。这些要求的命名集合称为概念(c…

Hadoop 分布式集群搭建

HDFS分布式集群搭建 一、部署规划1.1 进程规划1.2 软件规划1.3 用户规划1.4 目录规划 二、 搭建HDFS 分布式集群2.1 HDFS 集群配置2.1.1 下载安装 Hadoop2.1.2 修改 hadoop-env.sh 配置文件2.1.3 修改 core-site.xml 配置文件2.1.4 修改 hdfs-site.xml 配置文件2.1.5 修改 slav…