分布式基本理解与Dubbo基本概念

学习dubbo之前,先要了解一下什么是分布式

分布式基础理论

什么是分布式系统

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

架构演变

单一应用架构:
问题:
1.扩展不容易,添加服务后,还得重新打包部署,随着服务不断增多,服务器压力越来越大
2.当有某个服务宕机的时候,会导致整个项目起不来
分布式基本理解与Dubbo基本概念
垂直应用架构:
将大应用拆成独立的小应用,如果某个模块的访问量大,就多放几台,解决了扩展问题
问题:
1.界面+业务逻辑的实现分离
2.应用部可能完全独立,大量的应用之间需要交互
分布式基本理解与Dubbo基本概念
分布式架构:
当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。
分布式基本理解与Dubbo基本概念
RPC
远程过程调用,是一种服务通信方式,他是一种技术的思想,而不是规范,它允许程序调用另一个地址空间的过程或函数,而不用程序要显示编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同。
RPC基本原理图:
分布式基本理解与Dubbo基本概念
分布式基本理解与Dubbo基本概念
影响一个RPC框架的性能
1.能否快速的在各个服务器创建起连接
2.序列化与反序列化的速度快不快
xml<json<二进制流

Dubbo(高性能的RPC框架)

作用

官网:
http://dubbo.apache.org/
1.面向接口代理的高性能RPC调用
开发者直接使用接口调用方法即可,无需了解底层实现
2.智能负载均衡
当有多个相同的服务时,会均匀的分配个各个服务,不会出现某一台服务器被调用的很多次,而另一台几乎没被调用过的情况
3.服务自动注册与发现
支持多种注册中心服务,服务的上下线实时感知
4.高度可扩展能力
java的序列化机制是有局限性的,比如不能跨语言,而且序列化后体积增大,可以使用Protocol
5.运行期流量调度
比如有100台服务器,当服务升级的时候,可以先让20台进行服务升级,剩下80台依旧使用老的服务,配置不同的路由规则,有一些请求去请求新的服务,当感觉新的服务用的稳定后,在将剩下的80台一点点都更换成新服务
6.可视化的服务治理与运维
通过web界面,能查看各个服务的情况

基本概念

分布式基本理解与Dubbo基本概念
服务提供者(Provider)
暴露服务的服务提供方,服务提供者在启动时,向注册中心注册自己提供的服务。
服务消费者(Consumer):
调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
注册中心(Registry):
注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
监控中心(Monitor):
服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心
Dubbo流程图:
分布式基本理解与Dubbo基本概念

从上图可以看出Dubbo的设计架构:

1.容器一启动,服务提供者会将服务注册到注册中心,注册中心就知道有哪些服务上线了
2.服务消费者启动的时候,从注册中心订阅需要哪些服务,如果哪些服务有了变更,注册中心会推送给消费者,消费者就知道不能调用了
3.消费者拿到可以调用的服务,就可是使用服务了
4.会定时的将服务的使用状况,发送给监控中心(Monitor)

学习年限不足,知识过浅,说的不对请见谅。

世界上有10种人,一种是懂二进制的,一种是不懂二进制的。