Dubbo(一)——概念与环境搭建

导读:本篇文章讲解 Dubbo(一)——概念与环境搭建,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

概念

分布式系统定义

        “分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”。也就是说,很多的计算机合起来为用户提供一种系统服务,而对于用户来说,它在使用这种服务的时候就像在使用单个的系统,而不是在使用这些独立的计算机。分布式系统(distributed system)是建立在网络之上的软件系统。

        随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对。把大型系统分成一个个的小服务,这些小模块小服务之间也有着千丝万缕的联系。这些复杂的关系也需要一个治理系统来进行维护,是系统有条不紊的运行。而dubbo就能够治理刚才那些关系。分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。

应用的架构演变

Dubbo(一)——概念与环境搭建

单一应用架构

        当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。

Dubbo(一)——概念与环境搭建

Dubbo(一)——概念与环境搭建

适用于小型网站,小型管理系统,将所有功能都部署到一个功能里,简单易用。

缺点: 1、性能扩展比较难

       2、协同开发问题

       3、不利于升级维护

垂直应用架构

        当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。

Dubbo(一)——概念与环境搭建

 当某一块服务访问量特别大的时候,可以多放几台服务器。

Dubbo(一)——概念与环境搭建         通过切分业务来实现各个模块独立部署,降低了维护和部署的难度,团队各司其职更易管理,性能扩展也更方便,更有针对性

缺点: 公用模块无法重复利用,开发性的浪费

分布式服务架构

        当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务(前端界面与业务逻辑分离开来),逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。

Dubbo(一)——概念与环境搭建

Dubbo(一)——概念与环境搭建

        在分布式服务的这个架构下,最核心的难点就是如何进行远程过程调用,以及如何拆分业务,提升我们业务的复用程度,一个好的分布式服务框架,帮忙解决远程过程调用这个框架就能极大地简化我们的开发来。

        当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)[ Service Oriented Architecture]是关键

Dubbo(一)——概念与环境搭建

        随着我们业务不断的增多,分开的服务也越来越多,有成千上万的服务器再跑各种不同的服务,出现了一些资源浪费情况就尤为严重,比如我们知道用户业务,这块呢访量比较小,结果呢他有100台服务器在跑,而商品业务访问量比较大,却能只有10台服务器,我们呢就应该有一个基于访问压力的调度中心能帮我们实施的调度提高们这个资源的利用率,让更多的服务器跑访问量更大的业务。

        这个时候就可以采用流动计算架构,我们引入这个调度中心,他负责维护之间的复杂关系,以及实时管理服务集群,比如a的访问量大了,就给a多来几台服务器,假如说第一台有10个请求,第二台有20个请求,第三台有100个请求,那么当下一次请求进来之后,我们就应该找一个比较闲的服务器来处理请求。以此来提高整个集群利用率。

Dubbo(一)——概念与环境搭建

RPC简介

        RPC【Remote Procedure Call】是指远程过程调用(A服务器调用B服务器上的功能),是一种进程间通信方式,他是一种技术的思想,而不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同。

        A服务器上客户端的有一块儿小功能,要调用B服务器一处小功能,A可以先找一个小助手(stub),一看我们这个代码呢,想调B服务器上的一个功能,那怎么办呢?他先跟B服务器网络之间建立起一个sockets连接,然后我们要调用B的一些信息,比如你要调到哪个方法,方法名,参数等,将这些信息传递给服务器,然后B服务器上的小助手收到了这些信息,小助手将调用B中的这个方法传递一个返回值给A,A的小助手收到返回值,再交给客户端的这段代码。

        整个RPC其实就是架起一个网络连接进行通信,这样的话呢,A想要用B的功能,相当于A给B发一个请求,调用完B的方法以后,将响应的结果交给A。

Dubbo(一)——概念与环境搭建

        A服务器上有一个hello,想要调用B上的hi方法,同时传入一个User对象,hi方法执行完之后会返回给一个值,A收到返回值打印出来。

Dubbo(一)——概念与环境搭建

决定RPC效率有两个,一个是通信效率另一个是序列化与反序列化效率。

Dubbo简介

        我们在使用Dubbo的时候,我们在a服务器上面需要调用b的代码,我们只需要将b的功能接口拿来,调一下接口所在的方法,dubbo就会自动的去找b服务器上的这段代码,屏蔽了整个远程的调用细节,就类似于我们在用mybatis一样,我们操作数据库的时候呢,我们只需要写一个mybatis的mapper接口,然后调用接口的方法就行了,我们不用关心内部的实现逻辑。

设计架构

        在分布式系统中,尤其是随着微服务架构的发展,应用的部署、发布、扩缩容变得极为频繁,作为 RPC 消费方,如何定动态的发现服务提供方地址成为 RPC 通信的前置条件。Dubbo 提供了自动的地址发现机制,用于应对分布式场景下机器实例动态迁移的问题。如下图所示,通过引入注册中心来协调提供方与消费方的地址,提供者启动之后向注册中心注册自身地址,消费方通过拉取或订阅注册中心特定节点,动态的感知提供方地址列表的变化。

Dubbo(一)——概念与环境搭建

 

环境搭建

ZooKeeper注册中心
管理控制台
创建提供者消费者工程

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/99434.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!