Alibaba(实习准备)—SOFARPC学习总结

手写RPC框架之泛化调用 什么是泛化调用泛化调用就是在不依赖服务方接口jar包的情况下进行调用,包括对调用方法的泛化、参数的泛化和返回值的泛化。泛化调用的使用场景常规的PRC调用都是客户端依赖服务端提供的接口jar包,然后利用动态代理技术,像调用本地方法一样调用远程方法,但是有些场景下客户端无法依赖jar包,也要调用远程方法,这时就需要用到泛化调用了。 阅读详情

SOFARPC框架

  在蚂蚁金服的分布式技术体系下,大量的技术产品(非网关类产品),都需要在内网,进行节点间通信。BOLT 提供了优秀的通信协议与通信框架,在 BOLT 的基础上,研发了自己的 RPC 框架,提供了负载均衡,流量转发,链路追踪,链路数据透传,故障剔除等基础能力。
  RPC框架应该包含的几个部分:User、User-stub、RPC-Runtime、Server-stub、Server。当 Client 想发起一个远程调用时,实际是通过本地调用 Client-stub,而 Client-stub 负责将调用的接口、方法和参数通过约定的协议规范进行编码并通过本地的 RPC-Runtime 实例传输到远端的实例。远端 RPC-Runtime 实例收到请求后交给 Server-stub 进行解码后发起本地端调用,在 Java中可以认为就是反射调用,调用结果再返回给 Client 端。
在这里插入图片描述

存在几个疑问:
1.Stub 怎么出现?         ——>创建代理解决了 Stub 的问题
2.怎么打包参数?          ——>序列化和网络协议编码解决了打包的问题
3.怎么传输?               ——>Bolt,Netty 等解决了网络传输的问题
4.怎么知道目标地址?       ——>服务发现与路由寻址解决了如何知道目标地址的问题
5.怎么发布一个 RPC 服务?  ——>Registry 来解决

在这里插入图片描述
SOFARPC 结构设计
在这里插入图片描述
其中 core和 core-impl 是核心的功能,包含 API 和一些扩展机制,extension-impl 中,则包含了不同的实现和扩展,比如对 http,rest,对 metrics,以及其他注册中心的集成和扩展。如 bootstrap 中对协议的支持,remoting 中对网络传输的支持,registry 中对注册中心的支持等。

客户端调用流程
在这里插入图片描述
当使用方对服务进行了引用配置之后:
1.RPC 生成 Proxy,作为用户可以操作的入口。
2.向服务中心订阅这个 RPC 的地址信息。
3.使用方发起调用,经过路由,负载均衡,各类 Filter 发起调用。

服务端处理流程
在这里插入图片描述
在服务端看来,通过 TCP 监听端口后:
1.接到 RPC 请求后,进行解码和反序列化。
2.选择线程池,进行分发。
3.经过 Filter,进行反射调用。
4.将结果序列化,编码,进行写回。

可扩展的机制
  为了对 RPC 各个环节的都有充足的可扩展性,提供 SPI 的能力。相比原生 SPI,实现了更强大的功能:按需加载、可以有别名、可以有优先级进行排序和覆盖、可以控制是否单例、可以在某些场景下使用编码、可以指定扩展配置位置、可以排斥其他扩展点。 SPI 机制的整个流程如图所示:
在这里插入图片描述
在启动加载阶段,RPC 会根据对应的配置,加载需要调用方法ExtensionLoader(Class<T> interfaceClass, ExtensionLoaderListener<T> listener)逻辑如下:首先读取rpc-config-default.json和rpc-config.json,找到扩展描述文件存放的文件夹:extension.load.path属性。找到接口类对应的扩展描述文件的文件名(默认就是接口名,也可以自己指定)。循环加载这个文件下的扩展描述文件,按行读取。(同一个接口的同一个别名对应唯一的一个实现类,可以重复,允许覆盖。)保存扩展实现类的alias和实现类的对应关系。如果 ExtensionLoaderListener 不为空,则通知 Listener。最终,将会构造出各个不同的 Filter,Invoker 等等。

