1. 基础知识

1.1 分布式基础理论

  1). 什么是分布式系统?

    分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统;

    随着互联网的发展,网络应用的规模不断扩大,常规的垂直应用架构无法应对,分布式服务架构以及流动计算架构势在必行,亟须一个治理系统确保架构有条不紊的演进;

  2). 应用架构的发展演变

    单一应用架构(ORM):   

      1. 添加新的功能后需要将整个项目重新进行打包,再分别部署到每一个服务器中;
      2. 随着项目规模的增大,单台服务器压力会增大,不利于维护,开发;

    垂直应用架构(MVC):     

      1. 前端界面变化频繁,需要实现界面和业务逻辑的分离;
      2. 应用不可能完全独立,大量的应用之间需要交互;

    分布式服务架构(RPC):

      RPC[Remote Procedure Call]: 远程过程调用, 是一种进程间的通信方式,是一种技术思想,而非规范。它允许程序调用另一个地址空间的过程或函数,而不用程序员显式编码远程调用的细节。

      

      RPC有两个核心模块:通讯、序列化;

      RPC框架:dubbo、gRPC、Thrift、HSF(High Speed Service Framework)

    流动服务架构(SOA):

      通过调度、治理中心,维护服务之间的复杂关系,实时管理服务集群容量,提高集群利用率;

            

1.2 Dubbo核心概念

  服务提供者:暴露服务的服务提供方,服务提供者在启动时,会向注册中心注册自己提供的服务;

  服务消费者:服务消费者在启动时,会向注册中心订阅自己所需的服务,从服务提供者的地址列表中,基于软负载均衡算法,选一台服务提供者进行调用;

  注册中心:注册中心会返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者;

  监控中心:服务提供者和消费者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心;

                         

1.3 Dubbo特性

  (1). 服务注册中心

    - 相比Hessian类RPC框架,Dubbo有自己的服务中心, 写好的服务可以注册到服务中心, 客户端从服务中心寻找服务,然后再到相应的服务提供者机器获取服务。通过服务中心可以实现集群、负载均衡、高可用(容错) 等重要功能。

    - 服务中心一般使用zookeeper实现,也有redis和其他一些方式。以使用zookeeper作为服务中心为例,服务提供者启动后会在zookeeper的/dubbo节点下创建提供的服务节点,包含服务提供者ip、port等信息。服务提供者关闭时会从zookeeper中移除对应的服务。

    - 服务使用者会从注册中心zookeeper中寻找服务,同一个服务可能会有多个提供者,Dubbo会帮我们找到合适的服务提供者,也就是针对服务提供者的负载均衡。

  (2). 负载均衡

    dubbo提供的负载均衡方式:

    - random 随机选提供者,并可以给提供者设置权重;

    - roundrobin 轮询选择提供者;

    - leastactive 最少活跃调用数,相同活跃数的随机,活跃数:指调用前后计数差。使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。

    - consistenthash 一致性hash,相同参数的请求发到同一台机器上。

  (3). 简化测试,允许直连提供者

    在开发阶段为了方便测试,通常系统客户端能指定调用某个服务提供者,那么可以在引用服务时加一个url参数去指定服务提供者。

  (4).服务版本,服务分组

    在Dubbo配置文件中可以通过制定版本实现连接制定提供者,也就是通过服务版本可以控制服务的不兼容升级;当同一个服务有多种实现时,可以使用服务分组进行区分。

2. 环境搭建

 

posted on 2024-01-19 10:05  VaeSSAQ  阅读(6)  评论(0)    收藏  举报