【微服务 - easy视频 | day01】准备工具+gateway网关及路由至内部服务

文章目录

  • 准备工具
    • [1. nacos](#1. nacos)
    • [2. seata](#2. seata)
  • 项目构建
  • gateway网关
    • [1. gateway配置nacos](#1. gateway配置nacos)
    • [2. web服务](#2. web服务)
      • [2.1 nacos配置](#2.1 nacos配置)
      • [2.2 测试](#2.2 测试)
  • gateway路由到具体服务
    • [1. gateway配置文件添加](#1. gateway配置文件添加)
    • [2. 负载均衡](#2. 负载均衡)
      • [2.1 模拟两台服务器负载均衡](#2.1 模拟两台服务器负载均衡)
      • [2.2 模拟某台服务器挂断](#2.2 模拟某台服务器挂断)

前言

本项目非原创,我只是个小小白,跟随 b 站脚步,找到老罗的这个项目,视频来源于:
https://www.bilibili.com/video/BV1oEUkY6EFy/?spm_id_from=333.1387.homepage.video_card.click

本人不分享项目源码,支持项目付费!!!

准备工具

  1. nacos:服务注册和配置中心
  2. seata:分布式事务,保证微服务下数据一致性

1. nacos

下载后执行 startup.sh,运行nacos,找到控制台地址:

访问控制台地址:

2. seata

说明没有足够的内存去使用,所以我们要降级我们内存的配置

用可编辑的记事本打开seata-server.bat,找到参数设置,设置为1024,1024,512即可

成功启动:

项目构建

主要是对web站点服务(登录、注册、个人主页、视频列表、搜索);文件资源服务(上传视频、图片、获取视频)、互动服务(评论、点赞、收藏)三大模块进行拆分

gateway网关

项目的起点是gateway,经过gateway才会到具体的服务中。

base 服务主要是用于gateway,因为common中有spring-boot-starter-web,gateway中有spring-cloud-starter-gateway包,两个包是冲突的,所以将common和gateway中相同的包抽离到base中,在common和gateway中分别引入base。

项目启动前要先启动nacos和seata

1. gateway配置nacos

创建启动类后,配置nacos。

创建 bootstrap.yml文件:

在nacos中配置gateway服务:

启动gateway服务后,在nacos服务列表下可看到:

2. web服务

2.1 nacos配置

gateway服务并不提供真正的请求,真正的请求会到达业务的微服务中。

配置文件:

nacos中注册web服务:

配置内容就是单服务项目中application.yml文件的内容。
注意:端口号要改变

2.2 测试

编写一个测试方法,并启动Application:

访问:localhost:7072/test

gateway路由到具体服务

直接通过web服务的7072端口访问接口可以成功返回,但是实际上业务的微服务端口是不对外的,对外的端口只有gateway的7071端口

此时通过7071端口访问test请求是不成功的。

1. gateway配置文件添加


启动gateway服务后,访问localhost:7071/web/test

nacos中的服务列表:启动了几个服务nacos列表中就有几个服务

2. 负载均衡

多个请求并发打到服务器上,如果仅有一台服务器需要处理所有请求,压力很大;如果有多台服务器,可以将这些并发的请求分发部分给其他服务器,达到负载均衡的效果,减少单台服务器的压力。

2.1 模拟两台服务器负载均衡

将web服务的启动配置修改如下,7072端口配置-Dserver.port=7072,复制这个Configuration,同样修改为7073

nacos中修改web配置:

启动web服务的7072和7073两个Application,可以发现nacos中web服务有两个实例:

以端口7072和7073均可以访问/test请求:

修改test方法,添加端口号显示:

重新启动gateway服务,不断访问localhost:7071/web/test,请求就会均分到两个web的服务器实例中:

承担高并发压力,架构上设计是一方面,机器硬件也是一方面。

2.2 模拟某台服务器挂断

关闭web7073的服务,此时nacos中web服务只有一个实例:

此时通过gateway访问,短时间内到达7073web服务的请求会报页面错误,但过一会儿请求都会到达7072的web服务器上。
考虑容灾

相关推荐
你不是我我14 小时前
【Java 开发日记】HTTP3 性能更好,为什么内网微服务依然多用 HTTP2?HTTP2 内网优势是什么?
java·开发语言·微服务
雪碧聊技术14 小时前
大模型爆火!Java后端如何抓住Agent全栈开发的风口
java·大模型·agent·全栈开发
Filwaod15 小时前
互联网大厂Java面试实战:Spring Boot微服务架构与AI技术栈深度解析
spring boot·微服务·大厂面试·java面试·技术干货·ai技术栈·程序员求职
旷世奇才李先生15 小时前
Vue3\+TypeScript 2026实战——企业级前端项目架构搭建与性能优化全指南
前端·架构·typescript
逻辑驱动的ken16 小时前
Java高频面试场景题25
java·开发语言·深度学习·面试·职场和发展
AI人工智能+电脑小能手17 小时前
【大白话说Java面试题】【Java基础篇】第32题:Java的异常处理机制是什么
java·开发语言·后端·面试
扑兔AI17 小时前
B2B销售线索挖掘效率提升的技术实践:基于工商公开数据的客源筛选与竞品分析架构
大数据·人工智能·架构
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ18 小时前
通过java后端代码来实现给word内容补充格式文本内容控件,以及 设置控件的标记和标题
java·c#·word
無限進步D19 小时前
Java 面向对象高级 接口
java·开发语言