Dubbo学习(一)——dubbo学习背景

文章目录

  • 前言
  • 分布式基础理论
    • 什么是分布式系统
    • 发展演变
      • ORM
      • MVC
      • RPC
      • SOA
  • RPC(远程调用)
    • 什么是RPC
    • RPC工作原理
  • 为什么RPC要用到Dubbo
    • Dubbo的优势
      • 高性能
      • 可扩展性
      • 高可靠性
      • 监控和管理
    • 使用示例
    • 总结

前言

分布式基础理论

什么是分布式系统

分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统
分布式系统(distributed system)是建立在网络之上的软件系统。
随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进——dubbo。

发展演变

Dubbo学习(一)——dubbo学习背景_第1张图片

ORM

单一应用架构:一个项目装到一个服务器当中,也可以运行多个服务器每一个服务器当中都装一个项目。
缺点:1.如果要添加某一个功能的话就要把一个项目重新打包,在分别部署到每一个服务器当中去。2.如果后期项目越来越大的话单台服务器跑一个项目压力会很大的。会不利于维护,开发和程序的性能。
Dubbo学习(一)——dubbo学习背景_第2张图片

MVC

垂直应用架构:将应用切割成几个互不相干的小应用,在将每个小应用独立放到一个服务器上,如果哪一个应用的访问数量多就多加几台服务器。
缺点:
1、不能做到界面+业务逻辑的实现分离
2、应用不可能完全独立,大量的应用之间需要交互
Dubbo学习(一)——dubbo学习背景_第3张图片

RPC

分布式应用架构(远程过程调用):当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。

SOA

流动计算架构:在分布式应用架构的基础上增加了一个调度、治理中心基于访问压力实时管理集群容量、提高集群的利用率,用于提高机器利用率的 资源调度和治理中心(SOA) 是关键 (不浪费计算机资源)
Dubbo学习(一)——dubbo学习背景_第4张图片

RPC(远程调用)

什么是RPC

RPC [ Remote Procedure Call]是指远程过程调用,是一种进程问通信方式,他是一种技术的思想,而不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同。
Dubbo学习(一)——dubbo学习背景_第5张图片
RPC是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。

RPC工作原理

Dubbo学习(一)——dubbo学习背景_第6张图片

  1. Client像调用本地服务似的调用远程服务;
  2. Client stub接收到调用后,将方法、参数序列化
  3. 客户端通过sockets将消息发送到服务端
  4. Server stub 收到消息后进行解码(将消息对象反序列化)
  5. Server stub 根据解码结果调用本地的服务
  6. 本地服务执行(对于服务端来说是本地执行)并将结果返回给Server stub
  7. Server stub将返回结果打包成消息(将结果消息对象序列化)
  8. 服务端通过sockets将消息发送到客户端
  9. Client stub接收到结果消息,并进行解码(将结果消息发序列化)
  10. 客户端得到最终结果。

为什么RPC要用到Dubbo

Dubbo的优势

Dubbo作为一个成熟的RPC框架,具有以下一些优势:

高性能

Dubbo通过优化网络通信、序列化和反序列化等关键环节,实现了高性能的远程调用。它使用了NIO框架来提高网络通信的效率,使用了高效的序列化和反序列化算法来减少数据传输的开销。

可扩展性

Dubbo具有良好的可扩展性,它支持多种注册中心、负载均衡算法和协议扩展。我们可以根据具体的需求选择合适的组件来构建我们的分布式应用。

高可靠性

Dubbo提供了多种容错机制,包括重试、熔断、降级等。这些机制可以帮助我们应对网络故障、服务不可用等异常情况,提高系统的可靠性和稳定性。

监控和管理

Dubbo提供了丰富的监控和管理功能,包括服务治理、服务监控、流量控制等。这些功能可以帮助我们更好地管理和监控分布式应用,及时发现和解决问题。

使用示例

下面是一个简单的示例,展示了如何使用Dubbo进行远程调用:

// 定义接口
public interface HelloService {
    String sayHello(String name);
}

// 实现接口
public class HelloServiceImpl implements HelloService {
    @Override
    public String sayHello(String name) {
        return "Hello, " + name;
    }
}

// 服务提供者配置
<dubbo:service interface="com.example.HelloService" ref="helloService" />

// 服务消费者配置
<dubbo:reference interface="com.example.HelloService" id="helloService" />

// 服务调用
HelloService helloService = (HelloService) applicationContext.getBean("helloService");
String result = helloService.sayHello("Dubbo");
System.out.println(result);

通过以上示例,我们可以看到,使用Dubbo进行远程调用非常简单和方便。我们只需要定义接口、实现接口、配置服务提供者和服务消费者,就可以实现分布式应用的开发。

总结

RPC是分布式系统中不可或缺的一部分,它可以帮助我们实现服务之间的通信和协作。而Dubbo作为一个成熟的RPC框架,提供了高性能、可扩展性、高可靠性和监控管理等优势,使得分布式应用的开发变得更加简单和高效。

通过使用Dubbo,我们可以轻松构建分布式应用,并且能够更好地管理和监控系统。因此,RPC要用到Dubbo是非常合理和必要的选择。

你可能感兴趣的:(✿✿RPC框架,dubbo,学习)