blob: aa6cea282c46016ed3b6b16e92650457623accd5 [file] [log] [blame]
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Apache Dubbo – 核心优势</title><link>https://dubbo.apache.org/zh-cn/overview/what/advantages/</link><description>Recent content in 核心优势 on Apache Dubbo</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><atom:link href="https://dubbo.apache.org/zh-cn/overview/what/advantages/index.xml" rel="self" type="application/rss+xml"/><item><title>Overview: 快速易用</title><link>https://dubbo.apache.org/zh-cn/overview/what/advantages/usability/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/what/advantages/usability/</guid><description>
&lt;p>无论你是计划采用微服务架构开发一套全新的业务系统,还是准备将已有业务从单体架构迁移到微服务架构,Dubbo 框架都可以帮助到你。Dubbo 让微服务开发变得非常容易,它允许你选择多种编程语言、使用任意通信协议,并且它还提供了一系列针对微服务场景的开发、测试工具帮助提升研发效率。&lt;/p>
&lt;h2 id="多语言-sdk">多语言 SDK&lt;/h2>
&lt;p>Dubbo 提供几乎所有主流语言的 SDK 实现,定义了一套统一的微服务开发范式。Dubbo 与每种语言体系的主流应用开发框架做了适配,总体编程方式、配置符合大多数开发者已有编程习惯。&lt;/p>
&lt;p>比如在 Java 语言体系下,你可以使用 &lt;code>dubbo-spring-boot-starter&lt;/code> 来开发符合 Spring、Spring Boot 模式的微服务应用,开发 Dubbo
应用只是为 Spring Bean 添加几个注解、完善 application.properties 配置文件。&lt;/p>
&lt;p>&lt;img src="https://dubbo.apache.org/imgs/v3/what/sdk.png" alt="sdk">&lt;/p>
&lt;h2 id="任意通信协议">任意通信协议&lt;/h2>
&lt;p>Dubbo 微服务间远程通信实现细节,支持 HTTP、HTTP/2、gRPC、TCP 等所有主流通信协议。与普通 RPC 框架不同,Dubbo 不是某个单一 RPC 协议的实现,它通过上层的 RPC 抽象可以将任意 RPC 协议接入 Dubbo 的开发、治理体系。&lt;/p>
&lt;p>多协议支持让用户选型,多协议迁移、互通等变得更灵活。&lt;/p>
&lt;p>&lt;img src="https://dubbo.apache.org/imgs/v3/what/protocol.png" alt="protocols">&lt;/p>
&lt;h2 id="加速微服务开发">加速微服务开发&lt;/h2>
&lt;h3 id="项目脚手架">项目脚手架&lt;/h3>
&lt;p>&lt;a href="https://start.dubbo.apache.org/bootstrap.html" target="_blank">项目脚手架&lt;/a> 让 Dubbo 项目创建、依赖管理更容易。&lt;/p>
&lt;p>比如通过如下可视化界面,勾选 Dubbo 版本、Zookeeper 注册中心以及必要的微服务生态选项后,一个完整的 Dubbo 项目模板就可以自动生成,接下来基于脚手架项目添加业务逻辑就可以了。更多脚手架使用方式的讲解,请参见任务模块的 &lt;a href="../../../tasks/develop/template/">通过模板生成项目脚手架&lt;/a>&lt;/p>
&lt;p>&lt;img src="https://dubbo.apache.org/imgs/v3/advantages/initializer.png" alt="脚手架示例图">&lt;/p>
&lt;h3 id="开发测试">开发测试&lt;/h3>
&lt;p>相比于单体应用,微服务分布式的特性会让不同组织之间的研发协同变得困难,这时我们需要有效的配套工具,用来提升整体的微服务研发效率。&lt;/p>
&lt;p>Dubbo 从内核设计和实现阶段就考虑了如何解决开发、测试与运维问题,比如 Dubbo RPC 协议均支持 curl 访问,让开发协作更简单;配合官方提供的生态工具,可以实现服务测试、服务 Mock、文档管理、单机运维等能力,并通过 Dubbo Admin 控制台将所有操作都可视化的展现出来。&lt;/p>
&lt;p>&lt;img src="https://dubbo.apache.org/imgs/v3/what/admin.png" alt="admin">&lt;/p></description></item><item><title>Overview: 超高性能</title><link>https://dubbo.apache.org/zh-cn/overview/what/advantages/performance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/what/advantages/performance/</guid><description>
&lt;p>Dubbo 被设计用于解决阿里巴巴超大规模的电商微服务集群实践,并在各个行业头部企业经过多年的十万、百万规模的微服务实践检验,因此,Dubbo 在通信性能、稳定性方面具有无可比拟的优势,非常适合构建近乎无限水平伸缩的微服务集群,这也是 Dubbo 从实践层面优于业界很多同类的产品的巨大优势。&lt;/p>
&lt;h2 id="高性能数据传输">高性能数据传输&lt;/h2>
&lt;p>Dubbo 内置支持 Dubbo2、Triple 两款高性能通信协议。其中&lt;/p>
&lt;ul>
&lt;li>Dubbo2 是基于 TCP 传输协议之上构建的二进制私有 RPC 通信协议,是一款非常简单、紧凑、高效的通信协议。&lt;/li>
&lt;li>Triple 是基于 HTTP/2 的新一代 RPC 通信协议,在网关穿透性、通用性以及 Streaming 通信上具备优势,Triple 完全兼容 gRPC 协议。&lt;/li>
&lt;/ul>
&lt;p>以下是基于 Dubbo 3.2 版本得出的压测指标数据,您也可以通过 &lt;a href="https://github.com/apache/dubbo-benchmark">dubbo-benchmark&lt;/a> 项目自行压测。&lt;/p>
&lt;h3 id="tcp-protocol-benchmark">TCP protocol benchmark&lt;/h3>
&lt;p>对比 Dubbo 2.x 及早期 3.x 版本&lt;/p>
&lt;ul>
&lt;li>较小报文场景 createUser、getUser 下,提升率约 180%。&lt;/li>
&lt;li>极小报文 existUser(仅一个boolean值)下提升率约 24%&lt;/li>
&lt;li>较大报文 listUser 提升率最高,达到了 1000%!&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://dubbo.apache.org/imgs/v3/performance/rpc-dubbo.png" alt="dubbo-rpc-protocol-benchmark">&lt;/p>
&lt;h3 id="triple-protocol-benchmark">Triple protocol benchmark&lt;/h3>
&lt;ul>
&lt;li>较小报文场景 createUser、existUser、getUser 下,较 3.1 版本性能提升约 40-45%,提升后的性能与 gRPC 同场景的性能基本持平。&lt;/li>
&lt;li>较大报文场景 listUser 下较 3.1 版本提升了约 17%,相较于同场景下的 gRPC 低 11%。&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://dubbo.apache.org/imgs/v3/performance/rpc-triple.png" alt="dubbo-http2-protobuf-benchmark">&lt;/p>
&lt;p>了解更多&lt;/p>
&lt;ul>
&lt;li>&lt;a href="../../../core-features/protocols">通信协议&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/apache/dubbo/issues/10558#issuecomment-1473015636">Benchmark 指标 (不定期更新)&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="构建可伸缩的微服务集群">构建可伸缩的微服务集群&lt;/h2>
&lt;p>业务增长带来了集群规模的快速增长,而集群规模的增长会对服务治理架构带来挑战:&lt;/p>
&lt;ul>
&lt;li>注册中心的存储容量瓶颈&lt;/li>
&lt;li>节点动态变化带来的地址推送与解析效率下降&lt;/li>
&lt;li>消费端存储大量网络地址的资源开销&lt;/li>
&lt;li>复杂的网络链接管理&lt;/li>
&lt;li>高峰期的流量无损上下线&lt;/li>
&lt;li>异常节点的自动节点管理&lt;/li>
&lt;/ul>
&lt;p>以上内容直接关系到微服务集群的稳定性,因此很容易成为影响集群和业务增长的瓶颈,集群规模越大,问题带来的影响面也就被进一步放大。很多开发者可能会想只有几个应用而已,当前不需要并不关心集群规模,但作为技术架构选型的关键因素之一,我们还是要充分考虑微服务集群未来的可伸缩性。并且基于对业界大量微服务架构和框架实现的调研,一些产品的性能瓶颈点可能很快就会到来(部分产品所能高效支持的瓶颈节点规模阈值都是比较低的,比如几十个应用、数百个节点)。&lt;/p>
&lt;p>Dubbo 的优势在于近乎无限水平扩容的集群规模,在阿里巴巴双十一场景万亿次调用的实践检验,通过以下内容了解 Dubbo 构建生产可用的、可伸缩的大规模微服务集群背后的原理:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="../../../core-features/service-discovery/">Dubbo3 服务发现&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../../core-features/traffic/">流量管控&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="智能化流量调度">智能化流量调度&lt;/h2>
&lt;p>Dubbo3 内置了具备自适应感知集群负载状态、智能调节流量分布的限流与调度算法实现,从消费者、提供者两个不同视角智能调整流量分布,最大限度确保将流量调度到具有最佳处理能力的实例上,从而提升整个集群的吞吐量与稳定性。&lt;/p>
&lt;h3 id="自适应负载均衡">自适应负载均衡&lt;/h3>
&lt;p>自适应负载均衡是从消费者视角考虑如何将请求分配到当前具有最优处理能力的机器实例。Dubbo3 新引入了两种负载均衡算法&lt;/p>
&lt;ul>
&lt;li>一种是基于公平性考虑的单纯 &lt;code>P2C&lt;/code> 算法&lt;/li>
&lt;li>另一种是基于自适应的方法 &lt;code>adaptive&lt;/code>,其试图自适应的衡量 provider 端机器的吞吐能力,然后将流量尽可能分配到吞吐能力高的机器上,以提高系统整体的性能。&lt;/li>
&lt;/ul>
&lt;h3 id="自适应限流">自适应限流&lt;/h3>
&lt;p>与负载均衡运行在消费者端不同的是,限流功能运行在提供者端。其作用是限制提供端实例处理并发任务时的最大数量。从理论上讲,服务端机器的处理能力是存在上限的,因此当并发请求量达到或接近上限时,拒绝掉一部分请求反而是更好的选择。相比于人为提前设置静态最大并发值,自适应限流算法可以动态调整服务端机器的最大并发值,使其可以在保证机器不过载的前提下,尽可能多的处理接收到的请求。&lt;/p>
&lt;p>关于这部分请参考 &lt;a href="../../../reference/proposals/heuristic-flow-control">Dubbo3 服务柔性设计文档&lt;/a>&lt;/p></description></item><item><title>Overview: 服务治理</title><link>https://dubbo.apache.org/zh-cn/overview/what/advantages/governance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/what/advantages/governance/</guid><description>
&lt;h2 id="流量管控">流量管控&lt;/h2>
&lt;p>在地址发现和负载均衡机制之外,Dubbo 丰富的流量管控规则可以控制服务间的流量走向和 API 调用,基于这些规则可以实现在运行期动态的调整服务行为如超时时间、重试次数、限流参数等,通过控制流量分布可以实现 A/B 测试、金丝雀发布、多版本按比例流量分配、条件匹配路由、黑白名单等,提高系统稳定性。&lt;/p>
&lt;h4 id="dubbo-流量管控能解决哪些问题">Dubbo 流量管控能解决哪些问题&lt;/h4>
&lt;p>场景一:搭建多套独立的逻辑测试环境。&lt;/p>
&lt;p>场景二:搭建一套完全隔离的线上灰度环境用来部署新版本服务。&lt;/p>
&lt;p>&lt;img src="https://dubbo.apache.org/imgs/v3/tasks/gray/gray1.png" alt="gray1">&lt;/p>
&lt;p>场景三:金丝雀发布&lt;/p>
&lt;p>&lt;img src="https://dubbo.apache.org/imgs/v3/tasks/weight/weight1.png" alt="weight1.png">&lt;/p>
&lt;p>场景四:同区域优先。当应用部署在多个不同机房/区域的时候,优先调用同机房/区域的服务提供者,避免了跨区域带来的网络延时,从而减少了调用的响应时间。&lt;/p>
&lt;p>&lt;img src="https://dubbo.apache.org/imgs/v3/tasks/region/region1.png" alt="region1">&lt;/p>
&lt;p>除了以上几个典型场景,我们还可以基于 Dubbo 支持的流量管控规则实现微服务场景中更丰富的流量管控,如:&lt;/p>
&lt;ul>
&lt;li>动态调整超时时间&lt;/li>
&lt;li>服务重试&lt;/li>
&lt;li>访问日志&lt;/li>
&lt;li>同区域优先&lt;/li>
&lt;li>灰度环境隔离&lt;/li>
&lt;li>参数路由&lt;/li>
&lt;li>按权重比例分流&lt;/li>
&lt;li>金丝雀发布&lt;/li>
&lt;li>服务降级&lt;/li>
&lt;li>实例临时拉黑&lt;/li>
&lt;li>指定机器导流&lt;/li>
&lt;/ul>
&lt;p>可以在 &lt;a href="../../../tasks/traffic-management/">流量管理任务&lt;/a> 中了解以上实践场景细节。背后的规则定义与工作原理请参见 &lt;a href="../../../core-features/traffic/">Dubbo 流量管控规则设计与定义&lt;/a>。。&lt;/p>
&lt;h2 id="微服务生态">微服务生态&lt;/h2>
&lt;p>围绕 Dubbo 我们构建了完善的微服务治理生态,对于绝大多数服务治理需求,通过简单几行配置即可开启。对于官方尚未适配的组件或者用户内部系统,也可以通过 Dubbo 扩展机制轻松适配。&lt;/p>
&lt;p>&lt;img src="https://dubbo.apache.org/imgs/v3/what/governance.png" alt="governance">&lt;/p>
&lt;h2 id="可视化控制台">可视化控制台&lt;/h2>
&lt;p>Dubbo Admin 是 Dubbo 官方提供的可视化 Web 交互控制台,基于 Admin 你可以实时监测集群流量、服务部署状态、排查诊断问题。&lt;/p>
&lt;h2 id="安全体系">安全体系&lt;/h2>
&lt;p>Dubbo 支持基于 TLS 的 HTTP、HTTP/2、TCP 数据传输通道,并且提供认证、鉴权策略,让开发者实现更细粒度的资源访问控制。&lt;/p>
&lt;h2 id="服务网格">服务网格&lt;/h2>
&lt;p>基于 Dubbo 开发的服务可以透明的接入 Istio 等服务网格体系,Dubbo 支持基于 Envoy 的流量拦截方式,也支持更加轻量的 Proxyless Mesh 部署模式。&lt;/p></description></item><item><title>Overview: 生产环境验证</title><link>https://dubbo.apache.org/zh-cn/overview/what/advantages/production-ready/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/what/advantages/production-ready/</guid><description>
&lt;p>Apache Dubbo 是一款有着数以万计企业用户的国际化开源项目,经过了多年大规模集群生产环境的检验,影响了数百万开发者,带动了大量微服务开源生态发展。Dubbo 从企业实践中孵化并走向开源,又迅速在开源社区获得了成功,大量的生产实践用户是 Dubbo 长期保持先进性、稳定性和活跃度的核心驱动力。&lt;/p>
&lt;h2 id="dubbo-在阿里巴巴的应用">Dubbo 在阿里巴巴的应用&lt;/h2>
&lt;p>Dubbo 设计用于解决阿里巴巴内部复杂的电商微服务集群的开发和治理问题,在 2020 年,阿里巴巴与 Apache Dubbo 社区共同合作,基于 Dubbo2 &amp;amp; HSF2 发布了面向云原生架构的下一代服务框架 - Dubbo3,目前,Dubbo3 已经完全取代 HSF、Dubbo2 成为阿里巴巴内部统一的服务框架,成功的跑在了数十万应用、数百万节点的双十一集群之上。&lt;/p>
&lt;p>Dubbo3 吸取了 HSF2 框架所有大规模微服务集群的治理经验,解决了 Dubbo2 架构设计上长期积累的一些缺陷,同时增加了一系列面向云原生架构的新特性。&lt;/p>
&lt;p>&lt;img src="https://dubbo.apache.org/imgs/v3/advantages/production-ready.png" alt="production-ready">&lt;/p>
&lt;ul>
&lt;li>阿里巴巴结合 HSF 框架的大规模集群实践经验,基于 Apache Dubbo、开源社区需求等推出了面向云原生架构的全新服务框架 - Dubbo3,Dubbo3 在完全兼容之前 API 模式的情况下,完成了彻底的云原生架构升级。&lt;/li>
&lt;li>Dubbo 的高度可扩展能力是其广泛适用的重要前提,阿里巴巴基于 Dubbo3 内核维护了一套内部特有的适配插件体系以实现平滑升级,这包括注册中心扩展、路由组件扩展、监控组件扩展等。&lt;/li>
&lt;li>几乎所有主流云厂商、主流微服务开源社区都提供了 Dubbo 适配或托管服务。&lt;/li>
&lt;/ul>
&lt;p>关于阿里巴巴 Dubbo3 应用的更多细节,请参见 &lt;a href="https://dubbo.apache.org/zh-cn/blog/">博客文章&lt;/a>&lt;/p>
&lt;h2 id="更多案例">更多案例&lt;/h2>
&lt;p>据 &lt;a href="https://github.com/apache/dubbo/issues/1012">Wanted, Who&amp;rsquo;s Using Dubbo&lt;/a> 统计,Dubbo 已知部分典型用户包括:&lt;/p>
&lt;p>网联清算、银联商务、中国人寿、中国平安、中国银行、人民银行、工商银行、招商证券、平安保险、中国人寿、阿里巴巴、滴滴出行、携程网、小米、斗鱼直播、瓜子二手车、金蝶、亚信科技、中国电信、文思海辉、中科软、科大讯飞、恒生电子、红星凯美龙、海尔、新东方、软通动力、中远海运、昆明航空、中通快递、顺丰科技、普华永道等。&lt;/p>
&lt;div class="row c-testimonials">&lt;div class="col-12 col-sm-6 col-lg-2 c-testimonials__testimonial">
&lt;a href="https://dubbo.apache.org" target="_blank" rel="noopener">
&lt;img class="used-by-logo" src="https://dubbo.apache.org/imgs/user/logo/users_alibaba.png" alt="阿里巴巴 testimonial logo">
&lt;/a>
&lt;/div>
&lt;div class="col-12 col-sm-6 col-lg-2 c-testimonials__testimonial">
&lt;a href="https://dubbo.apache.org" target="_blank" rel="noopener">
&lt;img class="used-by-logo" src="https://dubbo.apache.org/imgs/user/logo/users_chinalife.png" alt="中国人寿 testimonial logo">
&lt;/a>
&lt;/div>
&lt;div class="col-12 col-sm-6 col-lg-2 c-testimonials__testimonial">
&lt;a href="https://dubbo.apache.org" target="_blank" rel="noopener">
&lt;img class="used-by-logo" src="https://dubbo.apache.org/imgs/user/logo/users_ctrip.png" alt="携程网 testimonial logo">
&lt;/a>
&lt;/div>
&lt;div class="col-12 col-sm-6 col-lg-2 c-testimonials__testimonial">
&lt;a href="https://dubbo.apache.org" target="_blank" rel="noopener">
&lt;img class="used-by-logo" src="https://dubbo.apache.org/imgs/user/logo/users_didi.png" alt="滴滴 testimonial logo">
&lt;/a>
&lt;/div>
&lt;div class="col-12 col-sm-6 col-lg-2 c-testimonials__testimonial">
&lt;a href="https://dubbo.apache.org" target="_blank" rel="noopener">
&lt;img class="used-by-logo" src="https://dubbo.apache.org/imgs/user/logo/users_haier.png" alt="海尔集团 testimonial logo">
&lt;/a>
&lt;/div>
&lt;div class="col-12 col-sm-6 col-lg-2 c-testimonials__testimonial">
&lt;a href="https://dubbo.apache.org" target="_blank" rel="noopener">
&lt;img class="used-by-logo" src="https://dubbo.apache.org/imgs/user/logo/users_icbc.png" alt="工商银行 testimonial logo">
&lt;/a>
&lt;/div>
&lt;div class="col-12 col-sm-6 col-lg-2 c-testimonials__testimonial">
&lt;a href="https://dubbo.apache.org" target="_blank" rel="noopener">
&lt;img class="used-by-logo" src="https://dubbo.apache.org/imgs/user/logo/users_kingdee.png" alt="金蝶 testimonial logo">
&lt;/a>
&lt;/div>
&lt;div class="col-12 col-sm-6 col-lg-2 c-testimonials__testimonial">
&lt;a href="https://dubbo.apache.org" target="_blank" rel="noopener">
&lt;img class="used-by-logo" src="https://dubbo.apache.org/imgs/user/logo/users_kunming.png" alt="昆明航空 testimonial logo">
&lt;/a>
&lt;/div>
&lt;div class="col-12 col-sm-6 col-lg-2 c-testimonials__testimonial">
&lt;a href="https://dubbo.apache.org" target="_blank" rel="noopener">
&lt;img class="used-by-logo" src="https://dubbo.apache.org/imgs/user/logo/users_telecom.png" alt="中国电信 testimonial logo">
&lt;/a>
&lt;/div>
&lt;div class="col-12 col-sm-6 col-lg-2 c-testimonials__testimonial">
&lt;a href="https://dubbo.apache.org" target="_blank" rel="noopener">
&lt;img class="used-by-logo" src="https://dubbo.apache.org/imgs/user/logo/users_wanglian.png" alt="网联清算 testimonial logo">
&lt;/a>
&lt;/div>
&lt;div class="col-12 col-sm-6 col-lg-2 c-testimonials__testimonial">
&lt;a href="https://dubbo.apache.org" target="_blank" rel="noopener">
&lt;img class="used-by-logo" src="https://dubbo.apache.org/imgs/user/logo/users_xunfei.png" alt="科大讯飞 testimonial logo">
&lt;/a>
&lt;/div>
&lt;div class="col-12 col-sm-6 col-lg-2 c-testimonials__testimonial">
&lt;a href="https://dubbo.apache.org" target="_blank" rel="noopener">
&lt;img class="used-by-logo" src="https://dubbo.apache.org/imgs/user/logo/users_yinlian.png" alt="银联商务 testimonial logo">
&lt;/a>
&lt;/div>
&lt;div class="col-12 col-sm-6 col-lg-2 c-testimonials__testimonial">
&lt;a href="https://dubbo.apache.org" target="_blank" rel="noopener">
&lt;img class="used-by-logo" src="https://dubbo.apache.org/imgs/user/logo/users_zto.png" alt="中通快递 testimonial logo">
&lt;/a>
&lt;/div>
&lt;div class="col-12 col-sm-6 col-lg-2 c-testimonials__testimonial">
&lt;a href="https://dubbo.apache.org" target="_blank" rel="noopener">
&lt;img class="used-by-logo" src="https://dubbo.apache.org/imgs/user/logo/users_mi.png" alt="小米 testimonial logo">
&lt;/a>
&lt;/div>
&lt;div class="col-12 col-sm-6 col-lg-2 c-testimonials__testimonial">
&lt;a href="https://dubbo.apache.org" target="_blank" rel="noopener">
&lt;img class="used-by-logo" src="https://dubbo.apache.org/imgs/user/logo/users_pingan.png" alt="中国平安 testimonial logo">
&lt;/a>
&lt;/div>
&lt;div class="col-12 col-sm-6 col-lg-2 c-testimonials__testimonial">
&lt;a href="https://dubbo.apache.org" target="_blank" rel="noopener">
&lt;img class="used-by-logo" src="https://dubbo.apache.org/imgs/user/logo/users_asiainfo.png" alt="亚信科技 testimonial logo">
&lt;/a>
&lt;/div>
&lt;div class="col-12 col-sm-6 col-lg-2 c-testimonials__testimonial">
&lt;a href="https://dubbo.apache.org" target="_blank" rel="noopener">
&lt;img class="used-by-logo" src="https://dubbo.apache.org/imgs/user/logo/users_renmin.png" alt="人民银行 testimonial logo">
&lt;/a>
&lt;/div>
&lt;div class="col-12 col-sm-6 col-lg-2 c-testimonials__testimonial">
&lt;a href="https://dubbo.apache.org" target="_blank" rel="noopener">
&lt;img class="used-by-logo" src="https://dubbo.apache.org/imgs/user/logo/users_acmedcare.png" alt="Acmedcare testimonial logo">
&lt;/a>
&lt;/div>
&lt;/div></description></item></channel></rss>