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、线程模型、资源调度、可用性及稳定性,ingress源码广泛应用于企业。
地址: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 处理类库,支持缩略、水印等处理。tl源码
地址: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 的轻量级框架,提供模型转换封装,使用简便。源码升级
地址: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后端技术核心指南,总结多年工作经验与春招经验,包含分布式、中间件、大数据与高并发、数据库、设计模式与设计、常见面试题等模块。需完整版笔记与指南的小伙伴,可获取。