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

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

上次我们介绍了sofaboot:

https://blog.csdn.net/csdnerM/article/details/124750460

这次我们来介绍SOFAStack家族中的SOFARPC



ec86637b53eecd03a8014ce57879ccab.png


首先我们知道了sofaboot是在Spring Boot 的基础上,提供了诸如

Readiness Check,类隔离,日志空间隔离等等能力。


那么,sofarpc又是什么呢?


首先我们知道了sofaboot是在Spring Boot 的基础上,提供了诸如

Readiness Check,类隔离,日志空间隔离等等能力。

那么,sofarpc又是什么呢?


image.png


下面是它的开源仓库地址:

https://gitee.com/sofastack/sofa-rpc

sofarpc的原理是什么?



628104557179761150c96a603499aeb0.png


1.当一个 SOFARPC 的应用启动的时候,如果发现当前应用需要发布 RPC 服务的话,那么 SOFARPC 会将这些服务注册到服务注册中心上。如图中 Service 指向 Registry。

2.当引用这个服务的 SOFARPC 应用启动时,会从服务注册中心订阅到相应服务的元数据信息。服务注册中心收到订阅请求后,会将发布方的元数据列表实时推送给服务引用方。如图中 Registry 指向 Reference。

3.当服务引用方拿到地址以后,就可以从中选取地址发起调用了。如图中 Reference 指向 Service。


熟悉springcloud的同学是不是觉得它和eureka和fegin之间的关系特别像?


我们来开始他的快速使用

大家也可以拉我仓库的代码下载起来直接启动:


https://gitee.com/WangFuGui-Ma/sofastack-quickstart


我们是按照sofaboot的方式进行框架的快速启动

所以如果不知道sofaboot怎么启动的话请查看我的上篇文章sofaboot的快速入门


https://blog.csdn.net/csdnerM/article/details/124750460


第一步,引入 RPC Starter:


        <dependency>
            <groupId>com.alipay.sofa</groupId>
            <artifactId>rpc-sofa-boot-starter</artifactId>
        </dependency>

image.png


第二步,编写xml文件


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:sofa="http://sofastack.io/schema/sofaboot"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://sofastack.io/schema/sofaboot   http://sofastack.io/schema/sofaboot.xsd"
       default-autowire="byName">
</beans>

1d18fd92e8034c2dabf396dd6338c87b.png


第三步,定义服务接口与实现

public interface HelloSyncService {
    String saySync(String string);
}


public class HelloSyncServiceImpl implements HelloSyncService {
    @Override
    public String saySync(String string) {
        return string;
    }
}

image.pngimage.png


第四步,服务端发布服务

在 xml 文件中编写如下配置。Spring 上下文在刷新时,SOFABoot 就将该服务实现注册到了服务器上,以 bolt 协议与客户端进行通信地址,并将地址等元数据发布到了注册中心(这里默认使用的本地文件作为注册中心)。


    <bean id="helloSyncServiceImpl" class="com.masiyi.sofaboot.HelloSyncServiceImpl"/>
    <sofa:service ref="helloSyncServiceImpl" interface="com.masiyi.sofaboot.HelloSyncService">
        <sofa:binding.bolt/>
    </sofa:service>

image.png


第四步,客户端引用服务

在 xml 文件中编写如下配置。Spring 上下文刷新时,SOFABoot 会生成一个RPC的代理 bean,即 personReferenceBolt 。这样就可以直接在代码中使用该 bean 进行远程调用了。

    <sofa:reference id="helloSyncServiceReference" interface="com.masiyi.sofaboot.HelloSyncService">
        <sofa:binding.bolt/>
    </sofa:reference>

image.png


第五步,运行

在 SpringBoot 的启动类中编码如下。其中利用 ImportResource 将上述的xml文件加载。


