Eclipse 创建基于 Maven 的 Web 项目(动态)
SpringBoot 与 SpringCloud 介绍
Eclipse 安装插件
Eclipse 在线安装阿里巴巴 Java 开发规约插件
打开 Eclipse –> Help –> Install New Software,填写插件的 URL 地址: https://p3c.alibaba.com/plugin/eclipse/update, 然后根据界面提示一步步安装,最后重启 Eclipse。安装成功后,工具栏会新增下图所示的图标。可以通过右键菜单、Toolbar 按钮两种方式手动触发代码检测,同时结果面板中可以对部分实现了 QuickFix 功能的规则进行快速修复。


JUC 高并发编程入门基础之一
大纲
JUC 介绍
JDK 5 中增加了并发大师 Doug Lea 的并发库,这一引进给 Java 线程的管理和使用提供了极大的便利性。在 Java 5 提供的 java.util.concurrent(简称 JUC)包中,增加了在并发编程中很常用的实用工具类,用于定义类似于线程的自定义子系统,包括线程池、异步 IO 和轻量级任务框架。JUC 提供了可调的、灵活的线程池,还提供了设计用于多线程上下文中的 Collection(即线程安全的集合类)实现等。常用的 JUC 包有以下几个:
- java.util.concurrent
- java.util.concurrent.locks
- java.util.concurrent.atomic
Zuul 网关实现动态路由和灰度发布
前言
本文将介绍在 SpringCloud 项目中,通过 Eureka + Zuul 实现网关动态路由和网关灰度发布。Zuul 实现网关灰度发布的核心思路是:通过配置中心(如数据库、Nacos、ZooKeeper 等)控制是否开启灰度发布,然后在 Zuul 的 Filter 中根据请求路径或请求参数(如 version)定义灰度标记,再结合 Ribbon 负载均衡策略按灰度标记筛选服务实例,最终基于 Eureka metadata(如 current / newest)将流量按规则路由到新旧服务,并通过按比例逐步放量(如 1% → 10% → 50% → 100%)实现可控放量,支持随时调整和快速回滚。
术语说明
- 网关动态路由:网关根据数据库、配置中心的数据变化,动态更新路由规则(如上线新服务、下线旧服务、修改路由转发路径),无需重启网关服务即可实时生效。
- 网关灰度发布:网关根据一定策略(如用户 ID、请求参数、随机百分比等)将部分流量路由到新版本服务,实现逐步放量发布与风险控制。
Redis 开发随笔
Gateway 入门教程 - 高级篇
大纲
Gateway 的流量控制
Gateway 的限流概述
在开发高并发系统时可以用三把利器来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统处理的容量,是抗高并发流量的 “银弹”;而降级是当服务出现问题或者影响到核心流程时,需要暂时将其屏蔽掉,待高峰过去之后或者问题解决后再打开;而有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀、抢购)、写服务(如评论、下单)、频繁的复杂查询等,因此需要有一种手段来限制这些场景的并发 / 请求量,即限流。限流的目的是通过对并发访问 / 请求进行限速或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务(定向到错误页或友好的展示页)、排队或等待(比如秒杀、评论、下单等场景)、降级(返回兜底数据或默认数据)。主流的中间件都会有单机限流框架,一般支持两种限流模式:控制速率和控制并发。Spring Cloud Zuul 通过第三方扩展 spring-cloud-zuul-ratelimit 也可以支持限流。Spring Cloud Gateway 是一个 API 网关中间件,网关是所有请求流量的入口;特别是像天猫双十一、双十二等高并发场景下,当流量迅速剧增,网关除了要保护自身之外,还要限流保护后端应用。常见的限流算法有漏桶和令牌桶,计数器也可以进行粗暴限流实现。对于限流算法,可以参考 Guava 中的 RateLimiter、Bucket4j、RateLimitJ 等项目的具体实现。下面将介绍如何基于 Bucket4j、Gateway 内置的限流过滤器工厂(RequestRateLimiterGatewayFilterFactory)、CPU 使用率实现限流,点击下载完整的案例代码。


