Dubbo--RPC框架
1.Dubbo官方网站:
http://dubbo.apache.org/
2.单一应用架构:
打包成一个独立的单元(jar包和war包)
2.1.可伸缩性差:测试成本高,
2.2.可靠性差:一个模块出错,另外有关联的可会有错
2.3.耦合度高,难以定位错误发生在哪
2.4.项目易于管理,部署简单
3.垂直应用架构
当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,提升效率的方法之一 是将应用拆成 互不相干的几个应用 ,以提升效率。
此时,用于加速前端页面开发的Web框架(MVC)是关键。
用户系统、权限系统、商品系统、订单系统、物流系统....
特点:系统独立部署,每一个系统都有完整的前后端;
问题:各个系统无法做到完全独立,公共模块无法复用,系统之间通信比较麻烦;
4.RPC架构(分布式服务框架):
远程过程调用
应用直接调用服务,服务之间相互隔离
服务过多时,管理成本高,要部署好多机器
1. 客户端以本地调用的方式调用远程服务
2. client stub接收到调用后,将方法、参数等组装成能够进行网络传输的消息;
3. client stub查找服务地址,找到之后,将消息发送到服务端;
4. server stub收到消息之后,对收到的消息进行解码;
5. server stub根据解码结果,使用反射的方式调用本地服务;
6. 服务端执行完成之后将结果返回给Server stub;
7. server stub将返回结果打包成消息并发送给客户端;
8. client stub收到消息后,对结果进行解码
5.Dubbo框架:
Apache Dubbo 是一款高性能、轻量级的开源 Java 服务框架
Apache Dubbo |ˈdʌbəʊ| 提供了六大核心能力:面向接口代理的高性能RPC调用,智能 容错和负载均衡,服务自动注册和发现,高度可扩展能力,运行期流量调度,可视化的服 务治理与运维。
注册中心官方推荐使用zookeeper
0、容器负责启动、加载、运行服务提供者、消费者;
1、服务提供者在启动时,向注册中心注册自己提供的服务;
2、服务消费者在启动时,向注册中心订阅自己需要的服务;
3、注册中心返回服务提供者的地址列表给消费者; 如果有服务变更(服务的上线或下线),注册中心会基于长连接的方式推送变更 给消费者;
4、服务消费者从地址列表中,基于 软件负载均衡算法 ,选择一个服务提供者进 行调用,如果调用失败,可以重试其它提供者;
5、服务消费者和提供者,在内存中累计调用时间和调用次数,每分钟向监控中 心发送一次统计数据
6.Zookeeper:
一个开放源码的分布式应用程序协调服务,他是一个为分布式应用提供一致性服务的软件,
提供的功能包括:配置维护,域名服务,分布式同步,组服务等等;
在Java中其实主要用作 注册中心 使用