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)得到最终结果。

浙公网安备 33010602011771号