Dubbo(一):分布式架构演变


prtyaa
prtyaa 2023-12-28 16:22:11 67767
分类专栏: 资讯

Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:

  1. 面向接口的远程方法调用。
  2. 智能容错和负载均衡。
  3. 以及服务自动注册和发现。

分布式架构演变:

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

1、单一应用架构:

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

优点:这样开发简单,部署也简单,直接打成war包,扔到服务器上。
缺点:扩展性很差。不利于协同开发和维护。等到项目大了变成了几百MB的时候,服务器可能吃不消。
       还有就是修改某一个模块代码后,项目得重新打包,放到服务器上运行。
       可能还有多台服务器,都得重新打包部署。

2、垂直应用架构:

当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,提升效率的方法之一是将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。把大应用分为小应用部署,每个小应用从页面 --> 业务 --> 数据库 都是完整的。如果用户小应用并发高,那么就多放几台服务器。订单小应用访问量少,就少放几台服务器。

优点:分工合作很容易,互不干扰,性能扩展容易,访问量并发高的小应用,比如用户,就多分配几台服务器。
缺点:1、无法分离页面和业务逻辑。每一个应用从头到尾都是包含 页面 --> 业务 --> 数据库,
         当公司做活动的时候,需要美化一下页面,弄完都得重新部署。
     2、应用之间不可能完全独立,需要交互。有可能以后功能扩展还会有物流应用,支付应用,
        那么应用与应用之间肯定会有交互。比如说下单的时候,肯定会查询商品库存,
        支付的时候肯定会用到订单的内容。物流又要用订单的信息等等

3、分布式服务架构

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

原来web和业务逻辑在一个服务器,那么就在服务器里通信即可,后来分开部署之后,服务之间调用就称为 RPC(Remote Procedure Call )远程过程调用。

分布式架构下,难点就是如何进行远程过程调用以及如何拆分业务,提升业务复用程度。

是不是就高枕无忧呢?

假如 用户应用访问量比较少,但却有100台服务器在跑,访问量比较大的商品业务,却只有10台服务器在跑。这样就造成了资源浪费。那么就应该有一个基于访问压力的调度中心,能实时的监控这些数据,实现动态的调度,提高资源的利用率,给访问量高的应用提高几台服务器,访问量低的应用减少几台服务器。这时候就可以采用流动计算架构

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


RPC

用简单的话来说就是:A服务器的代码   调用     B服务器的代码。

RPC的基本原理图:

核心的关系就是
1、AB之间要建立连接。
2、AB之间传输数据的序列化和反序列化。
而RPC框架的性能也是基于以上两点。

Dubbo的优良特性:

这些说一下服务自动注册与发现。假如一个web页面需要调用业务逻辑,用户/订单/商品/支付都在不同的服务器上,而且每个业务都不止一个服务器。

RPC框架是如何知道用户业务在1,3,5机器上和支付业务在8,9,11机器上呢?
包括某台服务器宕机了,RPC框架是如何知道的呢?

这时候就引入了一种机制叫做:注册中心

为了能动态感知,可以把所有的服务都注册到注册中心中,这个注册中心中就有一个列表清单。描述的是,用户业务在1,3,5机器,订单业务在2,4,6机器上等等,包括哪一台机器宕机挂掉了,注册中心就会把这台机器从这个清单里删除。当web请求的时候,就可以去先问注册中心里,有没有某个业务注册,有的话,就会去访问,可以是按照负载均衡机制去访问,然后与那个服务建立连接,通信数据。

=======================================================

Dubbo还可以实现灰度发布,假如有100台机器部署,灰度发布嘛,有的人微信有视频号,有的人没有,这就是灰度发布。先在20台机器上部署这个功能,然后一部分用户会访问到这20台服务器上,等到这些用户体验了功能之后,反映没有bug之后,慢慢的再扩大过度到在40台机器上部署这个业务,再在所有机器上都部署,这就是灰度发布。

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=31802
赞同 0
评论 0 条
prtyaaL1
粉丝 1 发表 2554 + 关注 私信
上周热门
银河麒麟添加网络打印机时,出现“client-error-not-possible”错误提示  1487
银河麒麟打印带有图像的文档时出错  1405
银河麒麟添加打印机时,出现“server-error-internal-error”  1194
统信操作系统各版本介绍  1116
统信桌面专业版【如何查询系统安装时间】  1114
统信桌面专业版【全盘安装UOS系统】介绍  1068
麒麟系统也能完整体验微信啦!  1026
统信【启动盘制作工具】使用介绍  672
统信桌面专业版【一个U盘做多个系统启动盘】的方法  616
信刻全自动档案蓝光光盘检测一体机  526
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

添加我为好友,拉您入交流群!

请使用微信扫一扫!