@ImportResource({ "classpath*:rpc-sofa-boot-starter-samples.xml" })
@SpringBootApplication
public class SofabootApplication {
    public static void main(String[] args) {
        SpringApplication springApplication = new SpringApplication(SofabootApplication.class);
        ApplicationContext applicationContext = springApplication.run(args);
        HelloSyncService helloSyncServiceReference = (HelloSyncService) applicationContext
                .getBean("helloSyncServiceReference");
        System.out.println(helloSyncServiceReference.saySync("hello , 王富贵"));
    }
}

image.png


这样就可以在容器中拿到服务类并且进行访问了

控制台输入打印:image.png


到此,一个sofarpc的快速启动就已经成功完成了!!


相关文章
|
5月前
|
Dubbo Cloud Native 网络协议
【Dubbo3技术专题】「服务架构体系」第一章之Dubbo3新特性要点之RPC协议分析介绍
【Dubbo3技术专题】「服务架构体系」第一章之Dubbo3新特性要点之RPC协议分析介绍
82 1
|
5月前
|
XML Dubbo Java
【Dubbo3技术专题】回顾Dubbo2.x的技术原理和功能实现及源码分析(温故而知新)(二)
【Dubbo3技术专题】回顾Dubbo2.x的技术原理和功能实现及源码分析(温故而知新)
71 2
|
5月前
|
XML 监控 Dubbo
【Dubbo3技术专题】回顾Dubbo2.x的技术原理和功能实现及源码分析(温故而知新)(一)
【Dubbo3技术专题】回顾Dubbo2.x的技术原理和功能实现及源码分析(温故而知新)
104 1
|
5月前
|
Dubbo 中间件 应用服务中间件
【想进大厂还不会阅读源码】ShenYu源码-支持motan协议
ShenYu源码阅读📚。原来的插件只支持 motan2 协议,并且是硬编码的,本次修改使MotanRpcExt 得到增强。我们可以通过以上的线索来思考我们本次的阅读线索,贡献者是做了什么实现了增强motan插件、这个motan的插件的功能是什么。
|
5月前
|
Java fastjson 数据安全/隐私保护
【Dubbo3技术专题】「云原生微服务开发实战」 一同探索和分析研究RPC服务的底层原理和实现
【Dubbo3技术专题】「云原生微服务开发实战」 一同探索和分析研究RPC服务的底层原理和实现
142 0
|
自然语言处理 Kubernetes 负载均衡
【Alibaba微服务技术系列】「Dubbo3.0技术专题」第一章之Dubbo3新特性概览的介绍说明
【Alibaba微服务技术系列】「Dubbo3.0技术专题」第一章之Dubbo3新特性概览的介绍说明
260 0
|
SQL 存储 Java
猿创征文|手把手教你微服务分布式事务与Seata框架源码分析(二)
猿创征文|手把手教你微服务分布式事务与Seata框架源码分析
204 0
 猿创征文|手把手教你微服务分布式事务与Seata框架源码分析(二)
|
监控 Dubbo Cloud Native
【深入浅出Sentinel原理及实战】「框架整合专题」Sentinel服务框架对接Dubbo服务框架整合开发指南(4)
【深入浅出Sentinel原理及实战】「框架整合专题」Sentinel服务框架对接Dubbo服务框架整合开发指南(4)
286 0
【深入浅出Sentinel原理及实战】「框架整合专题」Sentinel服务框架对接Dubbo服务框架整合开发指南(4)
|
XML 缓存 监控
【Dubbo3.0技术专题】回顾Dubbo2.x的技术原理和功能实现及源码分析(温故而知新)
【Dubbo3.0技术专题】回顾Dubbo2.x的技术原理和功能实现及源码分析(温故而知新)
236 0
【Dubbo3.0技术专题】回顾Dubbo2.x的技术原理和功能实现及源码分析(温故而知新)
|
存储 监控 IDE
【SpringCloud技术专题】「Resilience4j入门指南」(1)轻量级熔断框架的入门指南
【SpringCloud技术专题】「Resilience4j入门指南」(1)轻量级熔断框架的入门指南
470 0
【SpringCloud技术专题】「Resilience4j入门指南」(1)轻量级熔断框架的入门指南
下一篇
无影云桌面