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


相关文章
|
1月前
|
Dubbo Cloud Native 网络协议
【Dubbo3技术专题】「服务架构体系」第一章之Dubbo3新特性要点之RPC协议分析介绍
【Dubbo3技术专题】「服务架构体系」第一章之Dubbo3新特性要点之RPC协议分析介绍
38 1
|
7月前
|
编解码 Dubbo 应用服务中间件
Alibaba开源Dubbo源码解析手册,竟引领出RPC的新潮流
前言 Apache Dubbo,一款由阿里巴巴于2011年开源的高性能Java RPC框架,自开源以来在业界产生了深远影响。有大量公司广泛使用,甚至很多公司的自研RPC框架中都能看到Dubbo的影子。Dubbo在国内服务化体系演进过程中扮演了重要角色。尽管经历了几年的沉寂,但在阿里巴巴重启对Dubbo的开源维护,Dubbo正在从微服务领域的高性能RPC框架逐步演变为一个完整的微服务生态。 对于开发者来说,深入了解Dubbo底层的架构设计和实现是一项挑战。因此,一份完整的、体系化的对Apache Dubbo进行深入原理剖析的手册就显得尤为重要。
|
1月前
|
Java fastjson 数据安全/隐私保护
【Dubbo3技术专题】「云原生微服务开发实战」 一同探索和分析研究RPC服务的底层原理和实现
【Dubbo3技术专题】「云原生微服务开发实战」 一同探索和分析研究RPC服务的底层原理和实现
40 0
|
1月前
|
XML 监控 Dubbo
【Dubbo3技术专题】回顾Dubbo2.x的技术原理和功能实现及源码分析(温故而知新)(一)
【Dubbo3技术专题】回顾Dubbo2.x的技术原理和功能实现及源码分析(温故而知新)
62 1
|
1月前
|
XML Dubbo Java
【Dubbo3技术专题】回顾Dubbo2.x的技术原理和功能实现及源码分析(温故而知新)(二)
【Dubbo3技术专题】回顾Dubbo2.x的技术原理和功能实现及源码分析(温故而知新)
21 2
|
2月前
|
Dubbo 中间件 应用服务中间件
【想进大厂还不会阅读源码】ShenYu源码-支持motan协议
ShenYu源码阅读📚。原来的插件只支持 motan2 协议,并且是硬编码的,本次修改使MotanRpcExt 得到增强。我们可以通过以上的线索来思考我们本次的阅读线索,贡献者是做了什么实现了增强motan插件、这个motan的插件的功能是什么。
35 2
|
6月前
|
Kubernetes Dubbo 应用服务中间件
GitHub标星35k+微服务深度原理实践进阶PDF,竟让阿里换下了Dubbo
最近一个粉丝分享了他悲惨的阿里面试故事,好不容易冲进三面,最后凉了! 关键在于微服务部分没回答好。 本人自己说在看到这些面试真题之后人都是懵的,之前这方面也没有很重视,结局就很可惜了。 今天先结合我这个粉丝的经历和面的题,分析一下微服务,以及我在这方面的学习经验也给大家分享一下。
|
8月前
|
Dubbo Java 应用服务中间件
Sentinel服务框架对接Dubbo服务框架整合开发指南
开源框架适配 为了减少开发的复杂程度,Sentinel 对大部分的主流框架都进行了适配,例如:Web Servlet、Dubbo、Spring Cloud、gRPC、Spring WebFlux 和 Reactor 等。
|
自然语言处理 Kubernetes 负载均衡
【Alibaba微服务技术系列】「Dubbo3.0技术专题」第一章之Dubbo3新特性概览的介绍说明
【Alibaba微服务技术系列】「Dubbo3.0技术专题」第一章之Dubbo3新特性概览的介绍说明
233 0
|
自然语言处理 Kubernetes Dubbo
【Alibaba微服务技术系列】「Dubbo3.0技术专题」第一章之Dubbo3新特性要点之RPC协议分析介绍
【Alibaba微服务技术系列】「Dubbo3.0技术专题」第一章之Dubbo3新特性要点之RPC协议分析介绍
169 0

热门文章

最新文章