- 博客(2210)
- 收藏
- 关注
原创 Java框架 SpringCloud 快速入门: Nacos 与 Eureka 的对比选型
注册中心从 Eureka 换成 Nacos,业务代码一行没改,但服务上下线的感知速度、实例的存活策略、集群的一致性模型全变了。这篇文章把两者的差异拆到底层机制,并给出一张迁移清单。主干流程一样:注册、拉取、心跳,Eureka 和 Nacos 都支持;差异在健康检测方式、列表变更通知方式和一致性模型。Eureka 是纯 AP,且不能切换;Nacos 默认 AP,存在非临时实例时切 CP。注册中心作为地址簿,选 AP 的理由是"列表短暂不一致只是少调一个实例,注册中心不可用会断掉整条链路"。
2026-10-07 22:45:00
8
原创 Java框架 SpringCloud 快速入门: Nacos 注册中心的认识与安装
Nacos 一个组件同时干两件事:服务注册发现和分布式配置管理,等于把 Eureka 和 Spring Cloud Config 合进了一个进程。这篇先把它是什么说清楚,再给两条能直接跑起来的安装路径(Docker 与压缩包),最后列一遍装不上时最常撞的坑。Nacos 是 Spring Cloud Alibaba 的组件,坐标在下,父工程靠统一管版本。它一个进程干了注册中心和配置中心两件事。本篇只用到注册发现,配置管理在后续章节展开,但装的时候不用为两者分别部署。单机启动的死命令是。
2026-10-07 21:45:00
23
原创 Java框架 SpringCloud 快速入门: Nacos 快速入门
服务拆分做完、远程调用也跑通了,但服务地址还是写死的。这篇讲怎么把 user-service 和 order-service 注册到 Nacos,重点是从 Eureka 迁过来的那几处差异——改错了就是启动报错或者服务列表空空如也。Nacos 的快速入门之所以三步就能收尾,是因为 Spring Cloud 把服务注册发现抽象成了和两个接口,业务代码和负载均衡都待在接口层之上,不动。实际要改的只有三处:父工程 import管版本,模块把换成,yml 里把换成。
2026-10-07 20:45:00
16
原创 Java框架 SpringCloud 快速入门: Nacos 环境隔离
Nacos 命名空间实现环境隔离,避免 dev/test/prod 服务互相可见。若未配置 namespace,所有服务默认注册在 public 空间,导致实例混杂、调用错乱。需通过 spring.cloud.nacos.discovery.namespace 和 config.namespace 分别指定服务与配置的命名空间 ID(非名称),确保服务发现与配置拉取双重隔离。重启生效,否则热更新无效。注意:namespace 实现“不可见”隔离,cluster 仅影响负载优先级,二者不可混淆。
2026-10-07 19:45:00
15
原创 Java框架 SpringCloud 快速入门: Nacos 服务实例的权重设置
Nacos实例权重用于按机器性能动态分配流量,解决多实例性能不均导致慢机压垮问题。权重为相对值,0表示不接收流量但保持健康状态,仅在NacosRule下生效。通过控制台调整权重(如0.1→0.5→1.0),可实现灰度发布与平滑下线,无需重启服务。验证需结合日志统计,确保分流比例符合预期。关键坑点:勿误用百分比、避免规则错配、注意缓存影响。
2026-10-07 18:45:00
115
原创 Java框架 SpringCloud 快速入门: Nacos 服务多级存储模型
Nacos 通过服务→集群→实例的三级结构,实现跨机房调用的就近优先。配置 cluster-name 可将实例按机房分组(如 HZ、SH),确保调用优先选择同集群实例,降低延迟。需注意:消费者与提供者均需正确配置集群名,避免大小写不一致或仅一方配置。集群用于机房维度的就近调用,与 namespace 的环境隔离不同。同机房优先策略依赖 NacosRule,本节仅完成集群划分前提。
2026-10-07 17:45:00
102
原创 Java框架 SpringCloud 快速入门: Feign 的最佳实践:继承与抽取
Feign客户端与提供者接口高度重复,源于契约一致性要求。为减少冗余,社区提出继承与抽取两种方案。继承法虽简洁,但导致服务间紧耦合、注解污染及参数注解无法继承,违背微服务独立部署原则。抽取法(独立feign-api模块)通过共享接口、POJO与配置,实现解耦,推荐使用。消费者仅需引入依赖并指定clients,避免扫描问题。真实代价包括依赖管理复杂与POJO归属争议。最终结论:优先选用抽取方式,确保可维护性与松耦合。
2026-10-07 16:30:00
87
原创 Java框架 SpringCloud 快速入门: Feign 的自定义配置与日志级别
Feign默认不打印日志,需手动配置日志级别(NONE/BASIC/HEADERS/FULL)并开启对应包的logging.level。配置方式有二:①YAML中通过feign.client.config.<服务名>.loggerLevel设置,配合logging.level.包名: debug;②Java代码中定义@Bean Logger.Level。注意:两层配置必须同时生效——Feign生成日志后,还需日志框架允许输出。优先级为局部配置 > 全局default > 全局默认。FULL级别含请求体,慎用
2026-10-06 23:30:00
38
原创 Java框架 SpringCloud 快速入门: Feign 替代 RestTemplate 实现声明式远程调用
本文介绍用Feign替代RestTemplate实现服务间调用的四步改造:引入依赖、开启Feign、定义声明式接口、注入调用。Feign通过注解声明请求五要素(服务名、方法、路径、参数、返回值),实现“调本地方法”般的体验,提升可读性与维护性。底层基于动态代理与Ribbon负载均衡,需注意注解扫描、参数注解、服务名大小写等常见坑点。
2026-10-06 22:30:00
31
原创 Java框架 SpringCloud 快速入门: Feign 的性能优化
Feign性能瓶颈主要源于默认的HttpURLConnection无连接池,导致每次调用均需新建TCP连接。优化核心是替换为带连接池的客户端(如HttpClient),通过引入feign-httpclient依赖并开启feign.httpclient.enabled: true,配置max-connections与max-connections-per-route实现连接复用。参数过小会导致排队,反而降低性能。同时建议将日志级别降至BASIC、启用GZIP压缩大报文,并合理设置超时避免重试放大。可通过压测耗
2026-10-06 21:30:00
23
原创 Java框架 SpringCloud 快速入门: Eureka 注册中心原理分析
上一篇把 Eureka Server 跑起来了,控制台能刷出实例列表。这个列表是怎么维护起来的,凭什么让不写死 IP 也能调通、还能在挂掉后自动绕开它。eureka-server 记录和管理,eureka-client 注册与消费。所有微服务都是 client,原因是每个服务都可能反过来对外提供服务。注册解决「谁在哪」,拉取解决「怎么找到」,续约解决「还活着吗」,剔除解决「死了怎么摘掉」。消费者不是每次调用都问注册中心,而是本地缓存 + 定期拉取。
2026-10-06 20:30:00
26
原创 Java框架 SpringCloud 快速入门: 服务提供者与消费者
微服务调用中,角色分为服务提供者(Provider)与服务消费者(Consumer),判定依据是“谁调用谁”。二者角色相对,同一服务可兼具双重身份,如order-service既对外提供接口,又调用user-service。此概念是注册中心、负载均衡等机制的基础:提供者注册服务,消费者拉取地址。理解角色相对性,有助于厘清调用链路与后续技术实现逻辑。
2026-10-06 19:45:00
21
原创 Java框架 SpringCloud 快速入门: Eureka 服务注册
注册中心已经跑起来了,空列表一个实例都没有,接下来就是把注册进去。这件事本身不难——引一个依赖、写两行配置就完事——但「谁需要注册」这个前提很容易想歪,很多人以为只有服务提供者才要注册,结果消费者拉不到服务列表,卡一整天。引客户端依赖 + 配服务名与注册中心地址。凡是看到「引入并配上」,就是在做注册这件事,跟它自报家门是提供者还是消费者身份无关。是后续lb://匹配的字符串基础,写错了后患无穷,先定名再动代码。消费者也要注册,否则它没有拉取注册表的身份。
2026-10-06 18:30:00
34
原创 Java框架 SpringCloud 快速入门: Eureka 服务发现与服务名调用改造
上一篇把注册进了 Eureka,但里还写着。服务注册了等于白注册——调用方根本没去查注册中心。这一篇就做这一件事:把硬编码的 IP 端口换成服务名,让自己从 Eureka 拉实例列表,顺手把负载均衡也带上。URL 用服务名替掉 IP 端口,的 Bean 加上。前者是显式改动,后者是生效开关。只加在创建的@Bean方法上,加错位置和没加效果一样报UnknownHostException: 服务名,先看注解,再看 Eureka 里注册名是否拼写一致,别急着怀疑网络。
2026-10-06 17:30:00
20
原创 Java框架 SpringCloud 快速入门: Eureka 注册中心的搭建
微服务拆分之后,订单服务调用用户服务不能再写死,因为用户服务会扩容成多个实例,IP 和端口随时在变。这一篇就把解决这个问题的 Eureka 注册中心跑起来:一个独立的微服务,三步配置,启动后打开控制台能看到实例列表。引依赖、启动类加、配置文件写端口/服务名/。依赖后缀是-server还是-client,选错不会报错但功能对不上后面那截/eureka少不得,这是 404 的头号来源决定控制台里显示名字还是UNKNOWN默认是true,单节点关掉是优化不是必须,集群下必须保留。
2026-10-06 16:30:00
72
原创 Java框架 SpringCloud 快速入门: 微服务配置拉取
微服务启动时需从Nacos拉取远程配置,关键在于解决“先有配置才能读配置”的死循环。核心是引入bootstrap.yml,由父上下文(bootstrap context)优先读取Nacos地址等定位信息,再合并本地application.yml。五步改造:加依赖、建bootstrap.yml、配置服务名/环境/Nacos地址/文件后缀、在Nacos创建对应dataId、验证日志。注意bootstrap.yml必须早于application.yml加载,且Boot 2.4+需手动开启。
2026-10-06 15:30:00
71
原创 Java框架 SpringCloud 快速入门: 微服务框架课程介绍与知识地图
本文为SpringCloud模块导引篇,系统阐述微服务的必要性与SpringCloud的技术体系。从求职、企业架构需求出发,揭示单体架构在并发与迭代上的瓶颈,引出微服务拆分的必然性。通过“问题-技术”对应表,梳理注册中心、网关、负载均衡、配置中心、熔断降级等核心组件的职责,并以调用链路图展示各组件协同关系。明确SpringBoot与SpringCloud的分工与版本匹配原则(如Hoxton.SR10对应2.3.9.RELEASE),并给出学习路径建议与示例工程结构,帮助读者构建完整知识地图,实现从“知其然”
2026-10-06 14:30:00
64
原创 Java框架 SpringCloud 快速入门: 网关作用介绍
服务拆分后,若无统一入口,客户端需硬编码各服务地址,导致维护困难;权限校验、限流等跨切面逻辑重复冗余,安全风险高。网关作为唯一入口,承担路由转发(集成服务发现与负载均衡)、权限校验、限流及跨域处理三大核心职责,实现入口统一、安全可控。它自身也是微服务,需注册中心支持,与Nginx分层协作:前者处理业务规则,后者负责流量接入。技术选型上,Spring Cloud Gateway凭借非阻塞架构成主流。需避免在网关中掺杂业务逻辑或缓存数据,确保其专注入口治理。
2026-10-06 12:45:00
174
原创 Java框架 SpringCloud 快速入门: 搭建 Gateway 网关实现请求路由
本文以 cloud-demo 项目为例,详解 SpringCloud Gateway 的搭建与核心功能。通过四步快速入门:创建模块、引入依赖(避坑spring-boot-starter-web)、编写启动类、配置路由规则,实现客户端统一访问微服务。强调网关三大职责——路由转发、权限校验、限流,并对比 Zuul、Nginx 等方案,明确 Gateway 在响应式架构中的优势。结合实战坑点(如 lb:// 写错、yml 缩进问题),完整演示网关如何作为微服务统一入口,实现高效、安全的请求分发。
2026-10-06 11:30:00
103
原创 Java框架 SpringCloud 快速入门: 网关的 CORS 跨域配置
跨域由浏览器同源策略拦截,核心是协议、域名、端口三者一致才同源。前端请求网关时若跨域,浏览器会阻止响应读取,而非服务器报错。简单请求直接发,Content-Type: application/json 等场景触发 OPTIONS 预检请求。预检需网关返回 Access-Control-Allow-* 头,真实请求响应也必须携带 Access-Control-Allow-Origin。推荐在网关统一配置 CORS,避免微服务重复配置导致多值头错误,且可省去各服务冗余代码。关键点:allowedOrigins:
2026-10-06 10:30:00
143
原创 Java框架 SpringCloud 快速入门: 实现 Feign 最佳实践(抽取方式)
将 UserClient、User 及默认配置抽取至独立的 feign-api 模块,实现接口与实体的统一管理。通过 order-service 引入该依赖,避免重复编写与维护,提升代码一致性。改造后,消费方仅需依赖 feign-api,提供方无需感知,实现解耦。关键点包括:模块化结构设计、正确配置 Feign 扫描范围、规避扫描失败、重复 Bean 等常见坑。最终达成“一次定义,多端复用”的高效协作模式。
2026-10-06 09:30:00
389
原创 Java框架 SpringCloud 快速入门: 认识 SpringCloud 与它的组件全景
微服务拆开之后,服务之间怎么找到彼此、怎么调用、配置改一处要动几十个工程——SpringCloud 就是来解决这一串问题的。它不是一门新技术,而是把业界已经跑通的组件攒成一套解决方案,再用 SpringBoot 的方式装配好给你用。SpringCloud 不是一门新技术,是把成熟组件整合起来、并用 SpringBoot 自动装配打包好的一站式微服务解决方案,价值在于"开箱即用"。
2026-10-06 08:45:00
283
原创 Java框架 SpringCloud 快速入门: 认识微服务与微服务技术对比
微服务方案定了,落地该选哪套技术栈?Dubbo、SpringCloud、SpringCloudAlibaba 的能力边界分别在哪,版本怎么配才不会启动失败——这篇把这些讲清楚,并给出一份能直接跑起来的父工程 pom。微服务框架的差别,本质上是这五件事各自用什么组件解决:注册发现、远程调用、负载均衡、配置管理、网关与保护。Dubbo 走 TCP 自定义协议,性能高但耦合 Java、体系不完整;SpringCloud 走 HTTP,学习成本低、组件齐全,是"整合者"而非发明者。
2026-10-06 07:30:00
215
原创 Java框架 SpringCloud 快速入门: 认识微服务与服务架构演变
本文剖析从单体到微服务的演进动因与实践路径:单体架构因编译慢、耦合高、升级难而受限;分布式架构虽解耦但面临调用复杂、级联失败等新问题。微服务作为优化后的分布式方案,以单一职责、面向服务、自治、隔离性强四大特征实现高内聚低耦合,通过网关统一入口、独立部署、数据隔离等工程实践落地。结合Spring Cloud Hoxton.SR10与Spring Boot 2.3.9.RELEASE,提供可运行的cloud-demo示例,揭示拆分代价与收益平衡之道。
2026-10-05 23:15:00
58
原创 Java框架 SpringCloud 快速入门: 全局过滤器(GlobalFilter)自定义鉴权
本文详解Spring Cloud Gateway中GlobalFilter的实战应用,突破配置式过滤器的逻辑局限。通过实现自定义鉴权过滤器,演示如何在全局范围内拦截请求、校验token、控制访问权限。重点解析GlobalFilter与GatewayFilter的本质区别、执行链顺序、响应式编程陷阱及多过滤器排序规则,结合curl测试验证401/200响应,揭示网关层自定义逻辑的核心机制与常见踩坑点。
2026-10-05 22:15:00
162
原创 Java框架 SpringCloud 快速入门: 路由断言工厂
本文深入解析Spring Cloud Gateway的断言(Predicate)机制,阐明其作为路由匹配条件的核心作用。通过流程图与时序图展示请求逐条匹配路由的全过程,强调顺序与短路特性。详解11类内置断言工厂,涵盖路径、方法、请求头、查询参数等常用类型,并澄清常见误区:如通配符规则、多断言为“与”关系、时间格式要求及权重分流应用。结合真实工程配置,对比断言与过滤器的职责差异,最后通过curl实测验证,揭示断言全不匹配导致404的原因及日志排查方法。
2026-10-05 21:15:00
144
原创 Java框架 SpringCloud 快速入门: Gateway 路由的过滤器配置
本文详解Spring Cloud Gateway中GatewayFilter的两类作用域:路由过滤器(仅对指定路由生效)与默认过滤器(对所有路由生效),并澄清其与GlobalFilter的本质区别。通过yaml配置示例,讲解AddRequestHeader、StripPrefix、RewritePath等常用过滤器工厂的写法及参数规范,强调执行顺序与常见坑点(如缩进错误、逗号误加空格)。重点指出default-filters并非GlobalFilter,后者需编程实现,适用于自定义业务逻辑。
2026-10-05 16:59:47
168
原创 Java框架 SpringCloud 快速入门: 从服务拆分到注册中心的落地路线
上篇把地图铺好了——微服务是什么、拆完会冒出哪些新问题、SpringCloud 里各组件各管哪一段。今天不再停在概念层,直接把示例工程cloud-demo拆开、把服务连起来,一天走完:服务拆分 → Eureka → Ribbon → Nacos 四站。今天的价值不在于记住四个组件的名字,而在于看懂它们之间"问题 → 技术"的递进:拆服务逼出远程调用,远程调用逼出注册中心,注册中心逼出负载均衡,Eureka 的停更逼出 Nacos。
2026-10-05 11:45:00
155
原创 Java框架 SpringCloud 快速入门: 过滤器链执行顺序
网关过滤器链由路由级filters、default-filters与GlobalFilter合并而成,通过GatewayFilterAdapter统一为GatewayFilter类型。排序依据order值:配置类过滤器按声明顺序从1递增(独立计数),GlobalFilter优先使用getOrder()结果,其次为@Order注解。最终链路按order升序执行,前置过滤器升序、后置逆序。实测验证顺序可控,建议按功能分区设置order,避免误用。
2026-10-05 10:45:00
168
原创 Java框架 SpringCloud 快速入门: 服务拆分之服务远程调用
订单服务查询订单时,user 字段为 null 因数据隔离无法直接查库。通过 RestTemplate 实现微服务间远程调用:在订单服务中注册 RestTemplate Bean,利用 getForObject 向用户服务发起 HTTP 请求,获取用户信息并填充至订单对象。该过程本质是模拟浏览器发请求,实现跨服务数据联动。虽存在硬编码地址、字段不一致等风险,但清晰揭示了 HTTP 远程调用的核心机制,为后续引入注册中心与 Feign 奠定基础。
2026-10-05 09:45:00
429
原创 Java框架 SpringCloud 快速入门: 服务拆分案例 Demo
本文通过cloud-demo工程详解微服务拆分的三大原则:单一职责、数据独立、面向服务。指出单体思维下跨库查询会导致业务重复与耦合,强调应通过独立数据库和HTTP接口调用实现解耦。工程结构清晰,含订单与用户两个独立服务,配置、代码、建表均分离,避免共用库、端口冲突等常见问题,为后续远程调用奠定基础。
2026-10-05 08:45:00
558
原创 Java框架 SpringCloud 快速入门: 多环境配置共享
Nacos配置共享核心在于分离共性与个性:将多环境一致的配置(如日志级别、连接池)放入{service}.yaml,实现跨环境共享;环境特有配置(如数据库地址)保留在{service}-{profile}.yaml。启动时优先级为:服务名-profile > 服务名 > 本地配置。通过shared-configs和extension-configs可实现跨服务共享,避免重复维护。关键点:file-extension需与Nacos文件后缀一致,否则静默失败。一套标准配置结构可有效防止配置漂移,提升运维效率。
2026-10-05 07:45:00
294
原创 Java 项目实战: 外卖平台优化-Shell脚本自动部署与图片路径修复
本文介绍外卖平台后端一键部署流程:在服务器配置JDK、Maven、Git、MySQL环境,通过git clone拉取源码至指定目录,使用reggieStart.sh脚本实现自动化部署——包含进程停止(先kill -15优雅退出,再kill -9强制终止)、代码更新、Maven打包及后台启动。重点解决图片路径问题:原配置为Windows路径D:\img\,需修改为Linux路径/usr/local/img/,并同步更新Git仓库与上传图片,确保前端正常展示。流程清晰,结合权限设置与日志记录,保障部署高效稳定。
2026-10-05 00:30:00
454
原创 Java 项目实战: 外卖平台优化-前端dist部署与Nginx反向代理rewrite
前端项目打包后生成的 dist 目录需上传至 Nginx 的 html 目录,通过修改 nginx.conf 中 root 指向 html/dist 并配置 location ^~ /api/ 实现反向代理。利用 rewrite 将前端请求 /api/employee/login 重写为 /employee/login,再转发至后端服务,解决前后端路径不一致问题。^~ 确保精确匹配优先,避免正则匹配开销。此方案实现静态资源与 API 请求的高效分离,是生产部署的标准实践。
2026-10-04 23:30:00
100
原创 Java 项目实战: 外卖平台优化-项目部署架构与三台服务器环境
本文设计了基于Nginx反向代理的前后端分离部署架构,采用三台服务器:A(Nginx+MySQL主库)、B(Spring Boot+Git/Maven+MySQL从库)、C(Redis)。前端静态资源部署于A,后端通过Git拉取源码、Maven打包并运行于B,实现自动化部署。请求经Nginx统一入口转发至后端,结合主从数据库与缓存层,保障高可用与性能。部署前需检查环境配置、防火墙及网络连通性,确保服务正常运行。
2026-10-04 22:30:00
21
原创 Java 项目实战: 外卖平台优化-Swagger常用注解与文档可读性优化
本文详解Swagger前后端分离中的六大注解,解决文档可读性差问题。通过@Api、@ApiModel、@ApiModelProperty等注解,实现接口分组、模型名称、字段说明的中文化,提升文档清晰度。重点强调状态字段需明确取值含义,避免联调歧义,并建议统一响应封装类R<T>的注解规范,确保API文档完整、准确、易用。
2026-10-04 21:30:00
37
原创 Java 项目实战: 外卖平台优化-Swagger与Knife4j接口文档生成
本文介绍前后端分离中使用Knife4j接入Swagger的实践。通过导入knife4j-spring-boot-starter依赖,结合@EnableSwagger2与@EnableKnife4j注解,配置Docket Bean并扫描Controller包,实现接口文档自动生成。配合静态资源映射与过滤器放行,可访问/doc.html在线查看接口、分类统计及调试,并支持导出OpenAPI JSON用于导入YApi等工具,大幅提升开发效率。
2026-10-04 17:06:58
100
原创 Java 项目实战: 外卖平台优化-YApi接口管理平台与文档导入导出
YApi 是一款自部署的高效API管理平台,支持前后端分离开发中的接口定义、在线测试与状态追踪。通过创建项目、分类及接口,可统一管理请求参数与响应结构,并实现状态可视化。支持导出HTML、Markdown、JSON及Swagger格式,便于离线查阅与交付;同时可批量导入Postman、HAR、Swagger等格式接口,提升协作效率。
2026-10-04 10:00:00
141
原创 Java 项目实战: 外卖平台优化-前后端分离开发模式与工程拆分
前后端分离解决混合开发的四大痛点:分工不清、效率低下、管理困难与招聘难题。通过将工程拆分为独立的前端与后端项目,实现并行开发、独立构建部署(前端交由Nginx处理静态资源,后端部署至Tomcat/Spring Boot),提升效率与可维护性。核心协作流程为“定制接口→并行开发→自测→联调→提测”,强调接口作为HTTP请求完整约定的重要性,确保数据格式一致,避免返工。
2026-10-04 09:00:00
152
原创 Java 项目实战: 外卖平台优化-Nginx六种负载均衡策略对比与选型
Nginx 提供六种负载均衡策略:轮询(默认)、加权轮询(weight)、IP哈希(ip_hash)、最少连接(least_conn)、URL哈希(url_hash)及响应时间优先(fair,需第三方模块)。轮询适用于同质节点;weight用于异构机器;ip_hash实现会话保持但易导致负载不均;least_conn适配耗时差异大的请求;url_hash提升缓存命中率。现代推荐使用Redis共享Session替代ip_hash,以支持弹性扩缩容。选型应结合性能、会话需求与扩展性综合判断。
2026-10-04 08:00:00
378
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