- Java207
- 编程14
- 设计78
- DevOps8
- 数据结构和算法16
- 数据库108
- 网络19
- 分布式76
- 大数据33
- 软件工程3
- 工作8
- 笔记47
- JavaCore64
- JavaEE15
- 软件20
- 工具37
- 框架68
- 中间件9
- 编程范式4
- 编程语言3
- Python6
- 架构31
- 设计模式27
- 重构7
- DDD2
- UML4
- 综合20
- 监控2
- 线性表4
- 树6
- 数据库综合3
- 数据库中间件4
- 关系型数据库18
- 文档数据库12
- KV数据库19
- 列式数据库14
- 搜索引擎数据库24
- 网络综合8
- 网络协议6
- 网络技术4
- 操作系统13
- 操作系统应用2
- 分布式综合3
- 分布式理论12
- 分布式协同14
- 分布式调度7
- 分布式高可用1
- 分布式通信31
- 分布式存储7
- hadoop7
- hive8
- spark1
- flink9
- 其他15
- 人工智能1
- 基础特性18
- 高级特性7
- 容器7
- IO9
- 并发11
- JVM9
- 面试11
- JavaWeb6
- 服务器8
- 构建9
- IDE4
- 监控诊断6
- JavaBean2
- 模板引擎4
- 测试5
- Spring61
- ORM3
- 安全8
- 缓存5
- 流量控制2
- 微服务5
- 解决方案8
- Git3
- Shardingsphere2
- Mysql10
- MongoDB11
- Redis17
- HBase12
- Elasticsearch15
- Elastic8
- Linux11
- 命令1
- 分布式协同综合7
- ZooKeeper6
- RPC8
- MQ17
- hdfs4
- 效能6
- 方法论2
- 规范3
- Tomcat6
- Maven7
- Spring综合5
- Spring核心24
- Spring数据10
- SpringWeb8
- SpringIO4
- Spring集成4
- Spring安全1
- Spring其他4
- RPC综合4
- Dubbo2
- MQ综合2
- Kafka9
- RocketMQ4
- 其他MQ1
RPC 高级篇
异步 RPC
链路跟踪
分布式链路跟踪就是将一次分布式请求还原为一个完整的调用链路,我们可以在整个调用链路中跟踪到这一次分布式请求的每一个环节的调用情况,比如调用是否成功,返回什么异常,调用的哪个服务节点以及请求耗时等等。
Trace 就是代表整个链路,每次分布式都会产生一个 Trace,每个 Trace 都有它的唯一标识即 TraceId,在分布式链路跟踪系统中,就是通过 TraceId 来区分每个 Trace 的。
Span 就是代表了整个链路中的一段链路,也就是说 Trace 是由多个 Span 组成的。在一个 Trace 下,每个 Span 也都有它的唯一标识 SpanId,而 Span 是存在父子关系的。还是以讲过的例子为例子,在 A->B->C->D 的情况下,在整个调用链中,正常情况下会产生 3 个 Span,分别是 Span1(A->B)、Span2(B->C)、Span3(C->D),这时 Span3 的父 Span 就是 Span2,而 Span2 的父 Span 就是 Span1。
RPC 进阶篇
RPC 架构模型
了解前面的知识点(序列化、动态代理、通信),其实已经可以实现一个点对点的 RPC 架构了。
采用微内核架构的 RPC 架构模型:
在 RPC 框架里面,怎么支持插件化架构的呢?我们可以将每个功能点抽象成一个接
口,将这个接口作为插件的契约,然后把这个功能的接口与功能的实现分离,并提供接口的默认实现。在 Java 里面,JDK 有自带的 SPI(Service Provider Interface)服务发现机
制,它可以动态地为某个接口寻找服务实现。使用 SPI 机制需要在 Classpath 下的 META-INF/services
目录里创建一个以服务接口命名的文件,这个文件里的内容就是这个接口的具体实现类。
Dubbo 快速入门
简介
Apache Dubbo 是一款高性能、轻量级的开源微服务框架。它提供了 RPC 通信 与 微服务治理 两大关键能力。
Dubbo 的核心功能
Dubbo 提供了六大核心能力:
- 面向接口代理的高性能 RPC 调用:提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节。
- 智能容错和负载均衡:内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量。
- 服务自动注册和发现:支持多种注册中心服务,服务实例上下线实时感知。
- 高度可扩展能力:遵循微内核+插件的设计原则,所有核心能力如 Protocol、Transport、Serialization 被设计为扩展点,平等对待内置实现和第三方实现。
- 运行期流量调度:内置条件、脚本等路由策略,通过配置不同的路由规则,轻松实现灰度发布,同机房优先等功能。
- 可视化的服务治理与运维:提供丰富服务治理、运维工具:随时查询服务元数据、服务健康状态及调用统计,实时下发路由策略、调整配置参数。
服务注册和发现
服务元数据
构建微服务的首要问题是:服务提供者和服务消费者通信时,如何达成共识。具体来说,就是这个服务的接口名是什么?调用这个服务需要传递哪些参数?接口的返回值是什么类型?以及一些其他接口描述信息。
服务的元数据信息通常有以下信息:
- 服务节点信息,如 IP、端口等。
- 接口定义,如接口名、请求参数、响应参数等。
- 请求失败的重试次数
- 序列化方式
- 压缩方式
- 通信协议
- 等等
Dubbo 快速入门
Apache Dubbo 是一款高性能、轻量级的开源 Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
一、Dubbo 简介
Apache Dubbo 是一款高性能、轻量级的开源 Java RPC 框架。
RPC 基础篇
RPC 简介
什么是 RPC
RPC 的全称是 Remote Procedure Call,即远程过程调用。
RPC 的主要作用是:
- 屏蔽远程调用跟本地调用的差异,让用户像调用本地一样去调用远程方法。
- 隐藏底层网络通信的复杂性,让用户更聚焦于业务逻辑。
RPC 的架构定位
RPC 是微服务架构的基石,它提供了一种应用间通信的方式。