微服务 - Higress网关

前面我们已经介绍了微服务网关的基本概念,接下来我们重点介绍如何使用 Higress 来构建高性能的 AI 原生 API 网关。

作为系统的统一入口,Higress 网关为我们提供了以下核心能力:

  • 统一入口:为所有微服务提供统一的访问入口,简化客户端的调用复杂度。

  • 请求路由:根据请求的路径、参数等信息,将请求路由到正确的微服务实例。

  • 负载均衡:在多个服务实例之间分发请求,提高系统的可用性和性能。

  • 安全认证:统一处理身份验证、权限控制等安全相关功能。

  • 限流熔断:实现请求限流、服务熔断等保护机制,防止系统过载。

  • 监控日志:收集请求日志、监控指标等信息,便于系统运维和问题排查

Higress 安装

Higress 的安装需要 Docker 环境支持,启动成功后,可以通过 8001 端口访问 Higress 控制台:

服务来源配置

在 Higress 控制台中配置服务来源,可以从 Nacos 中获取服务来源:

需要注意的是,注册中心地址不支持 127.0.0.1 或 localhost,需要使用本机的内网地址。

配置完成后,Higress 会自动发现在 Nacos 中注册的所有微服务:

但是 Dubbo + Nacos 默认只注册 Dubbo 服务(RPC接口),而不注册 HTTP 接口。我们对外提供的服务都没有被发现,需要手动注册:

路由配置

这样一来,前端只需要访问网关的地址 localhost:8080/api/user/xxx,就会自动转发到对应的服务 localhost:8124/api/user/xxx。

路由配置完成:

完成路由配置后,需要修改前端 vite 请求代理地址为 8080 端口,然后就可以利用前端来测试完整业务流程了,能正常登录和生成网站就说明配置成功。

如果你使用了 Spring Cloud 作为服务发现(而不是 Dubbo),可以 整合 Nacos 快速发现服务。

权限认证问题解决

在微服务改造过程中,我们发现之前的 AOP 鉴权没有生效,因为只有用户模块有 AOP 鉴权类。

比如未登录时调用管理员查询对话历史接口,发现也能调用:

如果我们使用的是 Spring Cloud Gateway,可以在项目入口处自定义鉴权逻辑。但现在 Higress 是独立的组件,很难编写和已有项目集成的自定义逻辑。

怎么办呢?

aop/AuthInterceptor 是一个有点儿特殊的类,由于依赖了 UserService 和 User 实体类,无法放到 common 包中。如果单独存放在用户模块,其他服务想要使用就得引入用户模块(违背了微服务的原则),所以比较快速的解决方案是,后续每个需要鉴权的服务单独复制这个类即可。

比如在应用模块中引入:

