前言
大家好,今天开始给大家分享 — Dubbo 专题之 Dubbo 服务治理简介。在前面的章节中我们介绍了 Dubbo 序列化,了解到了 Dubbo 中支持的序列化方式以及其实现原理。那么从这个章节开始我们讨论服务治理相关话题,在这个章节中我们会继介绍 Dubbo 服务治理。那么什么是服务治理呢?为什么需要服务治理?Dubbo 中提供哪些服务治理方式呢?。那就让我们快速开始吧!
1. 架构演进
首先在讨论我们的服务治理之前我们先看看我们的软件架构设计的发展。在传统的企业应用或桌面应用中,往往都是一个单体的应用架构设计如下图所示:
可以看到我们的单体架构很简单一个 Java 进程和数据库就可以搞定。但是随着业务的发展,我们的业务逻辑越来越复杂比如:我们一个电商系统主要包含用户系统、商品系统、订单系统、评价系统、支付系统、门店管理等等,同时我们的项目团队也可能随着业务增长不断扩大,那么如果我们还在以前的单体系统上进行开发可能会导致我们的系统代码变得无法维护、一个系统上线可能导致所有服务不能使用等等问题。那么这个时候我们就使用多应用架构把功能在一个领域的放在一个系统中,同时应用之间不能直接的交互架构如下图所示:
我们可以很直观的感受到当我们的系统发展到一定量的时候我们就需要对其进行拆分。当然上面的架构有一个明显的问题:应用系统相互独立后共同的业务或代码无法复用。那怎么解决这个问题呢?接下来就是我们讨论的重点分布式系统架构,在大型的电商系统中分布式架构是我们常常使用的解决大数据量、高并发的有效解决方案,同时我们在实践过程中常常遇到有很多的服务或者组件是共用的、用户需求变更快、快速迭代等等问题。因此,我们希望分离变与不变,从而使组件或服务得到更好的复用和更容易拓展和维护,上层的业务系统更加灵活多变的业务场景组合底层通用的公共服务能力来实现复杂多变的应用场景。以下是简要的分布式架构图:
从图中我们可以看出应用层调用底层公共的抽象能力来组合成上层业务逻辑。
Tips:这里的架构缺少接入网关系统。
2. 服务治理简介
从上面介绍的架构演进中,我们可以知道当我们系统随着业务增加需要面对:高并发、大数据量、高吞吐量等问题。那么我们就需要调整我们的系统架构使我们的系统服务化。服务治理主要作用是改变运行时服务的行为和选址逻辑、达到限流、权重配置等目的。下面我们通过服务化的特点、优势和所面临的挑战维度来进行阐述。
服务化的特点:
- 应用按业务拆分成服务
- 各个服务均可独立部署
- 服务可被多个应用共享
- 服务之间可以通信
服务化所带来的优势:
- 架构上系统更加清晰
- 核心模块稳定,以服务组件为单位进行升级,避免了频繁发布带来的风险
- 开发管理方便
- 单独团队维护、工作分明,职责清晰
- 业务复用、代码复用
- 非常容易拓展
服务化面临的挑战:
- 服务越来越多,配置管理复杂
- 服务间依赖关系复杂
- 服务之间的负载均衡
- 服务的拓展
- 服务监控
- 服务降级
- 服务鉴权
- 服务上线与下线
3. Dubbo 中服务治理
以下来自于官网的 Dubbo 服务治理架构图:
其中 Dubbo 支持的服务治理能力包括:服务发现注册、服务监控、集群容错、负载均衡、黑白名单、标签路由、条件路由、权重调节、服务降级等等。
4. 小结
在本小节中我们主要学习了 Dubbo 中服务治理,分别从单体架构到分布式架构的演进进行分析我们为什么要不断的改进我们的架构设计。同时也知道了服务治理主要作用是改变运行时服务的行为和选址逻辑、达到限流、权重配置等目的,其中 Dubbo 服务治理提供了:服务发现注册、服务监控、集群容错、负载均衡、黑白名单、标签路由、条件路由、权重调节等能力。
本节课程的重点如下:
理解 Dubbo 服务治理
了解架构演进背景
学习 Dubbo 中提供的服务治理方式
作者
个人从事金融行业,就职过易极付、思建科技、某网约车平台等重庆一流技术团队,目前就职于某银行负责统一支付系统建设。自身对金融行业有强烈的爱好。同时也实践大数据、数据存储、自动化集成和部署、分布式微服务、响应式编程、人工智能等领域。同时也热衷于技术分享创立公众号和博客站点对知识体系进行分享。关注公众号:青年IT男 获取最新技术文章推送!
博客地址: http://youngitman.tech