SOFARPC 链路追踪

  微服务已经被广泛应用在工业界,微服务带来易于团队并行开发、独立部署、模块化管理等诸多优点。然而微服务将原单体拆分多个模块独立部署,各模块之间链接变得错综复杂,在大规模分布式系统中这种复杂链路给维护带来了诸多困难。 如果对整个微服务架构不能了然于胸,便很难理清各模块之间的调用关系。 例如修改一个服务接口,对哪些服务造成影响不能快速定位。SOFARPC 在5.4.0 以后提供了链路追踪技术,可以有效协助开发运营人员进行故障诊断、容量预估、性能瓶颈定位以及调用链路梳理。
  链路追踪技术主要是收集、存储、分析分布式系统中的调用事件数据,协助开发人员进行故障诊断、容量预估、性能瓶颈定位以及调用链路梳理。链路追踪技术包含了数据埋点、收集、存储、分析等相关技术,是一套技术体系。
  SOFARPC 作为一个基础的通讯中间件,对服务调用有很强的感知能力,容易获取链路追踪所需的服务调用信息。因此很多链路追踪系统都会选择RPC 作为埋点对象,通过对RPC中间件的埋点可以轻松做到对用户的无感知、透明化。

SOFARPC 连接管理与心跳

  在 RPC 调用过程中,我们经常会和多个服务端进行远程调用,如果在每次调用的时候,都进行 TCP 连接,会对 RPC 的性能有比较大的影响,因此,实际的场景中,我们经常要对连接进行管理和保持。SOFARPC 应用心跳包以及断线重连实现,结合系统 tcp-keepalive 机制,来实现对 RPC 连接的管理和保持。
TCP keep-alive
  tcp-keepalive 机制可以在连接无活动一段时间后,发送一个空 ack,使 TCP 连接不会被防火墙关闭。tcp_keepalive_time,在 TCP 保活打开的情况下,最后一次数据交换到 TCP 发送第一个保活探测包的间隔,即允许的持续空闲时长,或者说每次正常发送心跳的周期,默认值为 7200s(2h)。 tcp_keepalive_probes 在 tcp_keepalive_time 之后,没有接收到对方确认,继续发送保活探测包次数,默认值为 9(次)。 tcp_keepalive_intvl,在 tcp_keepalive_time 之后,没有接收到对方确认,继续发送保活探测包的发送频率,默认值为 75s。
在这里插入图片描述
SOFABolt 基于系统 tcp-keepalive 机制实现;SOFABolt 基于 Netty IdleStateHandler 心跳实现。

SOFARPC 连接管理断开重连实现
连接管理是客户端的逻辑,启动好,连接管理开启异步线程。
在这里插入图片描述
  其中,SOFARPC 连接管理 ConnectionHolder 维护存活的客户端列表healthConnections 和失败待重试的客户端列表 retryConnections,RPC 启动守护线程以默认 10 秒的间隔检查存活和失败待重试的客户端列表的可用连接:
1、检查存活的客户端列表 healthConnections 是否可用,如果存活列表里连接已经不可用则需要放到待重试列表 retryConnections 里面;
2、遍历失败待重试的客户端列表 retryConnections,如果连接命中重连周期则进行重连,重连成功放到存活列表 healthConnections 里面,如果待重试连接多次重连失败则直接丢弃。

SOFARPC 同步异步实现

  SOFARPC 以基于 Netty 实现的网络通信框架 SOFABolt 用作远程通信框架,使用者不用关心如何实现私有协议的细节,直接使用内置 RPC 通信协议,启动客户端与服务端,同时注册用户请求处理器即可完成远程调用:SOFARPC 服务调用提供同步 Sync、异步 Future、回调 Callback 以及单向 Oneway 四种调用类型。
在这里插入图片描述
【1】Sync 同步调用
  支持方法级别,接口级别的超时设置。同步调用是指的客户端发起调用后,当前线程会被阻塞,直到等待服务端返回结果或者出现了超时异常,再进行后续的操作

【2】Future 异步调用
  客户端发起调用后不会同步等待服务端的结果,而是获取到 RPC框架给到的一个Future 对象,调用过程不会阻塞线程,然后继续执行后面的业务逻辑。服务端返回响应结果被 RPC 缓存,当客户端需要响应结果的时候需要主动获取结果,获取结果的过程阻塞线程。

