上一页 1 ··· 3 4 5 6 7
摘要: 前言 SOFARPC 提供了多种调用方式满足不同的场景。 例如,同步阻塞调用;异步 future 调用,Callback 回调调用,Oneway 调用。 每种调用模式都有对应的场景。类似于单进程中的调用模式。在单进程中,我们可以使用 JDK 的 Future 实现异步,可以通过观察者实现回调。 那么 阅读全文
posted @ 2018-05-09 21:41 莫那-鲁道 阅读(845) 评论(0) 推荐(0) 编辑
摘要: 前言 通常 RPC 调用需要客户端使用服务端提供的接口,而具体的形式则是使用 jar 包,通过引用 jar 包获取接口的的具体信息,例如接口名称,方法名称,参数类型,返回值类型。 但也存在一些情况,例如客户端没有 jar 包,或者是跨语言的调用,这个时候,就需要客户端使用字符串进行泛化调用。 如何使 阅读全文
posted @ 2018-05-08 12:58 莫那-鲁道 阅读(1262) 评论(0) 推荐(0) 编辑
摘要: 前言 RPC 框架需要维护客户端和服务端的连接,通常是一个客户端对应多个服务端,而客户端看到的是接口,并不是服务端的地址,服务端地址对于客户端来讲是透明的。 那么,如何实现这样一个 RPC 框架的网络连接呢? 我们从 SOFA 中寻找答案。 连接管理器介绍 先从一个小 demo 开始看: 上面的代码 阅读全文
posted @ 2018-05-08 02:03 莫那-鲁道 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 前言 SOFA RPC 中对服务地址的选择也抽象为了一条处理链,由每一个 Router 进行处理。同 Filter 一样, SOFA RPC 对 Router 提供了同样的扩展能力。 那么就看看 SOFA 是如何处理的。 如何使用 官方教程如下: 新建扩展文件 META INF/services/s 阅读全文
posted @ 2018-05-08 02:01 莫那-鲁道 阅读(492) 评论(0) 推荐(0) 编辑
摘要: 前言 集群中通常一个服务有多个服务提供者。其中部分服务提供者可能由于网络,配置,长时间 fullgc ,线程池满,硬件故障等导致长连接还存活但是程序已经无法正常响应。单机故障剔除功能会将这部分异常的服务提供者进行降级,使得客户端的请求更多地指向健康节点。当异常节点的表现正常后,单机故障剔除功能会对该 阅读全文
posted @ 2018-05-07 00:54 莫那-鲁道 阅读(504) 评论(0) 推荐(0) 编辑
摘要: 前言 SOFA 内置负载均衡,支持 5 种负载均衡算法,随机(默认算法),本地优先,轮询算法,一致性 hash,按权重负载轮询(不推荐,已被标注废弃)。 一起看看他们的实现(重点还是一致性 hash)。 源码分析 具体源码在 AbstractLoadBalancer 类中,子类需要实现 doSele 阅读全文
posted @ 2018-05-04 00:43 莫那-鲁道 阅读(467) 评论(0) 推荐(0) 编辑
摘要: 前言 SOFA RPC 支持根据权重对服务进行预热功能,具体地址: "预热权重" . 引用官方文档: 预热权重功能让客户端机器能够根据服务端的相应权重进行流量的分发。该功能也常被用于集群内少数机器的启动场景。利用流量权重功能在短时间内对服务端机器进行预热,然后再接收正常的流量比重。 运行机制如下: 阅读全文
posted @ 2018-05-04 00:42 莫那-鲁道 阅读(380) 评论(0) 推荐(0) 编辑
摘要: 前言 大部分框架都是事件订阅功能,即观察者模式,或者叫事件机制。通过订阅某个事件,当触发事件时,回调某个方法。该功能非常的好用,而 SOFA 内部也设计了这个功能,并且内部大量使用了该功能。来看看是如何设计的。 源码分析 核心类有 3 个: EventBus 事件总线 Event 事件,即被观察者 阅读全文
posted @ 2018-05-04 00:41 莫那-鲁道 阅读(374) 评论(0) 推荐(0) 编辑
摘要: 前言 在 SOFA RPC 的官方介绍里,介绍了自定义线程池,可以为指定服务设置一个独立的业务线程池,和 SOFARPC 自身的业务线程池是隔离的。多个服务可以共用一个独立的线程池。 API使用方式如下: 如上为 HelloService 服务设置了一个自定义线程池。 在 SOFABoot 中如下使 阅读全文
posted @ 2018-05-03 02:38 莫那-鲁道 阅读(1057) 评论(0) 推荐(0) 编辑
摘要: 前言 SOFA—RPC 支持数据链路透传功能,官方解释: 链路数据透传功能支持应用向调用上下文中存放数据,达到整个链路上的应用都可以操作该数据。 使用方式如下,可分别向链路的 request 和 response 中放入数据进行透传,并可获取到链路中相应的数据。 使用方式: 源码分析 从这个 4 句 阅读全文
posted @ 2018-05-03 02:38 莫那-鲁道 阅读(500) 评论(1) 推荐(0) 编辑
摘要: 前言 我们在之前的文章中已经稍微了解过 SOFA 的扩展机制,我们也说过,一个好的框架,必然是易于扩展的。那么 SOFA 具体是怎么实现的呢? 一起来看看。 如何使用? 看官方的 demo: 1.定义扩展点。 2.定义扩展实现 3.编写扩展描述文件:META INF/services/sofa rp 阅读全文
posted @ 2018-05-03 02:37 莫那-鲁道 阅读(443) 评论(0) 推荐(0) 编辑
摘要: 前言 SOFA Boot 现阶段支持 XML 的方式在 Spring 中定义 Bean,通过这些标签,我们就能从 Spring 容器中取出 RPC 中的引用,并进行调用,那么他是如何处理这些自定义标签的呢?一起来看看。 如何使用? 官方例子: 显眼的 sofa 标签。那么如何知道他是怎么处理这些标签 阅读全文
posted @ 2018-05-01 17:53 莫那-鲁道 阅读(2807) 评论(0) 推荐(1) 编辑
摘要: 前言 在前面的 "SOFA 源码分析 —— 服务发布过程" 文章中,我们分析了 SOFA 的服务发布过程,一个完整的 RPC 除了发布服务,当然还需要引用服务。 So,今天就一起来看看 SOFA 是如何引用服务的。实际上,基础逻辑和我们之前用 Netty 写的 RPC 小 demo 类似。有兴趣可以 阅读全文
posted @ 2018-04-30 23:44 莫那-鲁道 阅读(3217) 评论(0) 推荐(0) 编辑
摘要: 前言 SOFA 包含了 RPC 框架,底层通信框架是 bolt ,基于 Netty 4,今天将通过 SOFA—RPC 源码中的例子,看看他是如何发布一个服务的。 示例代码 下面的代码在 类下。 首先,创建一个 ServerConfig ,包含了端口,协议等基础信息,当然,这些都是手动设定的,在该类加 阅读全文
posted @ 2018-04-30 23:44 莫那-鲁道 阅读(743) 评论(0) 推荐(1) 编辑
摘要: 前言 "" 通常 Web 服务器在处理请求时,都会使用过滤器模式,无论是 Tomcat ,还是 Netty,过滤器的好处是能够将处理的流程进行分离和解耦,比如一个 Http 请求进入服务器,可能需要解析 http 报头,权限验证,国际化处理等等,过滤器可以很好的将这些过程隔离,并且,过滤器可以随时卸 阅读全文
posted @ 2018-04-30 23:43 莫那-鲁道 阅读(612) 评论(0) 推荐(0) 编辑
摘要: 前言 最近蚂蚁金服开源了分布式框架 SOFA,楼主写了一个 demo,体验了一下 SOFA 的功能,SOFA 完全兼容 SpringBoot(当然 Dubbo 也是可以兼容的)。 项目地址: "Alipay " ,该主页有 5 个项目,都是阿里开源的。 "sofa boot" , "sofa rpc 阅读全文
posted @ 2018-04-30 23:42 莫那-鲁道 阅读(1681) 评论(0) 推荐(0) 编辑
摘要: 目录: 源码地址:github 地址 前言 众所周知,dubbo 底层使用了 Netty 作为网络通讯框架,而 Netty 的高性能我们之前也分析过源码,对他也算还是比较了解了。今天我们就自己用 Netty 实现一个简单的 RPC 框架。 1. 需求 模仿 dubbo,消费者和提供者约定接口和协议, 阅读全文
posted @ 2018-04-27 09:22 莫那-鲁道 阅读(3009) 评论(1) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7