1.阿里巴巴的阿里阿里 26 款超神 Java 开源项目!
2.阿里巴巴 Sentinel + InfluxDB + Chronograf 实现监控大屏
3.浅析微服务熔断与限流的源码源码原理与实现(以sentinel为例)
4.Sentinel 是如何做限流的
5.Sentinelä¸Hystrixçåºå«
6.Github一夜登顶!阿里内部SpringCloudAlibaba学习笔记,阿里阿里全彩版开源
阿里巴巴的源码源码 26 款超神 Java 开源项目!
Spring Cloud Alibaba
致力于提供分布式应用服务开发的阿里阿里一站式解决方案,包含开发分布式应用服务所需的源码源码消费全返商城系统源码组件。通过 Spring Cloud 编程模型,阿里阿里开发者只需添加注解和少量配置,源码源码即可将应用接入阿里分布式应用解决方案,阿里阿里利用阿里中间件快速搭建分布式系统。源码源码
地址:github.com/spring-cloud...
Druid
Druid 是阿里阿里一个 JDBC 组件,提供监控数据库访问性能、源码源码高效数据库连接池、阿里阿里数据库密码加密和 SQL 执行日志等功能。源码源码
地址:github.com/alibaba/drui...
fastjson
fastjson 是阿里阿里转盘美金源码一个快速且功能强大的 Java JSON 处理库,由阿里巴巴工程师开发。特点包括快速、支持 Jdk 类、零依赖等。
地址:github.com/alibaba/fast...
Dubbo
Apache Dubbo (incubating) 是一款高性能、轻量级的开源 Java RPC 框架,提供面向接口的远程方法调用、智能容错和负载均衡、服务自动注册和发现等功能。
地址:github.com/alibaba/dubb...
JStorm
JStorm 是基于 Apache Storm 实现的实时流式计算框架,改进了网络 IO、线程模型、资源调度、可用性及稳定性,tidb 源码阅读广泛应用于企业。
地址:github.com/alibaba/jsto...
apns4j
apns4j 是 Apple Push Notification Service 的 Java 实现。
地址:github.com/teaey/apns4j
TDDL
TDDL 是基于集中式配置的 JDBC 数据源实现,支持主备、读写分离、动态数据库配置等功能。
地址:github.com/alibaba/tb_t...
CobarClient
Cobar Client 是基于 iBatis 和 Spring 的轻量级分布式数据访问层。
地址:github.com/alibaba/coba...
TaobaoJVM
TaobaoJVM 是基于 OpenJDK HotSpot VM 的优化、定制且开源的服务器版 Java 虚拟机,已在淘宝、天猫上线。
地址:jvm.taobao.org
SimpleImage
SimpleImage 是阿里巴巴的 Java 处理类库,支持缩略、水印等处理。生产软件源码
地址:github.com/alibaba/simp...
Tedis
Tedis 是另一个 redis 的 Java 客户端,旨在打造高可用 Redis 解决方案。
地址:github.com/justified/te...
Arthas
Arthas(阿尔萨斯)是阿里巴巴开源的 Java 诊断工具,采用命令行交互模式,提供 Tab 自动补全功能,便于问题定位和诊断。
地址:alibaba.github.io/artha...
Nacos
Nacos 致力于帮助开发者实现动态服务发现、服务配置管理、服务及流量管理,构建以服务为中心的现代应用架构。
地址:nacos.io/en-us/
easyexcel
Java 解析、生成 Excel 的轻量级框架,提供模型转换封装,使用简便。fdkaac源码分析
地址:github.com/alibaba/easy...
Sentinel
Sentinel 是面向微服务的轻量级流量控制框架,提供流量控制、熔断降级、系统负载保护等功能。
地址:github.com/alibaba/Sent...
SOFALookout
Lookout 是一个利用多维度 metrics 进行系统度量和监控的项目,支持 metrics 数据收集、加工、存储和查询等。
地址:github.com/alipay/sofa-...
SOFABoot
SOFABoot 是基于 Spring Boot 的研发框架,提供 Readiness Check、类隔离、日志空间隔离等功能,方便使用 SOFAStack 相关中间件。
地址:github.com/alipay/sofa-...
SOFAArk
SOFAArk 是一款轻量级 Java 类隔离容器,提供类隔离和依赖包隔离能力,支持简单的单模块或 Spring Boot 应用。
地址:alipay.github.io/sofast...
SOFATracer
SOFATracer 是用于分布式系统调用跟踪的组件,通过统一的 traceId 记录调用链路,便于故障发现和服务治理。
地址:github.com/alipay/sofa-...
SOFARPC
SOFARPC 是高性能、高可扩展性的 Java RPC 框架,提供方便透明、稳定高效的点对点远程服务调用方案。
地址:github.com/alipay/sofa-...
SOFABolt
SOFABolt 是基于 Netty 实现的网络通信框架,旨在简化基于网络通信的业务逻辑实现。
地址:github.com/alipay/sofa-...
JVM-Sandbox
JVM-Sandbox 是基于 JVM 的非侵入式运行期 AOP 解决方案。
地址:github.com/alibaba/jvm-...
OpenMessaging
OpenMessaging 是由阿里巴巴发起的分布式消息及流处理领域的应用开发标准。
地址:github.com/openmessagin...
Dragonfly
Dragonfly 是阿里自研的 P2P 文件分发系统,用于解决大规模文件分发场景下分发耗时、成功率低等问题。
地址:github.com/alibaba/Drag...
VirtualLayout
VirtualLayout 是针对 RecyclerView 的 LayoutManager 扩展,提供布局方案和组件复用。
地址:github.com/alibaba/vlay...
P3C
P3C 是 Java 代码规约扫描插件,包含 PMD 实现、IntelliJ IDEA 插件和 Eclipse 插件。
地址:github.com/alibaba/p3c
阿里巴巴 Sentinel + InfluxDB + Chronograf 实现监控大屏
在之前的文章中,我们探讨了如何利用InfluxDB存储实时流控数据,但焦点在于如何更有效地进行监控和预警。阿里巴巴的Sentinel控制台虽然功能强大,但其界面设计可能无法满足所有用户的需求。为了改进这一问题,我们转向了更灵活的展示工具,如Chronograf。
关于Sentinel控制台和InfluxDB的安装方法,已经在之前的章节详细介绍,这里不再重复。推荐使用Docker来安装Chronograf,安装成功后,通过浏览器访问mandKey å groupKeyï¼ç¨äºåºåèµæºï¼ä»¥å对åºçé离çç¥ï¼çº¿ç¨æ± é离 or ä¿¡å·éé离ï¼ã线ç¨æ± é离模å¼ä¸éè¦é 置线ç¨æ± 对åºçåæ°ï¼çº¿ç¨æ± å称ã容éãæéè¶ æ¶çï¼ï¼ç¶å Command å°±ä¼å¨æå®ç线ç¨æ± æç §æå®ç容éçç¥æ§è¡ï¼ä¿¡å·éé离模å¼ä¸éè¦é ç½®æ大并åæ°ï¼æ§è¡ Command æ¶ Hystrix å°±ä¼éå¶å ¶å¹¶åè°ç¨ã
Sentinel ç设计åæ´ä¸ºç®åãç¸æ¯ Hystrix Command 强ä¾èµé离è§åï¼Sentinel çèµæºå®ä¹ä¸è§åé ç½®çè¦å度æ´ä½ãHystrix ç Command 强ä¾èµäºé离è§åé ç½®çåå æ¯é离è§åä¼ç´æ¥å½±å Command çæ§è¡ãå¨æ§è¡çæ¶å Hystrix ä¼è§£æ Command çé离è§åæ¥å建 RxJava Scheduler 并å¨å ¶ä¸è°åº¦æ§è¡ï¼è¥æ¯çº¿ç¨æ± 模å¼å Scheduler åºå±ç线ç¨æ± 为é ç½®ç线ç¨æ± ï¼è¥æ¯ä¿¡å·é模å¼åç®åå è£ æå½å线ç¨æ§è¡ç Schedulerãè Sentinel 并ä¸æå®æ§è¡æ¨¡åï¼ä¹ä¸å ³æ³¨åºç¨æ¯å¦ä½æ§è¡çãSentinel çååé常ç®åï¼æ ¹æ®å¯¹åºèµæºé ç½®çè§åæ¥ä¸ºèµæºæ§è¡ç¸åºçéæµ/é级/è´è½½ä¿æ¤çç¥ãå¨ Sentinel ä¸èµæºå®ä¹åè§åé ç½®æ¯å离çãç¨æ·å éè¿ Sentinel API ç»å¯¹åºçä¸å¡é»è¾å®ä¹èµæºï¼åç¹ï¼ï¼ç¶åå¯ä»¥å¨éè¦çæ¶åé ç½®è§åãåç¹æ¹å¼æ两ç§ï¼
try-catch æ¹å¼ï¼éè¿ SphU.entry(...)ï¼ï¼ç¨æ·å¨ catch åä¸æ§è¡å¼å¸¸å¤ç / fallback
if-else æ¹å¼ï¼éè¿ SphO.entry(...)ï¼ï¼å½è¿å false æ¶æ§è¡å¼å¸¸å¤ç / fallback
Sentinel æä¾ å¤æ ·åçè§åé ç½®æ¹å¼ ãé¤äºç´æ¥éè¿ loadRules API å°è§å注åå°å åæä¹å¤ï¼ç¨æ·è¿å¯ä»¥æ³¨ååç§å¤é¨æ°æ®æºæ¥æä¾å¨æçè§åãç¨æ·å¯ä»¥æ ¹æ®ç³»ç»å½åçå®æ¶æ åµå»å¨æå°åæ´è§åé ç½®ï¼æ°æ®æºä¼å°åæ´æ¨éè³ Sentinel 并å³æ¶çæã
éç¦»æ¯ Hystrix çæ ¸å¿åè½ä¹ä¸ãHystrix æä¾ä¸¤ç§é离çç¥ï¼çº¿ç¨æ± é离ï¼Bulkhead Patternï¼åä¿¡å·éé离ï¼å ¶ä¸ææ¨èä¹æ¯æ常ç¨çæ¯çº¿ç¨æ± é离ãHystrix ç线ç¨æ± é离é对ä¸åçèµæºåå«å建ä¸åç线ç¨æ± ï¼ä¸åæå¡è°ç¨é½åçå¨ä¸åç线ç¨æ± ä¸ï¼å¨çº¿ç¨æ± æéãè¶ æ¶çé»å¡æ åµæ¶å¯ä»¥å¿«é失败ï¼å¹¶å¯ä»¥æä¾ fallback æºå¶ã线ç¨æ± é离ç好å¤æ¯é离度æ¯è¾é«ï¼å¯ä»¥é对æ个èµæºç线ç¨æ± å»è¿è¡å¤çèä¸å½±åå ¶å®èµæºï¼ä½æ¯ä»£ä»·å°±æ¯çº¿ç¨ä¸ä¸æåæ¢ç overhead æ¯è¾å¤§ï¼ç¹å«æ¯å¯¹ä½å»¶æ¶çè°ç¨ææ¯è¾å¤§çå½±åã
ä½æ¯ï¼å®é æ åµä¸ï¼çº¿ç¨æ± é离并没æ带æ¥é常å¤ç好å¤ãé¦å å°±æ¯è¿å¤ç线ç¨æ± ä¼é常影åæ§è½ãèèè¿æ ·ä¸ä¸ªåºæ¯ï¼å¨ Tomcat ä¹ç±»ç Servlet 容å¨ä½¿ç¨ Hystrixï¼æ¬èº« Tomcat èªèº«ç线ç¨æ°ç®å°±é常å¤äºï¼å¯è½å°å åæä¸ç¾å¤ï¼ï¼å¦æå ä¸ Hystrix 为å个èµæºå建ç线ç¨æ± ï¼æ»å ±çº¿ç¨æ°ç®ä¼é常å¤ï¼å ç¾ä¸ªçº¿ç¨ï¼ï¼è¿æ ·ä¸ä¸æåæ¢ä¼æé常大çæèãå¦å¤ï¼çº¿ç¨æ± 模å¼æ¯è¾å½»åºçé离æ§ä½¿å¾ Hystrix å¯ä»¥é对ä¸åèµæºçº¿ç¨æ± çæéãè¶ æ¶æ åµåå«è¿è¡å¤çï¼ä½è¿å ¶å®æ¯è¶ æ¶çæåæµéæ§å¶è¦è§£å³çé®é¢ï¼å¦æç»ä»¶å ·å¤äºè¶ æ¶çæåæµéæ§å¶çè½åï¼çº¿ç¨æ± é离就æ¾å¾æ²¡æé£ä¹å¿ è¦äºã
Sentinel å¯ä»¥éè¿å¹¶å线ç¨æ°æ¨¡å¼çæµéæ§å¶æ¥æä¾ä¿¡å·éé离çåè½ãè¿æ ·çé离é常轻é级ï¼ä» éå¶å¯¹æ个èµæºè°ç¨ç并åæ°ï¼èä¸æ¯æ¾å¼å°å»å建线ç¨æ± ï¼æ以 overhead æ¯è¾å°ï¼ä½æ¯ææä¸éã并ä¸ç»ååºäºååºæ¶é´ççæé级模å¼ï¼å¯ä»¥å¨ä¸ç¨³å®èµæºçå¹³åååºæ¶é´æ¯è¾é«çæ¶åèªå¨é级ï¼é²æ¢è¿å¤çæ ¢è°ç¨å 满并åæ°ï¼å½±åæ´ä¸ªç³»ç»ãè Hystrix çä¿¡å·éé离æ¯è¾ç®åï¼æ æ³å¯¹æ ¢è°ç¨èªå¨è¿è¡é级ï¼åªè½çå¾ å®¢æ·ç«¯èªå·±è¶ æ¶ï¼å æ¤ä»ç¶å¯è½ä¼åºç°çº§èé»å¡çæ åµã
çæéçº§å¯¹æ¯ sentinelåHystrixççæé级æ¬è´¨é½æ¯åºäºçæå¨æ¨¡å¼
Sentinel ä¸ Hystrix é½æ¯æåºäºå¤±è´¥æ¯çï¼å¼å¸¸æ¯çï¼ ççæé级 æ¤æ¶ææ对该èµæºçè°ç¨é½ä¼è¢« blockï¼ç´å°è¿äºæå®çæ¶é´çªå£åæå¯åæ§å°æ¢å¤ãä¸é¢æå°è¿ï¼Sentinel è¿æ¯æåºäºå¹³åååºæ¶é´ççæé级ï¼å¯ä»¥å¨æå¡ååºæ¶é´æç»é£é«çæ¶åèªå¨çæï¼æç»ææ´å¤ç请æ±ï¼ç´å°ä¸æ®µæ¶é´åææ¢å¤ãè¿æ ·å¯ä»¥é²æ¢è°ç¨éå¸¸æ ¢é æ级èé»å¡çæ åµã
å®æ¶ææ ç»è®¡å®ç°å¯¹æ¯
Hystrix å Sentinel çå®æ¶ææ æ°æ®ç»è®¡å®ç°é½æ¯åºäºæ»å¨çªå£çãHystrix 1.5 ä¹åççæ¬æ¯éè¿ç¯å½¢æ°ç»å®ç°çæ»å¨çªå£ï¼éè¿éé å CAS çæä½å¯¹æ¯ä¸ªæ¡¶çç»è®¡ä¿¡æ¯è¿è¡æ´æ°ãHystrix 1.5 å¼å§å¯¹å®æ¶ææ ç»è®¡çå®ç°è¿è¡äºéæï¼å°ææ ç»è®¡æ°æ®ç»ææ½è±¡æäºååºå¼æµï¼reactive streamï¼çå½¢å¼ï¼æ¹ä¾¿æ¶è´¹è å»å©ç¨ææ ä¿¡æ¯ãåæ¶åºå±æ¹é æäºåºäº RxJava çäºä»¶é©±å¨æ¨¡å¼ï¼å¨æå¡è°ç¨æå/失败/è¶ æ¶çæ¶ååå¸ç¸åºçäºä»¶ï¼éè¿ä¸ç³»åçåæ¢åèåæç»å¾å°å®æ¶çææ ç»è®¡æ°æ®æµï¼å¯ä»¥è¢«çæå¨æ Dashboard æ¶è´¹ã
Sentinel ç®åæ½è±¡åºäº Metric ææ ç»è®¡æ¥å£ï¼åºå±å¯ä»¥æä¸åçå®ç°ï¼ç®åé»è®¤çå®ç°æ¯åºäºLeapArrayçæ»å¨çªå£ï¼åç»æ ¹æ®éè¦å¯è½ä¼å¼å ¥ reactive stream çå®ç°ã
Sentinel çç¹è²
é¤äºä¹åæå°ç两è çå ±åç¹æ§ä¹å¤ï¼Sentinel è¿æä¾ä»¥ä¸çç¹è²åè½ï¼
è½»é级ï¼é«æ§è½
Sentinel ä½ä¸ºä¸ä¸ªåè½å®å¤çé«å¯ç¨æµé管æ§ç»ä»¶ï¼å ¶æ ¸å¿sentinel-core没æä»»ä½å¤ä½ä¾èµï¼æå ååªæä¸å°Kï¼é常轻é级ï¼å¼åè å¯ä»¥æ¾å¿å¼å ¥ sentinel-core èä¸éæ å¿ä¾èµé®é¢ ï¼åæ¶sentinelæä¾å¤ç§æ©å±ç¹ï¼ç¨æ·å¯ä»¥å¾æ¹ä¾¿çæ ¹æ®éæ±å»è¿è¡æ©å±ï¼èä¸æ ç¼åæ¢å°Sentinelä¸
å¼å ¥Sentinel带æ¥çæ§è½æèé常å°ãåªæå¨ä¸å¡åæºéçº§è¶ è¿ W QPS çæ¶åæä¼æä¸äºæ¾èçå½±åï¼5% - % å·¦å³ï¼ï¼åæº QPS ä¸å¤ªå¤§çæ¶åæèå ä¹å¯ä»¥å¿½ç¥ä¸è®¡ã
æµéæ§å¶
Sentinelå¯ä»¥é对ä¸åçè°ç¨ 以ä¸åçè¿è¡ææ å¦ QPSã并åè°ç¨æ°ãç³»ç»è´è½½çï¼ä¸ºåºåï¼å¯¹èµæºè°ç¨è¿è¡æµéæ§å¶ï¼å°éæºç请æ±è°æ´æåéçå½¢ç¶ã
Sentinel æ¯æå¤æ ·åçæµéæ´å½¢çç¥ï¼å¨ QPS è¿é«çæ¶åå¯ä»¥èªå¨å°æµéè°æ´æåéçå½¢ç¶ã常ç¨çæï¼
ç´æ¥æç»æ¨¡å¼ï¼å³è¶ åºç请æ±ç´æ¥æç»ã
æ ¢å¯å¨é¢ç模å¼ï¼ å½æµéæ¿å¢çæ¶åï¼æ§å¶æµééè¿çéçï¼è®©éè¿çæµéç¼ç¼çå¢å ï¼å¨ä¸å®æ¶é´å éæ¸å¢å å°éå¼ä¸éï¼ç»å·ç³»ç»ä¸ä¸ªé¢ççæ¶é´ï¼é¿å å·ç³»ç»è¢«åå®ã
åéå¨æ¨¡å¼ å©ç¨ Leaky Bucket ç®æ³å®ç°çåé模å¼ï¼ä¸¥æ ¼æ§å¶äºè¯·æ±éè¿çæ¶é´é´éï¼åæ¶å 积ç请æ±å°ä¼æéï¼è¶ è¿è¶ æ¶æ¶é¿ç请æ±ç´æ¥è¢«æç»ã
Sentinel Hystrix
é离çç¥åºäºå¹¶åæ°çº¿ç¨æ± é离/ä¿¡å·éé离
çæé级çç¥åºäºååºæ¶é´æ失败æ¯çåºäºå¤±è´¥æ¯ç
å®æ¶ææ å®ç°æ»å¨çªå£æ»å¨çªå£ï¼åºäº RxJavaï¼
è§åé ç½®æ¯æå¤ç§æ°æ®æºæ¯æå¤ç§æ°æ®æº
æ©å±æ§å¤ä¸ªæ©å±ç¹æ件çå½¢å¼
åºäºæ³¨è§£çæ¯æå³å°åå¸æ¯æ
è°ç¨é¾è·¯ä¿¡æ¯æ¯æåæ¥è°ç¨ä¸æ¯æ
éæµåºäº QPS / 并åæ°ï¼æ¯æåºäºè°ç¨å ³ç³»çéæµä¸æ¯æ
æµéæ´å½¢æ¯ææ ¢å¯å¨ãåéå¨æ¨¡å¼ä¸æ¯æ
ç³»ç»è´è½½ä¿æ¤æ¯æä¸æ¯æ
å®æ¶çæ§ APIåå¼åæ ·è¾ä¸ºç®å
æ§å¶å°å¼ç®±å³ç¨ï¼å¯é ç½®è§åãæ¥çç§çº§çæ§ãæºå¨åç°çä¸å®å
常è§æ¡æ¶çéé ServletãSpring CloudãDubboãgRPC çServletãSpring Cloud Netflix
æç« åºå¤ /educast/article/details/
Github一夜登顶!阿里内部SpringCloudAlibaba学习笔记,全彩版开源
Spring Cloud Alibaba为分布式应用开发提供一站解决方案,简化了开发复杂度。只需添加注解与少量配置,便能将Spring Cloud应用与Alibaba分布式解决方案对接,使用Alibaba中间件构建分布式应用系统。
学习SpringCloud Alibaba技术变得至关重要。市面上的资料分散不完整,官网学习困难重重。因此,我将分享一套Spring Cloud Alibaba学习笔记。
笔记内容涵盖微服务架构设计、Nacos服务治理、系统保护(Sentinel)、高级特性(配置中心、链路跟踪、性能监控、分布式事务、消息队列等)、微服务通信(Dubbo、openfeign)及微服务架构最佳实践。
此外,我将分享Java面试与Java后端技术核心指南,总结多年工作经验与春招经验,包含分布式、中间件、大数据与高并发、数据库、设计模式与设计、常见面试题等模块。需完整版笔记与指南的小伙伴,可获取。