最近很火的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的快速启动就已经成功完成了!!


相关文章
|
缓存 NoSQL 关系型数据库
几种分布式锁的实现方式
几种分布式锁的实现方式
380 2
|
存储 SQL 安全
加密后的数据如何进行模糊查询?
在数据安全和隐私保护日益重要的今天,加密技术成为保护敏感数据的重要手段。然而,加密后的数据在存储和传输过程中虽然安全性得到了提升,但如何对这些数据进行高效查询,尤其是模糊查询,成为了一个挑战。本文将深入探讨如何在保证数据安全的前提下,实现加密数据的模糊查询功能。
2662 0
|
Java API Maven
敏感数据的保护伞——SpringBoot Jasypt加密库的使用
我们经常会在yml配置文件中存放一些敏感数据,比如数据库的用户名、密码,第三方应用的秘钥等等。这些信息直接以明文形式展示在文件中,无疑是存在较大的安全隐患的,所以今天这篇文章,我会借助jasypt实现yml文件中敏感信息的加密处理。
6159 1
敏感数据的保护伞——SpringBoot Jasypt加密库的使用
|
JSON 负载均衡 Java
Springboot整合gRPC
Springboot整合gRPC
1118 0
|
存储 运维 算法
蚂蚁Raft一致性算法库SOFAJRaft深入分析
大家好,我是 V 哥。SOFAJRaft 是蚂蚁金服开源的一款基于 Raft 共识算法的 Java 实现,特别适合高负载、低延迟的分布式系统。它支持 Multi-Raft-Group,能同时处理多个 Raft 集群,具备扩展性和强一致性保障。项目源自百度的 braft,并在性能和功能上进行了优化。本文将深入探讨 SOFAJRaft 的核心源码实现,包括 Leader 选举、日志复制、一致性维护、日志管理和快照机制等。通过关键代码展示其在节点初始化、日志复制、一致性维护等方面的设计思路。希望帮助大家更好地理解 Raft 算法,求关注和点赞,感谢!
585 2
蚂蚁Raft一致性算法库SOFAJRaft深入分析
|
存储 Java 数据库
SpringBoot整合Spring Data Elasticsearch
Spring Data Elasticsearch提供了ElasticsearchTemplate工具类,实现了POJO与elasticsearch文档之间的映射
874 0
|
存储 安全 Java
2025 年最新 40 个 Java 基础核心知识点全面梳理一文掌握 Java 基础关键概念
本文系统梳理了Java编程的40个核心知识点,涵盖基础语法、面向对象、集合框架、异常处理、多线程、IO流、反射机制等关键领域。重点包括:JVM运行原理、基本数据类型、封装/继承/多态三大特性、集合类对比(ArrayList vs LinkedList、HashMap vs TreeMap)、异常分类及处理方式、线程创建与同步机制、IO流体系结构以及反射的应用场景。这些基础知识是Java开发的根基,掌握后能为后续框架学习和项目开发奠定坚实基础。文中还提供了代码资源获取方式,方便读者进一步实践学习。
3119 2
|
负载均衡 算法 微服务
基于gRPC的注册发现与负载均衡的原理和实战
基于gRPC的注册发现与负载均衡的原理和实战
|
存储 监控 数据库
什么是聚集索引和非聚集索引?
【8月更文挑战第3天】
10365 6
|
消息中间件 存储 负载均衡
RocketMQ消费者消费消息核心原理(含长轮询机制)
这篇文章深入探讨了Apache RocketMQ消息队列中消费者消费消息的核心原理,特别是长轮询机制。文章从消费者和Broker的交互流程出发,详细分析了Push和Pull两种消费模式的内部实现,以及它们是如何通过长轮询机制来优化消息消费的效率。文章还对RocketMQ的消费者启动流程、消息拉取请求的发起、Broker端处理消息拉取请求的流程进行了深入的源码分析,并总结了RocketMQ在设计上的优点,如单一职责化和线程池的使用等。
RocketMQ消费者消费消息核心原理(含长轮询机制)