【3】Callback 回调调用
  客户端提前设置回调实现类,在发起调用后不会等待结果,但是注意此时是通过上下文或者其他方式向 RPC 框架注册了一个 Callback 对象,结果处理是在新的线程里执行。RPC在获取到服务端的结果后会自动执行该回调实现。

【4】Oneway 单向调用
客户端发送请求后不会等待服务端返回的结果,并且会忽略服务端的处理结果

SOFARPC 线程模型

I/O模型 JAVA NIO 和多路复用结合起来就是是最简单的 Reactor 模式:注册所有感兴趣的事件处理器,单线程轮询选择就绪事件,执行事件处理器。

Reactor 线程模型
Reactor 中定义了三个角色:
在这里插入图片描述
而一个标准的操作流程则是:步骤1:等待事件到来(Reactor 负责);步骤2:将读就绪事件分发给用户定义的处理器(Reactor 负责);步骤3:读数据(用户处理器负责);步骤4:处理数据(用户处理器负责)。在这个标准之下,Reactor 有几种演进模式:单线程模型、多线程模型、主从多线程模型。主从多线程模型是目前大部分 RPC 框架,或者服务端处理的主要选择。Reactor 主从多线程模型的特点:服务端用于接收客户端连接的不再是个1个单独的 NIO 线程,而是一个独立的 NIO 线程池。
在这里插入图片描述
主要的工作流程:
1、MainReactor 将连接事件分发给 Acceptor
2、Acceptor 接收到客户端 TCP 连接请求处理完成后(可能包含接入认证,黑名单等),将新创建的 SocketChannel 注册到 IO 线程池(sub reactor线程池)的某个 IO 线程上,Acceptor 线程池仅仅只用于客户端的登陆、握手和安全认证。
3、SubReactor 负责 SocketChannel 的读写和编解码工作。其 IO 线程负责后续的 IO 操作。

  对于 SOFARPC 来说,和底层的 SOFABolt 一起,在使用 Netty 的 Reactor 主从模型的基础上,支持业务线程池的选择。
在这里插入图片描述

SOFARPC 单机故障剔除

  SOFARPC 提供了自动单机故障剔除能力,能够自动监控 RPC 调用的情况,对故障节点进行权重降级,并在节点恢复健康时进行权重恢复,提高系统可用性。
  在分布式架构中常见可用性方案的是 集群(冗余),即将一个服务部署在多个机器上,通过硬负载或软负载实现服务的均衡负载。硬件负载因每次请求都需要经过硬件负载,承担所有的访问压力,当集群规模增加、流量增多,硬件负载可能因无法支撑所有流量而导致系统不可用。软负载则提供注册中心,并将负载能力转移到服务调用方( Consumer ),注册中心只有在 Consumer 首次订阅或服务发生变化时才会发生交互,避免了并发访问下的单点问题。虽然软负载可以避免单点问题,但可能存在以下场景导致服务不可用:
1、Provider 出现单点故障或宕机,与 Consumer 的长连接已断开,但注册中心尚未摘除或未及时通知Consumer。
2、Consumer 和 Provider的长连接还在,注册中心未下发摘除,但服务器端由于某些原因,例如长时间的 Full GC, 硬件故障(后文中为避免重复,统一描述为机器假死)等场景,处于假死状态。

这两种场景都是服务端出现故障,但由于长连接还保留等原因注册中心未摘除服务,导致服务调用失败。针对第一种情况 Consumer 不应调用出现故障的 Provider,否则会引起部分服务不可用;针对第二种情况,这个 Consumer 应该不调用或少调用该Provider,可以通过权重的方式来进行控制。目前 SOFARPC 5.3.0 以上的版本支持RPC 单机故障剔除能力。SOFARPC 通过服务权重控制方式来减少异常服务的调用,将更多流量打到正常服务机器上,提高服务可用性。

