<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Spring Cloud Alibaba on Liangweidong's blog</title><link>https://liangweidonggood.github.io/tags/spring-cloud-alibaba/</link><description>Recent content in Spring Cloud Alibaba on Liangweidong's blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Tue, 15 Sep 2020 00:00:00 +0800</lastBuildDate><atom:link href="https://liangweidonggood.github.io/tags/spring-cloud-alibaba/index.xml" rel="self" type="application/rss+xml"/><item><title>Spring Cloud Alibaba 整体架构与 7 大分布式问题</title><link>https://liangweidonggood.github.io/p/spring-cloud-alibaba-zhengtijiagou/</link><pubDate>Tue, 15 Sep 2020 00:00:00 +0800</pubDate><guid>https://liangweidonggood.github.io/p/spring-cloud-alibaba-zhengtijiagou/</guid><description>&lt;img src="https://liangweidonggood.github.io/p/spring-cloud-alibaba-zhengtijiagou/image/cover.jpg" alt="Featured image of post Spring Cloud Alibaba 整体架构与 7 大分布式问题" /&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;本文写于 2020 年 9 月&lt;/strong&gt;——Spring Cloud Alibaba 在 2018 年诞生，2019 年进入 Apache 孵化，2020 年成为事实上的国内微服务标准。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="一spring-cloud-vs-spring-cloud-alibaba"&gt;一、Spring Cloud vs Spring Cloud Alibaba
&lt;/h2&gt;&lt;h3 id="11-spring-cloud-是什么"&gt;1.1 Spring Cloud 是什么
&lt;/h3&gt;&lt;p&gt;Spring Cloud 是一套&lt;strong&gt;分布式微服务解决方案&lt;/strong&gt;。区别于 Dubbo（只是一个远程 RPC 框架），Spring Cloud 是&lt;strong&gt;一整套生态&lt;/strong&gt;，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;服务注册 / 服务调用&lt;/li&gt;
&lt;li&gt;负载均衡&lt;/li&gt;
&lt;li&gt;服务网关&lt;/li&gt;
&lt;li&gt;服务降级 / 熔断&lt;/li&gt;
&lt;li&gt;分布式配置管理&lt;/li&gt;
&lt;li&gt;消息总线&lt;/li&gt;
&lt;li&gt;链路跟踪&lt;/li&gt;
&lt;li&gt;……&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Spring Cloud 自成生态。&lt;/p&gt;
&lt;h3 id="12-为什么还需要-spring-cloud-alibaba"&gt;1.2 为什么还需要 Spring Cloud Alibaba
&lt;/h3&gt;&lt;p&gt;Spring Cloud 进入&lt;strong&gt;维护阶段&lt;/strong&gt;——版本迭代非常快，每发布一个 release 后又会紧接着发布下一个版本，积累了一系列 bug，使用过程中问题频出。&lt;/p&gt;
&lt;p&gt;进入维护模式意味着&lt;strong&gt;不会再有新的组件技术出现&lt;/strong&gt;，只是在原来的基础上修修补补，处理一些 merge 和 PR 请求。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;剧本&lt;/strong&gt;：几年前 Dubbo 被 Spring Cloud 取代。现在 Spring Cloud 停更，谁来补位？&lt;/p&gt;
&lt;p&gt;阿里和 Spring 社区都是巨头，巨头之间战斗要考虑很多，于是&lt;strong&gt;想到了合作&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Spring 社区负责 Spring 基础&lt;/li&gt;
&lt;li&gt;阿里负责新组件 + 推广阿里云 + 商业软件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;双赢&lt;/strong&gt; → Spring Cloud Alibaba 诞生&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="13-一句话总结"&gt;1.3 一句话总结
&lt;/h3&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;Spring Cloud Alibaba = Spring Cloud 的中国化继任者，由阿里主导持续更新。&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="二spring-cloud-alibaba-16-大核心组件"&gt;二、Spring Cloud Alibaba 16 大核心组件
&lt;/h2&gt;&lt;p&gt;按应用层从外到内：&lt;/p&gt;
&lt;h3 id="21-服务治理层"&gt;2.1 服务治理层
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;#&lt;/th&gt;
					&lt;th&gt;组件&lt;/th&gt;
					&lt;th&gt;功能&lt;/th&gt;
					&lt;th&gt;替代关系&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Nacos&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;服务注册 + 发现&lt;/td&gt;
					&lt;td&gt;替代 Eureka + Consul&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Nacos Config&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;统一配置中心&lt;/td&gt;
					&lt;td&gt;替代 Spring Cloud Config&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;3&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Spring Cloud Gateway&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;路由网关&lt;/td&gt;
					&lt;td&gt;替代 Zuul&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;4&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;OpenFeign&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;分布式 HTTP 调用&lt;/td&gt;
					&lt;td&gt;替代 Ribbon + RestTemplate&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;5&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Sentinel&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;熔断 / 降级 / 限流&lt;/td&gt;
					&lt;td&gt;替代 Hystrix&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;6&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Spring Boot Admin&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;服务监控&lt;/td&gt;
					&lt;td&gt;自研方案&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="22-数据--存储层"&gt;2.2 数据 &amp;amp; 存储层
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;#&lt;/th&gt;
					&lt;th&gt;组件&lt;/th&gt;
					&lt;th&gt;功能&lt;/th&gt;
					&lt;th&gt;替代关系&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;7&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;MinIO / 阿里 OSS&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;分布式文件&lt;/td&gt;
					&lt;td&gt;自研 FS&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;8&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;RocketMQ / RabbitMQ&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;消息中间件&lt;/td&gt;
					&lt;td&gt;替代 ActiveMQ&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;9&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Seata&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;分布式事务&lt;/td&gt;
					&lt;td&gt;替代 TCC 自研&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="23-平台--运维层"&gt;2.3 平台 &amp;amp; 运维层
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;#&lt;/th&gt;
					&lt;th&gt;组件&lt;/th&gt;
					&lt;th&gt;功能&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;10&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;xxl-job&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;分布式任务调度&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;11&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;SkyWalking&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;链路跟踪（APM）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;12&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;ELK + Kafka&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;分布式日志收集&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;13&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;JWT + Shiro&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;统一权限控制&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;14&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;CAS / sa-token&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;单点登录&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;15&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;docker-compose / K8s / Jenkins&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;部署 &amp;amp; 流水线&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;16&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Sentinel&lt;/strong&gt;（路由限流模式）&lt;/td&gt;
					&lt;td&gt;入口限流&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="三技术架构图"&gt;三、技术架构图
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ┌──────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ Nginx / SLB │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ (入口 LB) │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └─────────┬────────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ┌─────────▼────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ Spring Cloud │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ Gateway 网关层 │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ (路由/限流/鉴权) │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └─────────┬────────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ┌─────────────────────────┼─────────────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ 用户服务 │ │ 订单服务 │ │ 商品服务 │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ (集群) │ │ (集群) │ │ (集群) │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └──────┬──────┘ └──────┬──────┘ └──────┬──────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └─────────────────────────┼─────────────────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ┌────────────────┬────────────┼────────────┬────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ │ │ │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ┌────▼────┐ ┌─────▼────┐ ┌─────▼────┐ ┌────▼────┐ ┌─────▼────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ Nacos │ │ Redis │ │ MySQL │ │ MQ │ │ Seata │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ 注册/配置│ │ 缓存 │ │ 存储 │ │ 消息 │ │ 分布式事务│
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └─────────┘ └──────────┘ └──────────┘ └─────────┘ └──────────┘
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="四服务器集群后产生的-7-大问题"&gt;四、服务器集群后产生的 7 大问题
&lt;/h2&gt;&lt;p&gt;单节点应用升级到集群后，&lt;strong&gt;本地假设全部失效&lt;/strong&gt;，必须解决以下 7 大分布式问题：&lt;/p&gt;
&lt;h3 id="41-分布式锁"&gt;4.1 分布式锁
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：多节点同时操作同一资源，需要互斥。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方案&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Redis SETNX + Lua&lt;/strong&gt;：最常用，性能高&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Redisson&lt;/strong&gt;：Java 客户端封装，可重入锁 / 公平锁 / 读写锁&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zookeeper 顺序节点&lt;/strong&gt;：强一致，性能略低&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MySQL 行锁 / 表锁&lt;/strong&gt;：能不用就不用&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="42-分布式全局-id"&gt;4.2 分布式全局 ID
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：单库自增 ID 在分库分表后会重复。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方案&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;雪花算法（Snowflake）&lt;/strong&gt;：Twitter 开源，64 位（1 符号 + 41 时间戳 + 10 机器 + 12 序列号）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UUID&lt;/strong&gt;：简单但 128 位太长，无序&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;美团 Leaf&lt;/strong&gt;：号段模式 / Snowflake 增强版&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;百度 UidGenerator&lt;/strong&gt;：基于 Snowflake 优化&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="43-分布式-session-一致性"&gt;4.3 分布式 Session 一致性
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：用户登录后 Session 存在单节点，下次请求被路由到另一节点就丢失登录态。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方案&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Session 复制&lt;/strong&gt;：Tomcat 自带，性能差&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;客户端存储&lt;/strong&gt;：JWT（无状态，Token 放在 Header）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;统一 Session 存储&lt;/strong&gt;：Spring Session + Redis（&lt;strong&gt;推荐&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Session 粘性（IP Hash）&lt;/strong&gt;：Nginx &lt;code&gt;ip_hash&lt;/code&gt;，但扩缩容困难&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="44-分布式事务"&gt;4.4 分布式事务
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：跨服务调用，本地事务无法保证全局一致。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方案&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;2PC / 3PC&lt;/strong&gt;：强一致但性能差&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TCC（Try-Confirm-Cancel）&lt;/strong&gt;：业务侵入大，性能好&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;本地消息表&lt;/strong&gt;：最终一致，简单&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RocketMQ 事务消息&lt;/strong&gt;：最终一致，&lt;strong&gt;推荐&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seata AT 模式&lt;/strong&gt;：无业务侵入，&lt;strong&gt;最常用&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="45-分布式任务调度"&gt;4.5 分布式任务调度
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：多节点都跑定时任务会重复执行。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方案&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;xxl-job&lt;/strong&gt;：大众点评开源，&lt;strong&gt;业界事实标准&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Elastic-Job&lt;/strong&gt;：当当网开源，分片支持好&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quartz Cluster&lt;/strong&gt;：老牌方案，配置复杂&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Spring Task + ShedLock&lt;/strong&gt;：基于数据库锁的轻量方案&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="46-分布式日志收集"&gt;4.6 分布式日志收集
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：日志散落在几十台机器上，排查故障要逐台登录。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方案&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ELK（Elasticsearch + Logstash + Kibana）&lt;/strong&gt;：经典&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;EFK（Fluentd）&lt;/strong&gt;：K8s 时代更轻量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Loki + Promtail + Grafana&lt;/strong&gt;：标签索引，比 ES 便宜&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SkyWalking / Pinpoint&lt;/strong&gt;：APM 工具自带 traceId 串联&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="47-分布式配置中心"&gt;4.7 分布式配置中心
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：配置散落在每个服务的 application.yml 里，改一个配置要重启几十个服务。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方案&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Nacos Config&lt;/strong&gt;：自带，&lt;strong&gt;推荐&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Apollo&lt;/strong&gt;：携程开源，功能强大&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Spring Cloud Config&lt;/strong&gt;：老牌，依赖 Git&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consul KV&lt;/strong&gt;：也行&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="五面试常问"&gt;五、面试常问
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Q：Spring Cloud 和 Spring Cloud Alibaba 怎么选？&lt;/strong&gt;
A：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;新项目&lt;/strong&gt;：直接 Spring Cloud Alibaba&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;老 Spring Cloud Netflix 项目&lt;/strong&gt;：保留但不再升级&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;国内大厂项目&lt;/strong&gt;：Spring Cloud Alibaba + 自研&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;国际化项目&lt;/strong&gt;：Spring Cloud + Kubernetes（云原生）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Q：Seata AT 模式的原理是什么？&lt;/strong&gt;
A：基于&lt;strong&gt;全局锁 + 快照 + 回滚日志&lt;/strong&gt;——每个分支事务：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;解析 SQL → 生成&lt;strong&gt;前镜像&lt;/strong&gt; + &lt;strong&gt;后镜像&lt;/strong&gt; + &lt;strong&gt;回滚日志&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;提交本地事务，释放本地锁&lt;/li&gt;
&lt;li&gt;申请&lt;strong&gt;全局锁&lt;/strong&gt;（Seata Server 协调）&lt;/li&gt;
&lt;li&gt;根据全局决议，异步删除回滚日志（提交）或回滚（用后镜像恢复前镜像）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;无业务侵入&lt;/strong&gt;，业务代码只需加 &lt;code&gt;@GlobalTransactional&lt;/code&gt; 注解。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q：Nacos 和 Eureka 有什么区别？&lt;/strong&gt;
A：Nacos 同时支持 AP（Distro）和 CP（Raft），Eureka 只支持 AP。Nacos 自带配置中心，Eureka 纯注册中心。&lt;strong&gt;Nacos 是更好的选择&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q：Sentinel 和 Hystrix 有什么区别？&lt;/strong&gt;
A：Hystrix 已停更，Sentinel 持续维护。Sentinel 控制台更强大（实时监控 / 簇点链路 / 规则动态推送），规则支持流控 / 降级 / 热点 / 系统 / 授权 5 大类。&lt;/p&gt;
&lt;h2 id="六整体技术选型清单中小厂推荐"&gt;六、整体技术选型清单（中小厂推荐）
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;类别&lt;/th&gt;
					&lt;th&gt;推荐组件&lt;/th&gt;
					&lt;th&gt;理由&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;注册中心&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Nacos&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;一体化（注册 + 配置）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;网关&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Spring Cloud Gateway&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;响应式 + Netty&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;RPC&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;OpenFeign&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;声明式 + Ribbon 集成&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;熔断限流&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Sentinel&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;规则丰富 + 控制台&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;分布式事务&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Seata AT&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;无业务侵入&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;分布式锁&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Redisson&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;完整封装&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;分布式任务&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;xxl-job&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;成熟 + 可视化&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;消息&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;RocketMQ&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;事务消息 + 顺序消息&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;日志&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;ELK&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;经典方案&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;链路跟踪&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;SkyWalking&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;国产 + 字节码增强&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;配置中心&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;Nacos Config&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;一体化&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="七小结"&gt;七、小结
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Spring Cloud Alibaba = Spring Cloud 中国化继任者&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;16 大核心组件&lt;/strong&gt;覆盖服务治理 / 数据存储 / 平台运维全链路&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;7 大分布式问题&lt;/strong&gt;（锁/ID/Session/事务/任务/日志/配置）是集群化的必修课&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;选型原则&lt;/strong&gt;：先选生态最完整的方案（Nacos + Sentinel + Seata 三件套），再考虑业务侵入度&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>