开发者社区> 问答> 正文

【藏经阁一起读(77)】读《Apache Dubbo3 云原生升级与企业最佳实践》,你有哪些心得?

藏经阁2.0全新上线!下载本地、线上阅读让你轻松获取技术知识。为了让更多人学习到藏经阁中的优秀技术作品,培养好的阅读习惯,“藏经阁一起读”活动来啦,你阅读,我奖励!

本期书籍《Apache Dubbo3 云原生升级与企业最佳实践》

阅读地址https://developer.aliyun.com/ebook/8062

书籍简介:本书为CoC Asia 2023(原ApacheCon) RPC & Service Mesh 专题分享实录,通过摘取 Community Over Code Asia 2023(原 ApacheCon Asia)的 RPC & Service Mesh专题的精彩内容,我们以 Apache Dubbo 为中心展开,给大家带来开源微服务技术方向发展、云原生微服务选型、企业实践分享的精彩内容!

活动规则:阅读书籍,将你对于本书的想法、收获等在评论区留言,评论不少于200字,将选取评论质量最高的前2名送出小米鼠标Lite一个。

c4ceb91ae0f44dbfa9a3a766075b663b.png

image.png

活动时间:2023年11月14日~11月21日24:00

参与用户务必扫码加入钉群,第一时间了解活动进展、获取得奖信息。

image.png

快来阅读吧!链接:https://developer.aliyun.com/ebook/8062