SOFARPC故障剔除 vs 注册中心故障剔除
  SOFARPC 的故障剔除与注册中心故障服务剔除不同,它们从不同的维度来完成故障剔除提高服务可用性。主要两方面的区别:故障剔除的时机、故障剔除的细粒度。
  故障剔除的时机:SOFARPC 的故障剔除与注册中心故障服务剔除不同,它们从不同的维度来完成故障剔除提高服务可用性。注册中心服务管理关注 Provider 与注册中心的心跳或长连接。如果 Provider 出现心跳异常或长连接不存在,则及时将服务从注册中心剔除,并告知 Consumer 移除本地缓存的故障 Provider 信息。Comsumer 在负载均衡选择时则不考虑被剔除的 Provider。而 SOFARPC 单机故障剔除针对的场景不同,针对的是注册中心还未剔除的服务,这些服务与 Consumer 仍然保持长连接,但由于机器假死,不能提供正常服务。
  故障剔除的细粒度:注册中心剔除的是粒度是针对单机上的某个服务进程,属于进程级别。一旦这个进程和注册中心断开连接或心跳无感应,则将其从注册中心剔除。SOFARPC 故障剔除并控制精度会更精细一些,会细致到进程对外暴露的服务。

服务权重降级 vs 服务降级
  服务降级是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。这里的降级级别是整个系统服务,而不是针对接口级别。
  SOFARPC 的服务降级,是指当某些个别机器因为存在机器假死,导致处于假死状态,导致一些服务接口响应异常,通过 SOFARPC 的故障剔除和服务权重降级来减少对这些异常机器接口的访问,而将更多的流量打到正常的机器上。 这里针对的维度主要还是 IP + 服务维度,如部署在 xxx 机器上交易系统对外提供的 TransQueryService 服务。

  通常一个服务有多个服务提供者,其中部分提供者可能由于机器假死等导致长连接还存活但是程序已经无法正常响应 。 故障剔除功能会将这部分异常的服务提供者进行降级,使得客户端的请求更多地指向健康节点。当异常节点的表现正常后,故障剔除功能会对该节点进行恢复,使得客户端请求逐渐将流量分发到该节点。
  SOFARPC 单机故障剔除模块是 FaultToleranceModule, 通过SOFARPC 的 SPI 机制完成模块的自动化加载,以完成该功能的插入。 FaultToleranceModule 模块包含了两个重要部分:
1、subscriber 事件订阅器 。 通过订阅事件总线 EventBus 的事件,以零侵入方式完成 RPC 调用的统计和信息收集。
2、regulator 调节器 。 根据收集的 RPC 调用信息,完成服务调用或服务权重的调节,达到服务降级和服务恢复的目的。内置了信息收集器、计算策略、度量策略、恢复策略, 是单机故障剔除的核心实现。

FaultToleranceModule 主要关心两种调用事件:
1、同步结果事件: ClientSyncReceiveEvent, 收集和统计 RPC 同步 调用次数和出现异常的次数。
2、异步结果事件: ClientAsyncReceiveEvent,收集和统计 RPC 异步 调用次数和出现异常的次数。

如图所示是整个 SOFARPC 故障自动剔除功能的整体结构:
在这里插入图片描述
整体流程如下:
1、在 RPC 同步或异步调用完成后会向事件总线 EventBus 发送对应事件。
2、FaultToleranceModule 的订阅者收到对应事件,开始进行调用统计,将统计结果存储到 信息收集器中。并在第一次存储时触发 Measure 定时任务。
3、Measure 定时任务会在指定窗口时间定时执行。获取信息收集器的所有信息并交给 度量策略 做度量计算,并开启计算线程负责进行计算和服务调节。
4、计算线程首先会 调用 计算策略,计算策略根据 度量策略的计算结果判断是否执行降级或恢复。
5、如果进行降级,则调用降级策略执行降级操作,如打印日志或降低故障服务权重。
6、如果进行恢复,则调用恢复策略执行恢复操作,如打印日志或恢复故障服务权重。
7、最后在 RPC 调用的时候,负载均衡器(默认是 random + weight 负载均衡)会根据根据权重来选择服务。权重越低的服务被调用概率越小,流量流入更少;权重越大的服务,被调用概率越大,流量流入增多。

SOFARPC 泛化调用实现

  使用泛化调用,将相应的请求包装成泛化调用,就能够实现不依赖接口 jar 包,多语言调用 RPC 服务,避免重复开发。泛化调用的关键就是对象表示和序列化,SOFARPC 提供了 GenericObject 等对象来表示参数对象或者返回值对象,而将GenericObject 对象序列化成目标对象,或者将返回值反序列化成 GenericObject 对象,是 SOFARPC 实现泛化的关键。如图所示为SOFARPC 泛化调用的流程图:
