Dubbo

  • 架构的演变过程

    • 定义:所有的内容都在一个war里,布署一个tomcat
    • 优点:简单,开发速度快,成本低
    • 缺点:偶合度高,只能用一种语言,扩展性差
  • 垂直架构:

    • 定义:按业务模块划工程,每个业务模块就是一个war,布署到一个tomcat
    • 优点:相对解偶,维护成本相对易于拓展,技术较多
    • 缺点:不利于开发、扩展、维护。代码之间存在数据、方法的冗余
  • 分布式:

    • 定义: 核心业务抽取出来,作为独立的服务, 每个业务打成一个war,布署到一个tomcat,通过远程调用服务
    • 优点: 利于开发、扩展、维护,代码没有方法的冗余,技术较多
    • 缺点:服务单点故障,IP写死,一旦服务提供者不可用了,功能就不行了
  • 流动计算架构(SOA)

    • 定义 : 在分布式的基础,加上服务调配与治理 注册中心
    • 优点: 利于开发、扩展、维护,代码没有方法的冗余,技术较多。注册中可以集群,实现高可用,负载均衡
    • 缺点:操作的都相同的数据库,数据库压力比较大,但数据要同步,数据维护比较麻烦
  • 微服架构

    • 定义:以完成具体某个功能为单位,拥有处理业务与存储数据的能力,功能相对简单。通过rest api的方式调用
    • 优点:利于开发、扩展、维护,代码没有方法的冗余,技术较多。注册中可以集群,实现高可用,负载均衡,服务治理、熔断降级。。。。。随时加入集群
  • RPC组件
    一个RPC架构里包含如下4个组件:

    • 客户端(Clicent):服务调用者
    • 客户端存根(Client Stub):存放服务端地址信息,将客户端的请求参数打包成网络消息,再通过网络发送给服务方
    • 服务端存根(Server Stub):结束客户端发送过来的消息并解包,再调用网络服务
    • 服务端(Server):服务提供者
  • RPC调用
    1、 服务调用方(client)调用以本地调用方式调用服务;

    2、 client stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体在Java里就是序列化的过程

    3、 client stub找到服务地址,并将消息通过网络发送到服务端;

    4、 server stub收到消息后进行解码,在Java里就是反序列化的过程;

    5、 server stub根据解码结果调用本地的服务;

    6、 本地服务执行处理逻辑;

    7、 本地服务将结果返回给server stub;

    8、 server stub将返回结果打包成消息,Java里的序列化;

    9、 server stub将打包后的消息通过网络并发送至消费方;

    10、 client stub接收到消息,并进行解码, Java里的反序列化;

    11、 服务调用方(client)得到最终结果。

posted @ 2020-07-23 17:22  MikeyYN  阅读(137)  评论(0)    收藏  举报