Dubbo项目架构演变过程

Posted 拐柒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dubbo项目架构演变过程相关的知识,希望对你有一定的参考价值。

Dubbo(一)项目架构演变过程

架构演变过程

dubbo是一款高性能的java rpn框架。
随着互联网的发展,用户群体逐渐壮大,网站的流量成倍增长,常规的单体架构已无法满足请求压力 暴增和业务的快速迭代,架构的变化势在必行。

单体架构

单体架构所有模块和功能都集中在一个项目中,部署时也是将项目所有功能整体部署到服务器中。
优点

  • 小项目开发快,成本低
  • 架构简单
  • 易于测试
  • 易于部署
    缺点
  • 大项目模块耦合严重,不易开发、维护,沟通成本高
  • 新增业务困难
  • 核心业务与边缘业务混合在一块,出现问题相互影响

垂直架构

根据业务吧项目垂直切割成多个项目,因此这种架构称之为垂直架构。
为了避免上面提到的那些问题,我们开始做模块的垂直划分,做垂直划分的原则是基于拉勾的业务特 性,核心目标,第一个是为了业务之间互不影响,第二个是在研发团队的壮大后为了提高效率,减少之 间的依赖。
优点:

  • 系统拆分实现了流量分担,解决了并发问题
  • 可以针对不同系统进行优化
  • 方便水平拓展,负载均衡,容错率提高
  • 系统间相互独立,互不影响,新的业务迭代高效
    缺点:
  • 服务系统接口调用监控不到位、调用方式不同意
  • 服务系统之间接口调用硬编码
  • 搭建集群之后,实现负载均衡比较复杂
  • 服务监控不到位
  • 数据库资源浪费,充斥慢查询,主从同步延迟大

SOA(分布式架构)

SOA全称为Service Oriented Architecture ,即面向服务的架构 。它是在垂直划分的基础上,将每个项目 拆分出多个具备松耦合的服务,一个服务通常以独立的形式存在于操作系统进程中。各个服务之间通过网 络调用,这使得构建在各种各样的系统中的服务可以 以一种统一和通用的方式进行交互。
我们在做了垂直划分以后,模块随之增多,系统之间的RPC逐渐增多,维护的成本也越来越高,一些通 用的业务和模块重复的也越来越多,这个时候上面提到的接口协议不统一、服务无法监控、服务的负载 均衡等问题更加突出,为了解决上面的这些问题,我们将通用的业务逻辑下沉到服务层,通过接口暴 露,供其他业务场景调用。同时引入了阿里巴巴开源的Dubbo ,一款高性能、轻量级的开源Java RPC框 架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发 现。

优点:

  • 服务以接口为粒度,为开发者屏蔽远程调用底层细节 使用Dubbo 面向接口远程方法调用屏蔽了底层调用细节
  • 业务分层以后架构更加清晰 并且每个业务模块职责单一 扩展性更强
  • 数据隔离,权限回收,数据访问都通过接口让系统更加稳定安全
  • 服务应用本身无状态化,这里的无状态化指的是应用本身不做内存级缓存 而是把数据存入db
  • 服务责任易确定,每个服务可以确定责任人,这样更容易保证服务质量和稳定
    缺点:
  • 粒度控制复杂 如果没有控制好服务的粒度,服务的模块就会越来越多 就会引发、超时、分布式事务等问题
  • 服务接口数量不宜控制,容易引发接口爆炸,所以服务接口建议以业务场景进行单位划分 并对相近的业务做抽象 防止接口爆炸
  • 版本升级兼容困难,尽量不要删除方法、字段、枚举类型的新增字段也可能不兼容
  • 用链路长,服务质量不可监控,调用链路变长,下游抖动可能会影响到上游业务,最终形成连锁反应,服务质量不稳定,同时链路的变成使得服务质量的监控变得困难

微服务架构

微服务架构是一种将单个应用程序 作为一套小型服务开发的方法,每种应用程序都在其自己的进程中独 立运行,并使用轻量级机制(通常是HTTP资源的API)进行通信。这些服务是围绕业务功能构建的,可以 通过全自动部署机制进行独立部署。这些服务的集中化管理非常少,它们可以用不同的编程语言编写, 并使用不同的数据存储技术。
微服务是在SOA上做的升华,粒度更加细致,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”。

以上是关于Dubbo项目架构演变过程的主要内容,如果未能解决你的问题,请参考以下文章

Dubbo项目架构演变过程

Dubbo项目架构演变过程

Dubbo架构设计与源码解析责任链模式

Dubbo入门 - 基础概念

dubbo总结:dubbo的使用场景

Dubbo