在这里插入图片描述
1.泛化 API 调用时,会加载泛化过滤器,作用是做一些参数转换,同时设置序列化工厂类型。
2.SOFARPC 在使用 SOFABolt 进行网络调用前,会创建 context 上下文并传递给 SOFABolt,上下文中包含着序列化工厂类型信息,这个信息将决定使用何种序列化器,同时这个上下文将流转于整个调用期间。
3.在 SOFABolt 正式发送数据之前,会将 GenericObject 对象序列化成普通对象的字节流,这样,服务提供方就不必关心是否为泛化调用,从图中可见,提供方不用对泛化调用做任何改变 —— 这是 SOFARPC 泛化区别于其他 RPC 泛化的关键。
4.当提供方成功接收请求后,使用普通序列化器即可反序列化数据,只需要正常调用并返回即可。
5.当消费者的 SOFABolt 接收到响应数据后,便根据 context 的序列化类型,对返回值做反序列化,即将普通的字节流反序列化成 GenericObject 对象 —— 因为客户端有可能不知道返回值的 Class 类型。
6.最终,泛化 API 即可得到 GenericObject 类型的返回值。

  相比较其他 RPC 框架两端都需要对泛化进行支持,SOFARPC 显得要友好的多。服务端无需感知是否泛化,一切都是由客户端进行处理。带来的好处是:应用如果想要支持泛化,不需要改动服务端,只需要修改客户端即可。这是和其他 RPC 框架泛化调用最大的区别。
  实现方式:通过SOFA-Hessian 序列化支持泛化序列化,在进行泛化调用时,bolt 会根据上下文的序列化标记来使用对应的序列化器,SOFA-Hessian 特有的泛化序列化器可将 GenericObject 对象序列化成目标对象的字节流,服务端按正常反序列化即可。SOFA-Hessian 特有的泛化反序列化器也可将目标返回值反序列化成 GenericObject 等对象。

SOFARPC 数据透传

  在 RPC调用中,数据的传递,是通过接口方法参数来传递的,需要接口方定义好一些参数允许传递才可以,在一些场景下,我们希望,能够更通用的传递一些参数,比如一些标识性的信息。业务方可能希望,在每一次调用请求中都能够传递一些自定义的信息到下游。甚至也希望下游能够将一些数据传递回来。
  而数据透传功能,就是指数据不需要以作为方法参数的形式在调用链路中进行传递,而是直接存储到调用上下文中,之后通过 RPC 的内置对象,进行传递,调用双端可从上下文中获取数据而不需要去关注数据的传输过程。
  SOFARPC 提供的数据透传支持请求数据透传(客户端向服务端)和响应数据透传(服务端向客户端)。
在这里插入图片描述
1、用户通过 SOFARPC 提供的 API 进行数据传递设置
2、SOFARPC 在调用传输前,将透传的数据进行打包获取
3、进行正常的序列化和反序列化
4、SOFARPC 在反序列化时将用户设置的透传数据写回 Context
5、服务端用户即可进行获取使用

SOFARPC 序列化

  RPC 调用通过网络传输相关的调用方法及参数,在这个网络传输过程中,内存中的对象是无法直接传输的,只有二进制字节才能在网络上传输。而为了实现调用对象在网络上的传输,必须通过序列化实现对象 -> 字节的过程,以及反序列化实现字节 -> 对象的过程。在网络协议模型中,序列化属于应用层协议的一部分。SOFARPC 支持的序列化协议有:SOFA-Hessian、Protobuf、Json。

C# WinForm和Sherlock进行对接 文章目录 前言 一、使用步骤 二、使用步骤 1.引入库 2.读入数据 总结 前言 本人公司最近在做一款瑕疵检测的视觉项目,项目中利用Sherlock从相机中取图和对图像进行视觉处理,然后将图像和数据传输到项目中。这过程中软件需要和Sherlock进行图像和数据的传递,这就需要WinForm和Sherlock进行对接,但我在网上查找了许久能用上的资料十分有限,所以我决定写下这篇文章,来做一次总结,同时也希望能帮助到同样在为此问题困扰的你。 一、使用步骤 废话不... 阅读详情