@Aspect @Component public class AuthInterceptor { /** * 执行拦截 * * @param joinPoint 切入点 * @param authCheck 权限校验注解 */ @Around("@annotation(authCheck)") public Object doInterceptor(ProceedingJoinPoint joinPoint, AuthCheck authCheck) throws Throwable { String mustRole = authCheck.mustRole(); RequestAttributes requestAttributes = RequestContextHolder.currentRequestAttributes(); HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest(); // 当前登录用户 User loginUser = InnerUserService.getLoginUser(request); UserRoleEnum mustRoleEnum = UserRoleEnum.getEnumByValue(mustRole); // 不需要权限,放行 if (mustRoleEnum == null) { return joinPoint.proceed(); } // 以下为:必须有该权限才通过 // 获取当前用户具有的权限 UserRoleEnum userRoleEnum = UserRoleEnum.getEnumByValue(loginUser.getUserRole()); // 没有权限,拒绝 if (userRoleEnum == null) { throw new BusinessException(ErrorCode.NO_AUTH_ERROR); } // 要求必须有管理员权限,但用户没有管理员权限,拒绝 if (UserRoleEnum.ADMIN.equals(mustRoleEnum) && !UserRoleEnum.ADMIN.equals(userRoleEnum)) { throw new BusinessException(ErrorCode.NO_AUTH_ERROR); } // 通过权限校验,放行 return joinPoint.proceed(); } }

如果需要鉴权的服务较多,更优雅的方式是写一个单独的鉴权服务,感兴趣的同学可以了解下 OAuth2 协议。

同时,我们可以利用 Higress 插件的请求屏蔽和认证机制,组合使用 Higress + 服务内鉴权,实现多层次的安全防护。

接口文档聚合

在微服务架构中,每个服务都有自己的接口文档,为了方便查看和管理,我们可以考虑接口文档聚合。

Knife4j 提供了 接口文档聚合功能,支持 Cloud 模式自己填写要聚合的服务地址配置;也支持跟 Higress 网关一样,采用 Nacos 模式自动发现。

但很坑的是,这种方式只支持 Spring Boot 2,Spring Boot 3 根本无法启动!

作为替代方案,可以考虑自己写一个导航网站(用 AI 生成即可),点击某个服务后就跳转到对应的接口文档页面。

项目部署

微服务项目的部署相比单体应用更加复杂,需要考虑多个服务的协调启动、服务发现、配置管理等问题。

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

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

相关文章

如何在5分钟内掌握浏览器SQLite查看器的完整使用指南

如何在5分钟内掌握浏览器SQLite查看器的完整使用指南 【免费下载链接】sqlite-viewer View SQLite file online 项目地址: https://gitcode.com/gh_mirrors/sq/sqlite-viewer 还在为查看SQLite数据库而烦恼吗?现代Web技术已经让数据库浏览变得前所未有的简单…

HY-MT1.5-7B翻译模型实战|快速部署与API调用详解

HY-MT1.5-7B翻译模型实战|快速部署与API调用详解 在多语言交流日益频繁的今天,高质量、低延迟的机器翻译能力已成为智能应用的核心需求。腾讯混元团队推出的 HY-MT1.5-7B 翻译大模型,凭借其卓越的跨语言理解能力和对混合语种场景的精准处理&…

网页视频一键永久保存:m3u8下载器实战指南

网页视频一键永久保存:m3u8下载器实战指南 【免费下载链接】m3u8-downloader m3u8 视频在线提取工具 流媒体下载 m3u8下载 桌面客户端 windows mac 项目地址: https://gitcode.com/gh_mirrors/m3u8/m3u8-downloader "上周我花了两天时间整理的在线课程&…

混沌工程自动化:定时实验的技术架构与测试实践

故障预防的范式转移 随着分布式系统复杂度指数级增长,传统测试方法面临严峻挑战。Netflix的混沌工程报告指出:2025年全球企业因系统宕机导致的损失将突破3000亿美元。定时实验作为混沌工程自动化的核心组件,正推动测试从「故障响应」转向「故…

某教育平台如何用Sambert-HifiGan实现智能语音讲解,效率提升200%

某教育平台如何用Sambert-HifiGan实现智能语音讲解,效率提升200% 引言:从“人工录制”到“智能生成”的语音革命 在在线教育快速发展的今天,高质量、多情感的语音讲解内容已成为提升学习体验的核心要素。传统的人工录音方式不仅耗时耗力&…

移动测试左移:早期介入

测试左移的核心价值在移动应用开发领域,测试左移(Shift Left Testing)已成为提升软件质量的关键策略,其核心理念是将测试活动从传统的后期阶段提前至需求、设计和编码等早期环节。移动环境的独特性——如设备碎片化、用户交互高频…

用Sambert-HifiGan解决企业客服难题:多情感语音合成实战

用Sambert-HifiGan解决企业客服难题:多情感语音合成实战 引言:当客服语音不再“机械”——多情感合成的业务价值 在传统的企业客服系统中,语音播报往往采用预录音频或基础TTS(Text-to-Speech)技术,输出声音…

电商平台爆款秘籍:商品主图转促销短视频

电商平台爆款秘籍:商品主图转促销短视频 在电商竞争日益激烈的今天,如何让商品从海量信息中脱颖而出?静态图片已难以满足用户对沉浸式体验的需求。动态视觉内容正成为提升点击率、转化率的关键武器。本文将深入解析一种创新技术方案——基于 …

俄罗斯方块(使用claude code开发)

在线访问 https://chat.xutongbao.top/nextjs/light/etris 源码 use clientimport { useState, useEffect, useCallback, useRef } from react import Header from /components/header import {ArrowLeft,Play,Pause,RotateCw,Zap,Trophy,ArrowUp,ArrowDown,ArrowLeftIcon,Ar…

想做短视频却不会剪辑?AI自动生成来帮忙

想做短视频却不会剪辑?AI自动生成来帮忙 Image-to-Video图像转视频生成器 二次构建开发by科哥 无需专业剪辑技能,上传一张图 输入一句话,即可生成动态视频。本文将带你深入了解由“科哥”二次开发的 Image-to-Video 图像转视频系统&#xf…

Sambert-HifiGan语音合成服务质量保证体系

Sambert-HifiGan语音合成服务质量保证体系 📌 引言:中文多情感语音合成的现实挑战 随着智能客服、有声阅读、虚拟主播等应用场景的普及,高质量的中文多情感语音合成(Text-to-Speech, TTS) 已成为AI交互系统的核心能力之…

混沌工程进化史:从故障注入到韧性工程

一、Netflix混沌工程体系演进脉络 1.1 起源背景 2010年AWS可用区中断事件:服务中断8小时,暴露单点故障风险 关键转折点:迁移至AWS云原生架构后,分布式系统复杂性指数级增长 核心认知转变:故障不可避免 → 构建故障免…

Sambert-HifiGan语音合成服务高并发处理方案

Sambert-HifiGan语音合成服务高并发处理方案 📌 背景与挑战:从单请求到高并发的演进 随着语音合成技术在智能客服、有声阅读、虚拟主播等场景中的广泛应用,用户对中文多情感语音合成服务的实时性与稳定性提出了更高要求。基于ModelScope平台的…

Sambert-HifiGan多情感语音合成:如何实现情感多样性

Sambert-HifiGan多情感语音合成:如何实现情感多样性 引言:中文多情感语音合成的技术演进与现实需求 随着智能客服、虚拟主播、有声读物等交互式应用的普及,传统“机械化”的语音合成已无法满足用户对自然性与情感表达的需求。尤其是在中文语…

无需编程基础:通过WebUI界面完成复杂视频生成任务

无需编程基础:通过WebUI界面完成复杂视频生成任务 📖 简介:零代码实现图像到视频的智能转换 在AI生成内容(AIGC)快速发展的今天,图像转视频(Image-to-Video, I2V)技术正成为创意生产…

Sambert-HifiGan模型压缩技巧:减小体积保持音质

Sambert-HifiGan模型压缩技巧:减小体积保持音质 🎯 引言:中文多情感语音合成的挑战与需求 随着AI语音技术的发展,高质量、低延迟、轻量化的端到端语音合成系统已成为智能客服、有声阅读、虚拟主播等场景的核心基础设施。在众多开源…

Sambert-HifiGan语音合成:如何实现高自然度的语音输出

Sambert-HifiGan语音合成:如何实现高自然度的语音输出 引言:中文多情感语音合成的技术演进与现实需求 随着智能客服、虚拟主播、有声阅读等应用场景的不断扩展,传统机械式语音合成已无法满足用户对自然度、情感表达和个性化音色的需求。尤其…

Sambert-HifiGan多说话人语音合成技术解析

Sambert-HifiGan多说话人语音合成技术解析 📌 技术背景:从单一音色到多情感表达的演进 语音合成(Text-to-Speech, TTS)技术已广泛应用于智能客服、有声阅读、虚拟主播等场景。早期系统多基于拼接法或参数化模型,存在自…

Sambert-HifiGan在智能客服机器人中的情感计算

Sambert-HifiGan在智能客服机器人中的情感计算 引言:让语音合成拥有“情绪”的温度 在智能客服机器人的演进过程中,自然、拟人化的声音表达已成为用户体验的关键指标。传统的TTS(Text-to-Speech)系统虽然能实现基本的语音输出&a…

未来三年AI部署趋势:一键启动将取代手动配置

未来三年AI部署趋势:一键启动将取代手动配置 技术演进的必然方向:从复杂配置到极简交互 过去十年,人工智能技术经历了爆发式增长。从最初的学术研究走向工业级应用,AI模型的规模和复杂度不断提升。然而,在这一过程中&a…