扫描右侧图片或微信搜索 “ Java技术分享屋 ” ,回复 “ 验证码 ” ,获取验证密码。
本资料仅供读者预览及学习交流使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版!
一.资料图片
二.资料简介
这里主要说明为什么需要 dubbo?
随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。
Ø 单一应用架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。
此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。
Ø 垂直应用架构
当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。
此时,用于加速前端页面开发的 Web 框架(MVC) 是关键。
Ø 分布式服务架构
当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。
此时,用于提高业务复用及整合的 分布式服务框架(RPC) 是关键。
Ø 流动计算架构
当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。
此时,用于提高机器利用率的 资源调度和治理中心(SOA) 是关键。
实际上这样是一种云架构,实现了服务的动态扩展;在高并发情况下,服务端可以快速部署机器,而对于应用端没有任何其他影响(除了服务并发处理能力提升);当然,在当前 PC\web\wap\app 多端的情况下,使用 SOA 结构,可以最大程度复用已有代码,避免重复开发。
业界存在一种比较有意思的说法:小米在秒杀的时候,访问量暴涨,此时小米就会去申请很多阿里云服务器(1 小时内免费),快速部署服务,等秒杀完成后,快速归还;在如此高并发下硬件新增成本几乎为 0。
三.资料目录
目录.................................................................................... 2
1 源码阅读路径.................................................................. 4
2 背景.................................................................................. 4
3 Dubbo 架构................................................................... 5
4 HelloWorld 例子........................................................... 7
5 源文件概述...................................................................... 8
6 核心机制分析................................................................ 10
6.1 设计模式............................................................. 10
6.2 Bean 加载........................................................ 11
6.2.1 Spring 可扩展 Schema......................... 11
6.2.2 Spring 加载 bean 流程....................... 15
6.2.2.1 解析 xml 中的 bean 定义......... 15
6.2.2.2 onApplicationEvent..................... 17
6.2.2.3 Main............................................ 19
6.3 Extension 机制................................................. 20
6.3.1 Java SPI................................................... 20
6.3.2 扩展点...................................................... 20
6.3.2.1 扩展点配置................................... 20
6.3.2.2 扩展点加载流程........................... 21
6.3.2.3 扩展点装饰................................... 28
6.3.2.4 ExtensionFactory......................... 32
6.4 代理..................................................................... 36
6.4.1 Invoker 调用.......................................... 36
6.4.2 JDK 代理................................................ 39
6.4.3 Javaassist 代理(动态)...................... 39
6.5 远程调用流程..................................................... 42
6.5.1 通信过程.................................................. 42
6.5.2 序列化...................................................... 43
6.5.3 Encode 和 Decode............................... 46
7 过程分析........................................................................ 47
7.1 Refer & export................................................... 47
7.1.1 调用顺序.................................................. 47
7.1.2 生成 Invoker............................................ 50
7.1.3 export..................................................... 58
7.2 Registry.............................................................. 60
7.2.1 RegistryFactory 和 Registry.................. 60
7.2.2 DubboRegistryFactory 创建注册中心过程........................................................................ 63
7.2.3 注册中心启动.......................................... 68
7.2.4 生产者发布服务...................................... 69
7.2.4.1 Export 发布服务流程................ 69
7.2.4.2 RegistryProtocol.export(Invoker)暴露服务........................................................ 72
7.2.5 消费者引用服务...................................... 73
7.2.5.1 Refer 取得 invoker 的过程...... 73
7.2.5.2 RegistryProtocol. Refer 过程...... 74
7.3 集群&容错.......................................................... 75
7.3.1 Cluster.................................................... 76
7.3.2 目录服务 Directory................................. 78
7.3.3 router 路由服务.................................... 80
7.3.4 负载均衡.................................................. 81
7.3.4.1 RandomLoadBalance................... 82
7.3.4.2 RoundRobinLoadBalance............ 82
7.3.4.3 LeastActiveLoadBalance.............. 83
7.3.4.4 ConsistentHashLoadBalance....... 84
7.3.5 配置规则.................................................. 84
7.4 telnet................................................................. 85
7.5 监控..................................................................... 87
7.5.1 监控中心.................................................. 87
7.5.2 SimpleMonitorService............................ 89
7.5.2.1 Monitor 基础类......................... 89
7.5.2.2 SimpleMonitorService................. 91
7.5.2.3 产生监控数据............................... 93
7.5.2.4 RegistryContainer........................ 94
7.5.2.5 JettyContainer............................. 95