相关推荐

【Qt实战项目】记事本完整项目

效果图如下所示: 全部代码如下: #include “notepad.h” #include int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.showMaximized(); return a.exec(); }

YIZHILIUSHA2020的博客 575

最近很火的SOFARPC是什么?带你快速入门SOFARPC

上次我们介绍了sofaboot: https://blog.youkuaiyun.com/csdnerM/article/details/124750460 这次我们来介绍SOFAStack家族中的SOFARPC 首先我们知道了sofaboot是在Spring Boot 的基础上,提供了诸如 Readiness Check,类隔离,日志空间隔离等等能力。 那么,sofarpc又是什么呢? SOFARPC 是蚂蚁金服开源的一款基于 Java 实现的 RPC 服务框架,为应用之间提供远程服务调用能力,SOFARPC 是

编码人生 4712

Goose开源程序本地机上 AI 代理,能够从头到尾自动执行复杂的开发任务。Goose 不仅可以提供代码建议,还可以自主构建整个项目、编写和执行代码、调试故障、编排工作流程以及与外部 API 交互

Goose开源程序 是您的本机上 AI 代理,能够从头到尾自动执行复杂的开发任务。Goose 不仅可以提供代码建议,还可以自主构建整个项目、编写和执行代码、调试故障、编排工作流程以及与外部 API 交互。无论您是在构建想法原型、优化现有代码,还是管理复杂的工程管道,goose 都能适应您的工作流程并精确执行任务。

struggle2025的博客 2041

SOFARPC(笔记)

SOFARPC

weixin_46949627的博客 3024

STM32使用内部RC振荡器作为系统时钟开发项目--内晶振启动模板工程

STM32使用内部RC振荡器时,OSC32_IN,OSC32_OUT接法: 1)对于100脚或144脚的产品,OSC_IN应接地,OSC_OUT应悬空。 2)对于少于100脚的产品,有2种接法:    2.1)OSC_IN和OSC_OUT分别通过10K电阻接地。此方法可提高EMC性能。    2.2)分别重映射OSC_IN和OSC_OUT至PD0和PD1,再配置PD0和PD1为推挽输出

overflyme的博客 1万+

群晖设置公网ipv6方式域名解析访问

群晖、IPV6、域名解析

爬山虎的博客 2万+

SOFA RPC 详细介绍

简介   SOFA 作为蚂蚁金服自主研发的分布式的系统中间件,包含金融级云原生的架构所需要的各种组件,其中包括微服务的研发框架、RPC调用框架、服务的注册中心、分布式定时任务、限流/熔断机制、动态配置的推送功能、分布式的链路追踪、Metrics监控、分布式高可用队列、分布式事务框架、分布式数据库代理等组件。是在金融领域完整的分布式解决方案。   SOFA作为蚂蚁金服的开源的高性能RPC框架。   ...

初学者 1万+

实战篇【2】-H3C防火墙开局基础配置

本篇文章为“H3C防火墙开局基础配置”,主要涵盖配置管理地址、聚合端口、安全区域、安全策略、静态路由、ACL,WEB和SSH远程管理、Console、SNMP、NTP时钟、日志主机等内容,对比交换机配置开局,增加两处配置,安全区域和安全策略。方便调试人员远程管理、调试。

weixin_47402139的博客 1万+

SOFARPC 框架

微服务已经被广泛应用在工业界,微服务带来易于团队并行开发、独立部署、模块化管理等诸多优点。然而微服务将原单体拆分多个模块独立部署,各模块之间链接变得错综复杂,在大规模分布式系统中这种复杂链路给维护带来了诸多困难。如果对整个微服务架构不能了然于胸,便很难理清各模块之间的调用关系。例如修改一个服务接口,对哪些服务造成影响不能快速定位。SOFARPC 在 5.4.0 以后提供了链路追踪技术,可以有效协助开发运营人员进行故障诊断、容量预估、性能瓶颈定位以及调用链路梳理。

专注Java(全栈)应用开发,求知若渴,虚心若愚,talk is cheap, show me the code. 826

LVGL 丝滑菜单3(Silk Menu)

h。

摸鱼专家 91

