SOFA RPC 详细介绍
简介
SOFA 作为蚂蚁金服自主研发的分布式的系统中间件,包含金融级云原生的架构所需要的各种组件,其中包括微服务的研发框架、RPC调用框架、服务的注册中心、分布式定时任务、限流/熔断机制、动态配置的推送功能、分布式的链路追踪、Metrics监控、分布式高可用队列、分布式事务框架、分布式数据库代理等组件。是在金融领域完整的分布式解决方案。
SOFA作为蚂蚁金服的开源的高性能RPC框架。
SOFA所做的工作就是简化应用之间的RPC调用,为应用提供高效的点对点的远程调用服务解决方案。也提供了很多的用户扩展功能,SOFA提供了丰富的模型和抽象可扩展接口,包括过滤器、路由、负载均衡等等。
特性
- 1、透明高性能远程调用
- 2、多服务路由负载均衡策略
- 3.、多种注册中心集成
- 4、多协议支持
- 5、支持多种调用方式
- 6、支持熔断机制
- 7、有强大的扩展功能
架构
SOFA RPC从上到下可以分为两层。包含了核心组件(接口、API、公共包)以及通用实现。功能实现层就是基于用户功能的一些小扩展。
框架原理分析
- 1、首先客户端发起请求调用Stub
- 2、生成Stub,拦截调用的信息
- 3、通过路由寻址操作找到从路由表中和注册中心中找到对应的调用的服务的地址
- 4、通过Java序列化的方式将数据转换为二进制进行传递
- 5、服务器接收到请求之后进行解码操作
- 6、解码完成之后对于对象进行反序列化的操作
- 7、通过反射调用对应的发布的服务Bean
- 8、进行进一步的业务处理逻辑
SOFA目录结构
SOFARPC源码主要模块包括all(发布打包模块),
- bom(依赖管控模块,用于依赖版本管控),
- example(示例模块),
- test(测试模块,包含集成测试),
- core(api:API模块,涵盖各种基本流程接口、消息、上下文、扩展接口等;
- common:common 公共模块,涵盖工具类utils、数据结构;
- exception:异常模块,涵盖各种异常接口接口等)。其中
- core模块包括bootstrap(启动实现模块,用于启动类,发布或者引用服务逻辑、以及registry的操作),
- proxy(代理实现模块,用于接口实现代理生成),
- client(客户端实现模块,用于发送请求、接收响应、连接维护、路由、负载均衡、同步异步等),
- server(服务端实现模块,用于启动监听、接收请求,发送响应、业务线程分发等),
- filter(拦截器实现模块,用于服务端和客户端的各种拦截器实现),
- codec(编解码实现模块,例如压缩,序列化等),
- protocol(协议实现模块,用于协议的包装处理、协商)
- transport(网络传输实现模块,用于TCP连接的建立,数据分包粘包处理,请求响应对象分发等),
- registry(注册中心实现模块 实现注册中心,例如zk等)
以上介绍的是比较常用的模块
实现原理
对于RPC远程调用服务模型来说是通常是需要定义服务的双方,而服务的双方就是服务消费方和服务提供方,对应于RPC来说就是调用端和被调用端。可以理解为客户端和服务端。也可以称服务提供方为服务(Server)而消费方称为引用(reference)
- 1、当SOFA应用启动的时候如果发现需要设置RPC服务的话就会在注册中心上维护一个服务列表
- 2、当需要使用这个服务的时候会从配置中心获取到服务的地址和其他信息
- 3、配置中心收到请求之后就会给对应的服务找到对应的订阅方
- 4、当服务消费方拿到地址之后就会直接发起服务调用操作。
客户端调用流程
服务端调用流程
从上面时序图可以看到,一个最简单的入门HelloWorld的调用过程中,客户端也就说服务消费方的调用流程要比服务提供方的调用流程复杂的多。要处理的东西也比较多
总结
通过上面的内容总结了一下对于SOFA这个开源框架的简单的入门介绍,相比较于其他的入门介绍又做了比较细致的分析。结尾还提供了两个时序图的比较。通过对于上面内容的分析,自己也对SOFA有了一个全新的认识,当然SOFA框架还在不停的更新中,希望自己可从中学到更多的知识。
SOFA RPC 详细介绍相关推荐
- Hadoop生态系统的详细介绍
hadoop生态系统的详细介绍 简介 Hadoop是一个开发和运行处理大规模数据的软件平台,是Appach的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算.今 ...
- Spring Cloud的核心成员、以及架构实现详细介绍
微服务架构系列 高并发架构系列:服务注册与发现的实现原理.及实现优劣势比较 阿里P8架构师谈:Restful.SOAP.RPC.SOA.微服务之间的区别 阿里P8架构师谈:微服务技术架构.监控.Doc ...
- unreal4怎么设置游戏模式_ue4(虚幻4)基础 Unreal4 服务器模式详细介绍
ue4(虚幻4)资讯 Unreal4 服务器模式详细介绍 概述 UE4 架构在构建时就充分考虑了多人游戏因素.只要您遵守基本的架构原则,通常就无需太费事即可将单人游戏体验扩展为多人游戏. UE4 网络 ...
- 所有XP_SP2服务的详细介绍
下面是所有XP_SP2服务的详细介绍(计算机和网络环境的不同,可能导致默认开启的服务有所不同!) 01.●显示名称:Alerter ◎微软描述:通知所选用户和计算机有关系统管理级警报.如果服务停止,使 ...
- RabbitMQ学习总结(一)——基础概念详细介绍
2019独角兽企业重金招聘Python工程师标准>>> 一.基础概念详细介绍 1.引言 你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相 ...
- hadoop生态系统的详细介绍-详细一点
前提 日常喜欢看一些微信分享的好文,总结下来,可以作为过滤器吧(节约更多人的时间!),在这里引用的是别人的文章!对原文的作者表示感谢!确实写的很好! hadoop生态系统的详细介绍 简介 Hadoop ...
- Raft算法详细介绍
raft是一个共识算法(consensus algorithm),所谓共识,就是多个节点对某个事情达成一致的看法,即使是在部分节点故障.网络延时.网络分割的情况下.这些年最为火热的加密货币(比特币.区 ...
- 新浪微博新兵训练营系列课程——平台RPC框架介绍
新浪微博新兵训练营系列课程--平台RPC框架介绍 课程大纲 1.RPC简介 1.1 什么是RPC 1.2 RPC与其他远程调用方式比较 2.Motan RPC框架 2.1 RPC服务框架 2.2 Mo ...
- 【语义分割】1、语义分割超详细介绍
文章目录 一.分割方法介绍 1.1 Fully Convolutional Networks [2015] 1.1.1 FCN 1.1.2 ParseNet 1.2 Encoder-Decoder B ...
最新文章
- SAP MM初阶之包含有Service item的服务采购订单
- 第十五届全国大学生智能车竞赛山东赛区比赛成绩和奖项
- 语言可以直接访问位元元址_OOP语言中FBC问题对应用框架的影响
- 稳定和高质量是最好的选择
- C和指针之字符串编程练习3
- 在Oracle中使用JDBC插入功能
- c语言编程游戏开代码错误,[蓝桥杯][历届试题]数字游戏 (C语言代码)(兄弟们帮我看一下为什么运行错误86%)...
- 学习编程的条件是什么?
- 2017年SEO行业的前景以及未来趋势
- excel中怎么把超链接的结果(图片)直接显示出来_把500张产品图片导入Excel里?用这个方法可超速完成,码住...
- 使用ASP.NET Atlas实现拖放(Drag Drop)效果(下)
- 装机必备:借用IDM实现百度云高速下载
- 编译caffe错误查询
- 西电计算机考研数学,西安电子科技大学21考研数学高分上岸学长经验分享
- visio2010取消连接线交叉出的跨线
- node项目报错had too many unstable restarts (16). Stopped. “errored”
- java工作流引擎Jflow父子流程demo
- 2013-C++第15周项目参考解答链接集
- 运营简史:互联网运营的20年发展与演变
- 站长天下:buyren网上购物论坛的发展
热门文章
- python selenium 点击开始按钮,python selenium-点击页面而不使用next按钮
- Feature Layer with selection(ArcGIS JS Api 图上点选)
- 隐藏方法不能实现多态性
- nginx+Tomcat实现动静分离架构
- Debian下PostgreSQL修改密码与配置详解
- Use grep to report back only line numbers
- 《Adobe Photoshop大师班:经典作品与完美技巧赏析》即将上市
- 内核使用硬件ip的dma,dma_alloc_coherent 与 dma_alloc_writecombine (转)
- Swift 3到5.1新特性整理
- vue-router向子组件传递参数