展开
收起
提个问题 2023-11-14 18:06:04 253 8
11 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    《Apache Dubbo3 云原生升级与企业最佳实践》是一本由阿里巴巴集团技术团队编写的关于微服务架构和云原生技术的书籍。本书摘取了Community Over Code Asia 2023(原ApacheCon Asia)的RPC & image.png
    Service Mesh专题的精彩内容,以Apache Dubbo为核心,为读者提供了开源微服务技术的发展趋势、云原生微服务的选型以及企业实践分享。
    image.png
    image.png

    Dubbo 3 的技术特点包括:

    1. 支持服务注册与发现:Dubbo 3 支持多种服务注册与发现机制,包括 Zookeeper、Eureka、Consul 和 etcd 等。
    2. 支持负载均衡:Dubbo 3 提供了多种负载均衡策略,如轮询、随机、最少连接数等,以实现服务的负载均衡。
    3. 支持服务治理:Dubbo 3 提供了丰富的服务治理组件,如服务降级、服务熔断、服务限流等,以实现服务的自动化治理。
    4. 支持异步通信:Dubbo 3 支持异步通信,可以实现更高效的通信机制。
    5. 支持多种序列化方式:Dubbo 3 支持多种序列化方式,如 Hessian、Java、Kryo 和 FST 等,以满足不同场景的需求。
    6. 支持服务链路:Dubbo 3 支持服务链路,可以实现服务之间的链式调用。
    7. 支持云原生:Dubbo 3 具备云原生的特性,可以更好地支持分布式应用的开发和部署。
      下面是一个简单的 Dubbo 3 示例:
    8. 首先,在 pom.xml 文件中添加 Dubbo 3 的依赖:


    com.alibaba.spring.boot
    dubbo-spring-boot-starter
    2.7.13

    CopyCopy

    1. 在 application.yml 文件中配置 Dubbo 3 的服务地址和协议:

    dubbo:
    scan:
    base-packages: com.example.service.impl
    protocol:
    name: dubbo
    port: -1
    registry:
    address: nacos://127.0.0.1:8848
    CopyCopy

    1. 创建一个简单的服务接口:

    package com.example.service;
    public interface HelloService {
    String sayHello(String name);
    }
    CopyCopy

    1. 创建一个实现服务接口的类:

    package com.example.service.impl;
    import com.example.service.HelloService;
    import org.apache.dubbo.config.annotation.DubboService;
    @DubboService
    public class HelloServiceImpl implements HelloService {
    @Override
    public String sayHello(String name) {
    return "Hello, " + name;
    }
    }
    CopyCopy

    1. 最后,在主类中调用服务:

    package com.example.main;
    import com.example.service.HelloService;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    @SpringBootApplication
    public class DubboDemoApplication {
    public static void main(String[] args) {
    SpringApplication.run(DubboDemoApplication.class, args);
    HelloService helloService = SpringBeanUtil.getBean(HelloService.class);
    String result = helloService.sayHello("Dubbo");
    System.out.println(result);
    }
    }
    image.png

    Community Over Code Asia 2023(原ApacheCon Asia)是一个亚洲地区最大的开源技术盛会,RPC & Service Mesh专题是其中的一个重要环节。该专题汇聚了业界的顶尖专家和一线实践者,分享和探讨了RPC(远程过程调用)和Service Mesh(服务网格)等微服务架构相关技术的发展趋势、最佳实践和应用案例。
    本书通过丰富的实例和深入浅出的讲解,让读者能够更好地理解和掌握Apache Dubbo 3的云原生升级和企业最佳实践。无论你是初学者还是有一定经验的开发者,都可以从本书中获益。
    对于希望深入学习该领域的读者,本书作者和编者推荐了一些学习资源,包括Apache Dubbo的官方文档、相关的博客文章、技术社区的讨论等。通过这些资源,你可以更深入地了解和掌握微服务架构和云原生技术的知识,提升自己的技能水平。
    总的来说,《Apache Dubbo3 云原生升级与企业最佳实践》是一本非常有价值的书籍,无论是对于微服务架构和云原生技术的学习者还是实践者来说,都是一本不可错过的佳作。

    2023-11-25 07:01:31
    赞同 5 展开评论 打赏
  • CSDN全栈领域优质创作者,万粉博主;InfoQ签约博主;华为云享专家;华为Iot专家;亚马逊人工智能自动驾驶(大众组)吉尼斯世界纪录获得者

    《Apache Dubbo3 云原生升级与企业最佳实践》是一本关于Apache Dubbo框架在云原生环境下升级和实践的书籍。本书详细介绍了Dubbo3的新特性、架构设计、性能优化、安全机制等方面的内容,并通过实际案例展示了如何将Dubbo应用到企业项目中,帮助企业实现高效、稳定的微服务架构。

    在阅读这本书的过程中,我深刻地认识到了云原生技术对于企业的重要性,以及Dubbo3在云原生环境下的优势和价值。以下是我在阅读过程中的一些心得体会:

    1. 云原生技术的发展与挑战

    随着云计算、大数据、人工智能等技术的不断发展,企业对于IT基础设施的需求也在不断提高。传统的单体应用已经无法满足企业的发展需求,微服务架构应运而生。微服务架构将一个大型的应用程序拆分成多个独立的、可独立部署的小型服务,每个服务都有自己的业务逻辑和数据存储。这种架构可以提高系统的可扩展性、可维护性和可移植性,但同时也带来了新的挑战,如服务间的通信、数据一致性、服务发现和注册等。

    云原生技术是解决这些挑战的一种有效途径。云原生技术包括容器化、服务网格、无服务器计算等,可以帮助企业更好地构建和管理微服务应用。然而,云原生技术的应用也面临着一些挑战,如技术选型、架构设计、性能优化等。

    1. Dubbo3的新特性与优势

    Dubbo是一个高性能、轻量级的Java RPC框架,广泛应用于企业和互联网项目。Dubbo3是Dubbo的最新版本,它在原有的基础上进行了全面升级,支持云原生环境,提供了更多的新特性和优势。

    首先,Dubbo3支持云原生技术,如Kubernetes、Istio等。这使得Dubbo可以更好地适应云原生环境,提高系统的可扩展性和可维护性。

    其次,Dubbo3引入了新的协议支持,如gRPC、Thrift等。这使得Dubbo可以支持更多的通信方式,提高系统的性能和稳定性。

    再次,Dubbo3对服务治理进行了优化,提供了更加灵活和强大的服务治理能力。例如,Dubbo3支持动态路由、灰度发布、流量控制等功能,可以帮助企业更好地管理微服务应用。

    最后,Dubbo3对性能进行了优化,提高了系统的吞吐量和响应速度。例如,Dubbo3采用了异步编程模型,减少了线程阻塞,提高了系统的并发能力。

    1. Dubbo3的架构设计与实践

    在阅读本书的过程中,我对Dubbo3的架构设计和实践有了更深入的了解。以下是我在阅读过程中的一些收获:

    首先,Dubbo3的架构设计遵循了微服务的原则,将一个大型的应用程序拆分成多个独立的、可独立部署的小型服务。每个服务都有自己的业务逻辑和数据存储,通过接口进行通信。这种架构可以提高系统的可扩展性、可维护性和可移植性。

    其次,Dubbo3的服务治理能力得到了加强。通过引入Zookeeper、Nacos等分布式配置中心,实现了服务的注册与发现;通过引入Sentinel、Ribbon等组件,实现了服务的负载均衡和熔断降级;通过引入Apollo、Nacos等配置中心,实现了服务的配置管理。这些功能可以帮助企业更好地管理微服务应用,提高系统的稳定性和可靠性。

    再次,Dubbo3的性能优化策略包括:采用异步编程模型,减少线程阻塞;使用Netty作为底层通信框架,提高网络传输效率;使用Protocol Buffers作为序列化方案,减少数据传输量;使用缓存技术,减少数据库访问次数等。这些策略可以帮助企业提高系统的性能和响应速度。

    最后,Dubbo3的安全机制包括:采用JWT进行身份认证;使用HTTPS进行数据传输加密;使用权限控制进行资源访问控制等。这些安全机制可以帮助企业保护微服务应用的安全,防止数据泄露和攻击。

    1. 企业最佳实践与案例分析

    本书通过实际案例分析了Dubbo3在企业项目中的应用和实践。这些案例涵盖了金融、电商、物流等多个行业,展示了Dubbo3在不同场景下的优势和价值。

    例如,在金融行业中,Dubbo3可以帮助企业实现高并发、低延迟的交易处理系统;在电商行业中,Dubbo3可以帮助企业实现高可用、高性能的商品推荐系统;在物流行业中,Dubbo3可以帮助企业实现高可靠、高效率的订单处理系统等。

    通过这些案例分析,我深刻认识到了Dubbo3在企业项目中的应用价值和实践意义。同时,我也学到了一些企业最佳实践,如合理的架构设计、性能优化策略、安全机制等。这些最佳实践对于我在实际工作中应用Dubbo3具有很大的指导意义。

    总之,《Apache Dubbo3 云原生升级与企业最佳实践》这本书对于我了解云原生技术、掌握Dubbo3的新特性和优势、学习Dubbo3的架构设计和实践具有很大的帮助。通过阅读这本书,我对云原生技术有了更深入的认识,对Dubbo3的应用和实践有了更清晰的思路。在今后的工作中,我将继续深入学习和实践Dubbo3,为企业项目提供更好的技术支持和服务。

    2023-11-24 10:42:02
    赞同 5 展开评论 打赏
  • https://blog.csdn.net/weixin_69553582

    一、前置知识

    1.1、Dubbo是什么

      Dubbo3 是一款微服务架构,它帮助解决微服务开发中的通信问题。
      它不绑定编程语言。
      目标是为所有主流语言提供对等的微服务开发体验

    2023-11-20_200310.jpg

      Dubbo从架构图上分为数据面和控制面
      在数据面,使用Dubbo开发的微服务进程间基于RPC协议通信,由一系列可选的微服务治理组件构成,负责Dubbo集群的服务发现、流量管控策略、可视化检测等。
    2023-11-21_151803.jpg

    1.2、Dubbo具体提供了哪些核心能力?

      首先,Dubbo 作为服务开发框架解决了业务应用中微服务定义、暴露、通信与治理的问题,为业务应用开发定义了一套微服务编程范式。
      具体来说,Dubbo为业务应用开发提供了微服务开发API、RPC协议、服务治理三大核心能力,让开发者真正的专注业务逻辑开发,

    2023-11-21_152430.jpg

      Dubbo不是应用框架的替代者,它可以很好的工作在每种语言的主流编程框架之上,以Java为例,Dubbo可以很好的与Spring协作,并在此基础上提供服务定义、微服务编程、服务发现、负载均衡、流量管控等能力

    2023-11-21_153353.jpg

      在通信方面,Dubbo区别于其他RPC框架的是它不绑定特定协议,你可以选择HTTP/2、Dubbo2、REST、gRPC、REST、Hessian等任何通信协议,同时享受统一的API、以及对等的服务治理能力

    2023-11-21_154131.jpg

      Dubbo的另外一个优势在于其可扩展性设计,从流量管控、协议编码、诊断调优、再到服务治理,你都可以去扩展,满足企业级微服务开发与运维的所有诉求,

    2023-11-21_154713.jpg

      基于扩展能力Dubbo官方提供了丰富的生态适配,涵盖了所有主流的微服务开源组件

    图片1.jpg

      对于服务网格架构,Dubbo也可以很好的接入原生Istio体系,在数据面支持与Envoy部署的Proxy模式,也支持无Envoy的Proxyless模式,提供更灵活的数据面选择

    2023-11-21_155624.jpg

    1.3、Dubbo特点:

    • 快速上手,让开发者专注业务开发
    • 服务治理,实时监测、管控集群状态
    • 超高性能,面向百万实例集群设计
    • 企业级解决方案,多年企业生产环境检验

    二、书中案例

    书中有7篇文章,我留意了这篇:
      政采云基于 Dubbo 的混合云数据跨网实践
      作者:王晓彬,政采云资深开发工程师

      政采云的业务是为政府提供的购物网站,类似于淘宝。政府采购会在政采云上做企业采购、 政府采购的业务。
      云岛中的“云”是指我们的云平台,是公司内部,完全可控的局域网。技术上对应的是一套微服务框架。
      岛端它可能是局域网或者是私有网络,它可能是完全隔离的一个岛。他们的安全策略和开端口的东西都是他们自己定义的,这就是我们云岛的业务结构。比如安徽或者山西它们都有自己的局域网,如果我们在它们那里也部署一套这个服务框架,就叫“岛”。我们的云平台主要是给浙江省和其他相关的区划用的。
    我们的云和岛之间存在数据传输的问题,举个例子,比如我现在收到一个政府的公告,而这个公告可能是全国性的。那么我可能会在云平台的管理平台上去录公告,再把它推送出去,这个时候云和岛之间就存在了一些数据的同步。

    混合云岛网络的特点

    • 平台的一致性。
    • 网络连接与能力复用。
    • 统一的平台管理。
      2023-11-21_202416.jpg

    政企网络痛点
    政企网络有以下几个特点:

    • 网络复杂。
    • 安全要求高。
    • 业务驱动运维。
      2023-11-21_213201.jpg

    2.1、第一个方案,基于 Dubbo Filter 的单向方案。

    • 第一个特点,单向传输。
    • 第二个特点,在本地部署业务的 provider 过滤器是运维上的负担。当岛端需要把数据同步 给云端的时候,也就是从岛端的业务 Web 传输到云端的业务 provider。这个时候我必须 在岛端也部署一套业务的 provider 才可以。

    2023-11-20_222931.jpg

    2.2、第二个方案,网状点对点方案。

    2023-11-20_223541.jpg

      网状点对点方案。因为岛和岛之间需要网络互通,所以就会单独开通这个点 和你需要传输的点之间的端口。开通之后我们就可以调用了,调用的形式可以用 Dubbo, 也可以用其他。 这个方案有一个很明显的缺陷,线特别多,所以点和点之间开通的复杂度也很高,对后面 的扩展可能也非常不利。
    以上方案存在的问题包括:

    • 单向传输、
    • 白名单开通成本高、
    • 平台维护成本高、
    • 公共功能的缺失。

    2.3、第三个方案,高速公路

    基于以上的问题,我们做了一个新的方案,叫高速公路。

    2023-11-21_220055.jpg

    想要达到的效果是:

    • 只建一次,可复用。
    • 隧道机制。
    • 考虑传输性能。

    2.3.1、Dubbo 的客观接入方式

    Dubbo 的客观接入主要有以下三种方式:

    • 第一种,注解方式。
        使用@DubboReference 提供的通用 parameters 参数,设置路由目标,可以达到方法粒度的路由。路由信息写在中间parameters那里,parameters是Dubbo 给我们提供的通用参数的传递。
    • 第二种,配置中心指定。
        它完全可以把接入方式替换 掉,parameters 的信息在配置中心配置也可以,只要 SDK 可以支持就好。这种方式其实 代码是完全无侵入的,就是跟跨网之前和跨网之后没有任何区别。
    • 第三种,线程指定。
        当你在线程里指定了路由信息,下面再去调用的时候,这次调用就会 走你的路由。如果再调用一次,它就会调回本地。因为基于线程的形式,在 Dubbo 的扩展 里,它会在调用完成之后把线程信息清理掉。所以需要注意一下,如果你想多次调用,就 需要写多次。如果不想写多次,你可以用上面这种方式,你只要注入在当前的 bean 里, 都是路由到上海。

    2.3.2、高速公路的架构

    2023-11-20_225054.jpg
    2023-11-20_225246.jpg

    2.3.3、隧道的机制

      隧道技术是一种通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据(或负载)可以是不同协议的数据帧或包。
      高速公路架构中,使用了隧道这个概念。两端(业务层)是 Dubbo 私有协议,跨网传输过程中,则使用了 http 协议,http 协议可以更好的被中间设备、网关识别转发。这个机制的最大便利在于对业务的低侵入性。对于业务集群的应用完全不需要修改。
      隧道机制的作用是屏蔽网络的复杂性,屏蔽中间的协议转换, 给用户一个统一透明的调用方式

    2023-11-21_000633.jpg
    2023-11-21_004831.jpg

      这个机制的好处是,基本上 Dubbo 的所有特性都能支持。但也有一些个例,比如 token 和网络相关的机制

    2.3.4、未来规划

    2023-11-21_001158.jpg

    三、读后思考

      这篇案例介绍了政采云基于 Dubbo 的跨网方案落地过程中面临的技术挑战、分析对比了几个方案的优缺点。
      对云岛业务结构的公司来说,云平台属于公司内部、完全可控的局域网,而岛端则是有自己安全网络策略的独立内部网络。需要云岛通信时,会基于需求,按客户要求走流程开通一些端口,这个过程需要一定的成本且不完全可控。业务上,如果这种跨网需求增多,则会逐渐变成痛点。如果可以搭建一个透明的跨网传输网络,配合良好的顶层设计,就可以在业务支撑、安全管控和运维成本中寻求较好的平衡。
      一个项目,我们通常能选择的跨网方案非常多,但最终我们会去选择一个能解决痛点的,而不是完美的方案。稳定、高效、可靠的基础设施是互联网企业应对业务高峰流量的底层基石。落地方案一般来说都比较保守,这很多时候跟政企业务特殊性有关。但我们对于架构的思考,一定是需要更超前的。随着方案的落地,后期需要从稳定性、功能增强、新技术探索三个方面去做深、做广。
      在政采云这种政企业务场景中的数据跨网,与业界公有云、自建私有云的公司相比,既有共性又有自己的特点,通过参考别人的案例,我们可以从中得到新的思路和启发。

    2023-11-21 22:16:41
    赞同 7 展开评论 打赏
  • 3.0 是下一代 Dubbo 架构的代号。一年前,最开始探索 Reactive Stream 之时,社区也曾有过对 Dubbo 3.0 的广泛讨论。而这一次,在云原生大背景下,3.0 代表了更全面的 Dubbo 架构升级,涉及到下一代 RPC 协议、全新的服务治理模型和云原生基础设施适配等。

    阿里巴巴是参与 Dubbo 3.0 开发建设的主要力量之一,这款始于阿里的开源项目正重新回归阿里内部落地。

    去年开始,阿里巴巴就已经在逐步推动以 Dubbo 替换其内部的 HSF 框架的工作,通过将 Dubbo 与 HSF 两个框架融为一体,并在此基础上发展出适应云原生架构的 Dubbo 版本。Dubbo 重回阿里巴巴的落地是拥抱社区、拥抱云原生、拥抱标准化的一次很好的实践。阿里巴巴内部 Dubbo 3.0 的落地,对社区也是一个重大利好,这一方面有利于阿里巴巴将其在 HSF 上的丰富服务治理经验回馈输出到社区,另一方面也将直接推动 Dubbo 云原生架构的快速演进。除了阿里巴巴之外,包括斗鱼、工商银行、爱奇艺、斗鱼等厂商也都在参与下一代 Dubbo 3.0 的建设。

    下面列出了 Dubbo 3.0 中的三个重要方向,具体为:
    image.png

    下一代 RPC 协议。新协议将提供更丰富的如 Stream、Flow Control 等内置语义,同时将具有更好的扩展性、网关的友好性等;
    基于应用粒度的服务发现机制。在兼顾 Dubbo 面向接口的易用性与功能性的基础上,解决与 Kubernetes Native Service 适配问题,解决大规模集群下的地址推送性能瓶颈问题;
    适配云原生基础设施的解决方案。这涉及到 Dubbo 服务与基础设施生命周期对接、Kubernetes Native Service 适配、适应基础设施调度的服务治理规则、适配 Service Mesh 架构的解决方案等。

    2023-11-21 10:31:53
    赞同 8 展开评论 打赏
  • Apache Dubbo3云原生升级与企业最佳实践:深度探索与实践

    在当今数字化转型的时代,企业对于高效、灵活、可扩展的服务架构的需求日益增长。Apache Dubbo3,作为一款高性能、轻量级的开源Java RPC框架,正是满足这一需求的不二之选。在近期阅读了《Apache Dubbo3 云原生升级与企业最佳实践》一文后,我对Dubbo3有了更深入的理解,同时也收获了一些心得体会。

    首先,从性能与资源利用率角度看,Dubbo3的优势显而易见。其设计理念是降低框架带来的额外资源消耗,提升系统整体的资源利用率。无论是从单机角度还是集群视角,Dubbo3都能展现出优越的性能。例如,单机环境下,Dubbo3能节约50%的内存占用,这意味着在满足相同服务需求的情况下,使用Dubbo3可以大大减少内存资源的消耗,提高服务器的利用率。在集群环境下,Dubbo3支持大规模集群,为未来更大规模的业务扩容打下了基础。

    通信模型的支持是Dubbo3的另一个亮点。Dubbo3对Actual Stream等通信模型的支持,使得在一些业务产品下整体吞吐量得到大幅度提升。这种通信模型的支持对于需要高吞吐量、低延迟服务的场景尤为适用,如在线游戏、实时音视频等。

    此外,Dubbo3对于业务架构升级带来了更多的可能性。传统的Dubbo协议在一定程度上束缚了微服务的接入方式。例如,移动端或前端业务要接入Dubbo的后端服务,需要通过网关的协议转换。而Dubbo3的升级不仅解决了这一问题,还支持request、response模式的通信,使得一些需要有视传输入或反项通信的产品能够更好地得到支持。这种灵活的架构使得业务升级变得更加容易,同时也为业务的创新和发展提供了更大的空间。

    最后,Dubbo3对于业务侧云原生升级也带来了解决方案。云原生架构是当今企业IT架构的发展趋势,它能够提高系统的可扩展性、灵活性和可维护性。Dubbo3通过与云原生技术的结合,使得企业可以更容易地进行业务侧的云原生升级。这不仅提高了系统的性能和效率,也为企业未来的数字化转型提供了强有力的支持。

    总的来说,《Apache Dubbo3 云原生升级与企业最佳实践》一文让我对Dubbo3有了更深入的了解和认识。它不仅是一款高性能、轻量级的RPC框架,更是一款能够支持企业级应用、云原生升级的全方位服务治理平台。通过使用Dubbo3,企业可以更好地满足不断变化的市场需求,提高服务质量和客户满意度,同时也能够降低运维成本和提高生产效率。在未来,我期待看到更多关于Dubbo3的研究和应用,以及它在更多领域中的成功实践。

    2023-11-21 10:33:41
    赞同 5 展开评论 打赏
  • Apache Dubbo 云原生可观测性的探索与实践
    可观测建设
    image.png
    首先介绍一下云原生升级的挑战。目前大部分公司里基本上都有 CICD、DevOps 来帮助开发、测试、运维提升开发的效率与质量,也会有容器化来帮助提升产线运维的效率与质量。但在云原生时代,大规模容器的频繁变更会带来很多稳定性的问题。这些稳定性问题,包含了很多我们可以提前规避掉的已知的异常,也包含了很多我们无法避免的异常,比如网络故障、机器宕机等系统无法提前避免的的问题。

    如果我们能提前发现这些问题,其实是可以规避掉很多风险的。通过可观测系统及时的感知问题,高效的分析异常,快速的恢复系统。因此可以判定,在云原生时代,可观测系统的建设是非常重要的。image.png
    Dubbo 作为微服务 RPC 的框架,直接建设一个大而全的可观测性系统或者平台是不现实的,而且与定位也不是很符合。可观测性系统更强调关联性,通过单维度或者多维度进行系统的观测与问题的诊断。

    首先看一下可度量系统的健康状态的指标。Dubbo 通过采集系统内部的 Dubbo 指标的同时,把指标内部的数据指标暴露给外部的监控系统。这些监控指标中包含了很多的应用信息、主机信息、Dubbo 服务等标签信息。当我们发现问题的时候,可以通过这些标签信息关联到全链路系统。之后全链路系统可以做到请求级或者应用级的系统性能或者系统异常的分析诊断。

    Dubbo 侧通过适配各大全链路厂商形式提供全链路门面,只需进行非常简易的依赖引入和配置就可以直接把数据导出到各大全链路平台。无论企业使用哪个流行的全链路平台,在后期升级 Dubbo 后都可以直接把链路数据导出去。

    另外,链路系统还包含全链路的 Traceid 或者局部的 SpanId。通过全链路的 ID,我们可以在链路系统直接跳转到日志平台。在日志平台里包含非常详细的日志上下文,这些日志上下文可以提供非常精确的异常问题诊断。

    Dubbo 也提供了非常详细的错误码机制和专家建议的形式,在官网上通过日志的形式可以通过错误码直接导航到官网上的帮助文档。
    多维指标体系image.png
    Dubbo 在多维度指标体系实践的时候,我们主要从两个维度来看它。

    第一个是纵向的维度。Dubbo 指标在采集的时候有一个接入导出的流程。Dubbo 为用户和开发者提供了简单易用的接入门面。接入后服务在运行过程中通过指标器进行指标的采集。Dubbo 中提供了非常多的指标采集器,包括聚合和非聚合的指标采集等等。

    然后采集的指标会通过变量值临时存储在内存里,之后会有部分指标(QPS 等带有滑动窗口的最小值、最大值的聚合指标)进行聚合计算,最后这些指标会导出到外部系统。我们支持在 Dubbo QPS 服务质量服务中进行指标导出,或者把指标导出到 Prometheus,又或者 http 直接访问也可以进行指标的查询。

    第二个是横向的维度。Dubbo 指标采集覆盖了非常容易出现异常的地方。比如 Dubbo 3 提供了三大中心,包括注册中心、元数据中心、配置中心,存在外部网络交互的地方也是非常容易出现问题的。

    另外一个比较关键的是 RPC 链路上的数据采集,比如请求相关的耗时、异常、Netty、IO 的指标等等。此外还有一些关于 Dubbo 线程池资源信息的指标采集。image.png
    前面说的是比较大面上的指标采集,具体 Dubbo 的采集需要哪些指标我们也调研了很多比较流行的方法论。

    图中第一张图是谷歌 SRE 书中提到的四大黄金指标。它是谷歌总结大规模的分布式服务监控总结出来的,它可以进行请求级别的服务质量的衡量,主要包含延迟、流量、错误以及饱和度。
    图中第二张图是 RED 方法。它更侧重于请求,从外部视角来查看服务的健康状态,主要包含速率、错误与持续时间。
    图中第三张图是 USE 方法。它更侧重于系统内部的资源使用情况,包含利用率、饱和度与错误。
    可以看到,以上三个指标的方法论中都包含的指标是错误,错误也是每个开发者比较关注的。image.png
    后我们进行了指标的系统完善。在 Dubbo 3.2 版本中,多维度指标体系已经完成,而且也在快速持续的版本迭代中。在这个版本中我们只需要引入一个快速集成的 Spring Boot 中的 Starter 包就可以实现指标的自动采集。之后我们通过 Dubbo 的 QPS 服务质量端口可以直接访问到。如果是本机可以通过浏览器,如果是服务器上可以通过 curl 命令访问 22222 端口,后面加一个 metrics 路径,这样就可以看到非常详细的默认指标的导出。

    通过指标名字可以看到这些带有 Dubbo 前缀指标,类型是 Dubbo 的不同模块,比如消费者提供的请求级别,三大注册中心一起线程。

    下面是 Dubbo 当前指标的行为,然后响应时间,最后会加一些单位,这个格式参考的是 Prometheus 的官方格式。

    image.png
    多维度指标体系有些人可能会直接复用 Spring Boot 默认的 manager 管理端口,Dubbo 也适配了一下 Spring Boot Actuator 的扩展。

    操作和刚刚一样,只是引入 Spring Boot Starter 包。后面也无需做任何其他的配置,就可以在 Spring 端口里看到详细的指标了。包括 Spring Boot 内置的 jvm 指标、Dubbo 指标等等。image.png
    指标体系接入之后,我们如果直接通过命令行访问只能看到一些瞬时的数据,但在监控指标体系我们其实更关注的是多维度的向量数据。如果我们把这些数据看作是一个点其实是比较难看出问题的,所以我们需要把这些数据存储起来,看作是一个实际化的向量数据。

    Dubbo 默认提供对 Prometheus 采集的接入。Prometheus 作为指标存储与监控一体的监控系统,提供了很多的服务发现模型。比如我们直接把服务部署在 K8s 上,可以直接基于 K8s 的服务发现机制进行指标采集。如果公司有自建的 cmdb 系统,可以自己扩展服务发现接口进行指标采集。此外,还有文件或者静态的服务发现机制,只要能发现 Dubbo 服务的 IP 和服务接口,就可以进行指标采集。采集到的指标会自动存储在 Prometheus 的时序数据库里。

    上图是我们通过 Prometheus 的查询框查询出来的响应时间的最新指标。image.png
    Prometheus 的指标更侧重于存储与报警,如果我们想更直观的体现还需要接入 Grafana。Grafana 的目标是为企业提供简易接入的监控面板,上图是一个简易的全局大盘。

    我们通过筛选框可以做应用级别/机器 IP 维度/服务接口维度的筛选查询,查询服务的健康状态。可以看到,这些指标基本上都是基于前面总结的方法论实现的。比如 QPS、请求数量、成功率、失败率、请求的时延等等。

    此外,还有一些应用信息的指标,比如升级 Dubbo 3时,想看到哪些应用已经升级到新的版本,就可以看到新的应用的版本号,也会有应用信息的实例 IP 分布,还有一些线程资源。image.png
    刚才说的指标比较抽象,它更利于帮助我们发现问题,更多的场景下需要进行系统之间的问题的诊断。微服务系统往往是多个系统之间有关联关系,所以服务之间的诊断更依赖于全链路系统。

    全链路系统的建设,当时考虑使用 Agent 的方式,这种方式对于用户接入是非常方便的,在代理层直接注入一些指标采集的方式即可。如果用这种方式在企业里做全链路的覆盖是非常方便的,但如果 Dubbo 只做 Dubbo 的链路数据采集,风险会比较大。因为 Agent 接入后会进行字节码修改出现无法提前发现的问题或者其他的不兼容的问题,有些时候很难在前期发现。

    另外,Dubbo 也调研了一些开源的链路追踪门面。Dubbo 选择通过原生内置门面的形式,让专业的事情交给专业人做。Dubbo 通过适配各大厂商的全链路追踪系统,快速适配接入的用户,只需增加少量的配置就可以实现链路数据的导出。image.png
    在链路追踪门面的选型方面,我们参考了业界比较流行的几个链路,从中挑选了两个进行选型,分别是 OpenTelemetry 和 Micrometer。

    OpenTelemetry,大家应该非常熟悉,它支持多语言,规范标准统一的 API,支持大部分流行的第三方厂商的全链路追踪系统,是 CNCF 孵化的项目之一,很多中间件应用都已经接入了这种规范。

    Micrometer,大家可能对它的印象是指标采集的接入。它的缺点是只能支持 Java,但它在语言方面,优点是 Spring Boot 3 默认的指标采集,链路采集默认支持 micrometer-tracing 的功能。此外,Micrometer 它还可以通过桥接包直接转化为 OTEL 的协议,间接也支持各种第三方的采集。并且 Micrometer 自身也通过桥接机制可以桥接很多的全链路厂商。image.png
    我们为了和前面使用到的指标采集进行统一,使用 Micrometer 后无需额外引入第三方的依赖,只需使用 Micrometer Tracing 的桥接包,就可以快速的接入。image.png
    上图是链路追踪系统的简单结构。Dubbo 的链路采集主要采集 rpc 请求的链路。在消费者发起请求的时候,如果存在链路 ID 就直接复用,没有的话会产生链路 ID,然后把它们上报给采集器。同样消费者也会通过 rpc 的上下文把链路数据透传给提供端。提供端拿到这个链路数据后,会对它进行父子关系的关联。最后把这些链路数据上报采集器。

    采集器在前面的时候主要是内存级别的操作,对系统的损耗比较小。后面将进行异步的导出,和前面指标体系是一样的。内存级的同步采集,异步的把数据导出到第三方的链路系统。

    image.png
    链路系统接入也比较简单,主要是引入 Spring Boot Starter 的依赖包,进行一些比较简单的配置,包括不同厂商的导出地址配置等等。

    链路系统可以帮助大家分析性能与异常,但一些系统问题原因的排查可能需要更详细的日志上下文来进行关联。这个时候这个链路系统会把数据放到日志系统的上下文 MDC 里面,然后在日志在上下文里把链路系统存入的内容取出来,展示到日志的文件里。

    日志文件可能也会接触到第三方的日志平台,如果有二次开发能力,可以在这种系统平台里加上链接,让这些 Traceid 自动跳转,即全链路系统自动跳转到日志平台,日志平台也可以自动跳转到全链路系统,查询问题会非常高效。

    2023-11-21 10:30:19
    赞同 4 展开评论 打赏
  • 《Apache Dubbo3 云原生升级与企业最佳实践》是一本关于开源微服务技术发展、云原生微服务选型和企业实践分享的精彩内容的书籍。

    本书通过摘取 Community Over Code Asia 2023(原 ApacheCon Asia)的 RPC & Service Mesh专题的精彩内容,以 Apache Dubbo 为中心展开,为读者带来了丰富的知识和实践经验。
    image.png

    在阅读本书的过程中,我对于开源微服务技术的发展有了更深入的了解。书中详细介绍了 Apache Dubbo 的发展历程和特点,以及它在云原生环境下的升级和优化。通过学习本书,我了解到了云原生微服务的概念和优势,以及如何选择合适的云原生微服务框架。
    image.png

    此外,本书还分享了企业在实践中遇到的问题和解决方案。作者通过实际案例,介绍了如何在实际项目中应用 Apache Dubbo,并提供了一套完整的企业级解决方案。这些实践经验对于我来说非常宝贵,可以帮助我在未来的工作中更好地应用和推广 Apache Dubbo。

    2023-11-17 15:23:21
    赞同 4 展开评论 打赏
  • image.png
    读完之后,我个人对Dubbo 3版本中Triple协议的优化与应用内容比较感兴趣。

    通过书本我们可以了解到Dubbo 3版本中的Triple协议是一个重要的优化和应用。Triple协议是一种基于HTTP/HTTPS协议的RESTful风格的Dubbo协议,它具有低延迟、高并发、易于扩展等优点。
    image.png

    在Dubbo 3版本中,Triple协议进行了多项优化,包括:

    • 改进了请求分发算法,提高了负载均衡效率;
    • 引入了HTTP长连接机制,减少了网络开销;
    • 对请求头进行了压缩,减小了传输数据量;
    • 引入了断路器机制,增强了系统的容错能力。

    这些优化措施使得Triple协议在实际应用中表现出色,可以满足大规模分布式系统的需求。
    image.png

    个人觉得哈,Dubbo 3版本中的Triple协议优化和应用是非常成功的,它为我们提供了一种高效、可靠的远程调用解决方案。

    2023-11-17 10:37:53
    赞同 3 展开评论 打赏
  • 云端行者觅知音, 技术前沿我独行。 前言探索无边界, 阿里风光引我情。

    本书概要:
    这本书主要介绍了Apache Dubbo的云原生升级与企业最佳实践,并且涵盖了RPC & SERVICE MESH专题分享实录等内容。

    在书中,作者们详细讲解了如何通过Apache Dubbo静态化方案深入解析,从而将启动速度提升10倍。此外,他们还探讨了Apache Dubbo云原生可观测性的探索与实践,以及基于Triple实现Web移动端后端全面打通的方法。同时,书中还提供了政采云基于Dubbo的混合云数据跨网实践案例,以及OpenSergo& Dubbo微服务治理最佳实践等相关内容。

    除此之外,书中还介绍了Seata——一种微服务架构下的一站式分布式事务解决方案。这些内容对于想要深入了解微服务架构的企业和个人来说是非常有价值的。

    总的来说,这本书适合那些对云计算和微服务架构感兴趣的人群。

    精选章节:
    不过我个人比较喜欢云原生可观测的探索与实践部分。
    image.png
    这个文章中详细的介绍了Dubbo的可观测性和多维度指标体系的建设和实践。Dubbo作为一个微服务RPC框架,为了提高云原生时代的稳定性和可靠性,需要建立一个完整的可观测性系统。Dubbo的多维度指标体系可以从纵向和横向两个维度对指标进行采集和聚合,并将指标导出到外部系统进行分析和诊断。Dubbo的指标采集覆盖了Dubbo的三大中心和RPC链路上的数据采集,同时支持多种方法论进行指标采集。Dubbo的多维度指标体系已经完成,并且可以通过快速集成的Spring Boot中的Starter包实现指标的自动采集。

    读后感:
    读完这篇文章后,我个人对Apache Dubbo的静态化方案有了更加深入的理解,并且了解了Dubbo的多维度指标体系及其应用,希望有机会能够深入了解相关知识。

    2023-11-17 09:36:32
    赞同 1 展开评论 打赏
  • 《Apache Dubbo3 云原生升级与企业最佳实践》这本书为我打开了一个全新的视野,让我深入了解了开源微服务技术的发展方向和云原生微服务的选型。

    书中详细介绍了Apache Dubbo的云原生升级过程,以及在企业实践中的最佳实践,这对于我来说是非常有价值的学习资源。
    image.png

    作者通过深入浅出的方式,将复杂的技术概念解释得非常清楚,使得我能够更好地理解和掌握这些知识。

    此外,书中还分享了许多实际案例,这些案例让我对如何在实际工作中应用这些知识有了更深入的理解。
    image.png

    总的来说,这本书是一本非常实用的学习资料,无论你是正在寻找云原生微服务选型方案的开发者,还是希望了解开源微服务技术发展动态的研究者,都会从中获益良多。

    我强烈推荐大家阅读这本书,相信你会从中获得很多启发和收获。

    2023-11-15 08:50:53
    赞同 3 展开评论 打赏
  • 第76期活动获奖名单:DreamSpark、逆境清醒,请以上同学入群私聊群主收货信息

    2023-11-14 18:09:48
    赞同 3 展开评论 打赏
滑动查看更多
问答排行榜
最热
最新

相关电子书

更多
Apache Flink技术进阶 立即下载
Apache Spark: Cloud and On-Prem 立即下载
Hybrid Cloud and Apache Spark 立即下载

相关镜像