Spring AI从入门到精通:构建智能Spring应用的全面指南

随着人工智能技术的快速发展,将大语言模型(LLM)与企业应用集成已成为趋势。Spring AI作为Spring官方推出的AI集成框架,为开发者提供了便捷、标准化的方式来构建智能应用。本文将从基础概念到高级应用,全面介绍Spring AI的核心功能与实践技巧。Spring AI 是 VMware 于 2023 年推出的开源框架,旨在简化大语言模型(LLM)与 Spring 应用的集成。它提供了统一的 API 抽象,支持多种 LLM 供应商,包括 OpenAI、Azure OpenAI、Hugging Face

qq_36929638的博客 1069

Diem 公共 FullNode 配置与运行实战指南:连接 testnet 全流程(源码与 Docker 双方案)

本篇技术指南以 Diem 官方教程《Configure and run a public FullNode》为骨架,完整讲解如何配置一个连接到 testnet(Diem 支付网络的公开测试网络)的公共 FullNode:涵盖前置概念、源码编译运行与 Docker Compose 两条部署路径、`public_full_node.yaml` 配置文件的逐字段解析,以及如何通过 metrics 指标、

gitblog_00033的博客 447

【精细解读】xapp585(多通道LVDS接口ADC)

xapp585的参考设计有Verilog和VHDL两种源码。

FPGA艺术家的博客 532

sofa-rpc 学习总结

sofa-rpc 学习总结 如下是client调用流程图: client调用样例代码: @Test public void testHelloSyncService() { // 指定注册中心 RegistryConfig registryConfig = new RegistryConfig() .setProt...

xhpscdx的专栏 1604

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【SOFARPC】SOFA入门实战

SofaBoot+Sofarpc+zk使用案例

极客中年的博客 1948

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

蚂蚁金服 Java RPC 开源框架—SOFARPC

SOFARPC 简介 SOFARPC 是一个高可扩展性、高性能、生产级的 Java RPC 框架。在蚂蚁金服 SOFARPC 已经经历了十多年及五代版本的发展。SOFARPC 致力于简化应用之间的 RPC 调用,为应用提供方便透明、稳定高效的点对点远程服务调用方案。为了用户和开发者方便的进行功能扩展,SOFARPC 提供了丰富的模型抽象和可扩展接口,包括过滤器、路由、负载均衡等等。同时围绕 SOF...

zhenghhgz的博客 1831

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

sofa rpc入门

SOFARPC 是一个高可扩展性、高性能、生产级的 Java RPC 框架。SOFARPC 致力于简化应用之间的 RPC 调用,为应用提供方便透明、稳定高效的点对点远程服务调用方案。为了用户和开发者方便的进行功能扩展,SOFARPC 提供了丰富的模型抽象和可扩展接口,包括过滤器、路由、负载均衡等等。同时围绕 SOFARPC 框架及其周边组件提供丰富的微服务治理方案。 功能特性 透明化、高性能的...

持之以恒! 3100

SOFA RPC 源码解析 —— 服务调用

本文深入解析了SOFARPC框架的服务调用机制,涵盖从代理对象创建到网络通信的全流程实现。重点剖析了动态代理工厂、过滤器链设计、集群容错策略(Failover)、负载均衡算法(随机加权)等核心组件,详细展示了连接管理、协议编解码、异步调用等关键环节的实现细节。文章还探讨了超时控制、重试策略等容错机制以及连接池优化、序列化性能提升等关键技术优化点,全面呈现了SOFARPC作为高性能分布式调用框架的架构特点和设计思想。

油墨香^-^的博客 254

Spring Boot SOFARPC 从入门到精通

本文介绍了蚂蚁集团开源的SOFARPC框架与SpringBoot的整合应用。SOFARPC是一款基于Java的高性能、高可扩展性RPC框架,采用Netty网络通信框架和微内核插件架构,支持服务注册发现、负载均衡等功能。文章详细阐述了环境搭建、服务定义与发布、消费者调用等基础使用,并深入讲解了高级特性包括多种调用方式、过滤器配置、负载均衡策略等。同时介绍了集群容错机制、服务降级熔断方案,以及性能优化手段如连接池配置和序列化优化。此外还涵盖了监控运维、测试调试方法和常见问题解决方案,为开发者提供了SOFARPC

油墨香^-^的博客 1011

浅谈阿里巴巴蚂蚁金服SOFA微服务开源框架

前言: 提到分布式、微服务,大部分人首先想到的可能是SpringCloud、Duubo等主流框架,但事实上在SpringCloud还未出现之际,蚂蚁金服内部就已经有了一套比较完整的金融级分布式架构Sofa,并且到目前为止,经历了大大小小比较完善的闭环金融场景,如双十一、双十二等。说来也惭愧,之前并未关注到Sofa早已开源,所以一直不敢发布有关Sofa的相关文章,如果对Sofa知之甚少的小伙伴,接下来就和我一起进入一个新世界:Sofa分布式微服务架构。 1.Sofa结构图: ...

weixin_42070918的博客 1万+

【剖析 | SOFARPC 框架】系列之 SOFARPC 泛化调用实现剖析

SOFAScalable Open Financial Architecture是蚂蚁金服自主研发的金融级分布式中间件,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。本文为《剖析 | SOFARPC 框架》第七篇,作者莫那·鲁道 ,来自 E签宝。《剖析 | SOFARPC 框架》系列由 SOFA 团队和源码爱好者们出品,SOFARPC 源码解析系列,官方目录目前已经全...

weixin_33781606的博客 1666

SOFARPC —— Generic Service (泛化调用) 解析

今晚心情无比激动,多云转晴!原因在于弄懂些 Generic Service 实现原理,很有成就感。 各位看官莫笑,今晚,小小的收获,也是非常满足的。下面进入正题! 一、前言 普遍RPC在客户端需要提供接口,如果不提供则无法进行调用。同时,因为客户端也依赖提供的接口,服务端的升级、优化所带来的更新,客户端也要及时的更新API,否则会带来影响。这样,就带来了依赖接口,常常更新API(接口)...

weixin_34082789的博客 885

SaaS产品安全加固:GitHub_Trending/sa/saas-landingpage数据保护最佳实践

GitHub_Trending/sa/saas-landingpage是一个功能强大的SaaS产品模板,为开发者提供了快速构建安全可靠的SaaS应用的基础。本文将分享针对该项目的数据保护最佳实践,帮助你在开发过程中有效加固产品安全,保护用户数据安全。 ## 🔍 安全现状分析:从数据流量看保护必要性 在开始安全加固之前,让我们先了解一下SaaS产品面临的安全挑战。通过对大量SaaS应用的数据分

gitblog_00699的博客 848

【剖析|SOFARPC 框架】系列之 SOFARPC 注解支持剖析

1、前言 在 SOFABoot 环境下,SOFARPC 提供三种方式给开发人员发布和引用 RPC 服务: XML 方式(配置) Annotation 方式(注解) 编程 API 方式(动态) 编程 API 方式与Spring 的 ApplicationContextAware 类似。XML的方式依赖于在xml中引入 SOFA 命名空间,利用 Bean...

weixin_34186950的博客 879

【剖析 | SOFARPC 框架】之SOFARPC 连接管理与心跳剖析

前言 在 RPC 调用过程中,我们经常会和多个服务端进行远程调用,如果在每次调用的时候,都进行 TCP连接,会对 RPC的性能有比较大的影响,因此,实际的场景中,我们经常要对连接进行管理和保持。 SOFARPC应用心跳包以及断线重连实现,结合系统tcp-keepalive机制,来实现对RPC连接的管理和保持。 连接管理 首先我们将会介绍连接管理相关的一些...

weixin_34034670的博客 840

SOFA原理学习--sofa rpc入门示例

       最近在项目开发中有用到sofa-rpc框架,其是蚂蚁金服开源的,简单的看了一下源码其和阿里巴巴另外一个比较出名的RPC框架Dubbo类似,其实sofa-rpc提供的dubbo协议最终就是使用的Dubbo的功能(sofa-rpc直接将dubbo的jar引入),所以如果对Dubbo有所了解的人我感觉在sofa-rpc学习上也是很快的。 SOFARPC 简介     SOFARPC ...

井底之蛙 3万+
上一篇: Spring
下一篇: Maven
K. Bob
博客等级 码龄8年 82粉丝 294原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值