张贴在 2019

  • Dubbo可扩展机制源码解析

    Thursday, May 02, 2019 在 功能演示

    在Dubbo可扩展机制实战中,我们了解了Dubbo扩展机制的一些概念,初探了Dubbo中LoadBalance的实现,并自己实现了一个LoadBalance。是不是觉得Dubbo的扩展机制很不错呀,接下来,我们就深入Dubbo的源码,一睹庐山真面目。 ExtensionLoader ExtensionLoader 是最核心的类,负责扩展点的加载和生命周期管理。我们就以这个类开始吧。 ExtensionLoader 的方法比较多,比较常用的方法有: public static <T> …

    更多

  • Dubbo 一致性Hash负载均衡实现剖析

    Wednesday, May 01, 2019 在 功能演示

    需要强调的是,Dubbo的Hash映射模型与大部分网上资料描述的环形队列Hash映射模型是存在一些区别的。于我而言,环形队列Hash映射模型,不足以让我对一致性Hash有足够彻底的了解。直到看懂了Dubbo的一致性Hash的实现,才觉得豁然开朗。 一、环形队列Hash映射模型 这种方案,其基础还是基于取模运算。对2^32取模,那么,Hash值的区间为[0, 2^32-1]。接下来要做的,就包括两部分: a、映射服务 将服务地址(ip+端口)按照一定规则构造出特定的识别码(如md5码),再用识别码 …

    更多

  • Dubbo可扩展机制实战

    Thursday, April 25, 2019 在 功能演示

    1. Dubbo的扩展机制 在Dubbo的官网上,Dubbo描述自己是一个高性能的RPC框架。今天我想聊聊Dubbo的另一个很棒的特性, 就是它的可扩展性。 如同罗马不是一天建成的,任何系统都一定是从小系统不断发展成为大系统的,想要从一开始就把系统设计的足够完善是不可能的,相反的,我们应该关注当下的需求,然后再不断地对系统进行迭代。在代码层面,要求我们适当的对关注点进行抽象和隔离,在软件不断添加功能和特性时,依然能保持良好的结构和可维护性,同时允许第三方开发者对其功能进行扩展。在某些时候,软件设 …

    更多

  • 提前if判断帮助CPU分支预测

    Sunday, February 03, 2019 在 功能演示

    分支预测 在stackoverflow上有一个非常有名的问题:为什么处理有序数组要比非有序数组快?,可见分支预测对代码运行效率有非常大的影响。 现代CPU都支持分支预测(branch prediction)和指令流水线(instruction pipeline),这两个结合可以极大提高CPU效率。对于像简单的if跳转,CPU是可以比较好地做分支预测的。但是对于switch跳转,CPU则没有太多的办法。switch本质上是据索引,从地址数组里取地址再跳转。 要提高代码执行效率,一个重要的原则就是尽 …

    更多

  • 当Dubbo遇上Arthas:排查问题的实践

    Saturday, February 02, 2019 在 生态集成

    Apache Dubbo是Alibaba开源的高性能RPC框架,在国内有非常多的用户。 Github: https://github.com/apache/dubbo 文档:http://dubbo.apache.org/zh-cn/ Arthas是Alibaba开源的应用诊断利器,9月份开源以来,Github Star数三个月超过6000。 Github: https://github.com/alibaba/arthas 文档:https://arthas.aliyun.com/doc/ …

    更多

  • 遇见Dubbo

    Saturday, January 26, 2019 在 社区动态

    我是一个有Dubbo情节的程序员。 Dubbo以不同方式,陪伴了我时间不长的整个代码生涯。不久前,通过社区投票,我被选举为Committer。当时我在朋友圈发了一句话,也是贯穿我从开始使用Dubbo、研究Dubbo、贡献Dubbo到最后成为Committer的全过程,一直为我提供内心无与伦比愉悦的源泉:成长这种事,能看见脚印特别幸福。 今天来个回忆杀,把我和Dubbo的那些事拿出来说说。 小白 我知道Dubbo,是在我大三翘课出去实习的时候,那个时候是无知的,我眼里最牛的人就是能熟练使用各种配 …

    更多

  • 如何使用Seata保证Dubbo微服务间的一致性

    Thursday, January 17, 2019 在 生态集成

    案例 用户采购商品业务,整个业务包含3个微服务: 库存服务: 扣减给定商品的库存数量。 订单服务: 根据采购请求生成订单。 账户服务: 用户账户金额扣减。 业务结构图 StorageService public interface StorageService { /** * 扣除存储数量 */ void deduct(String commodityCode, int count); } OrderService public interface OrderService { /** * 创建 …

    更多

  • 新版 Dubbo Admin 介绍

    Monday, January 07, 2019 在 生态集成

    github: https://github.com/apache/dubbo-ops Dubbo Admin之前的版本过于老旧,也长期疏于维护,因此在去年年中的时候,对该项目进行了一次重构,项目结构上的变化如下: 将后端框架从webx替换成spring boot 前端采用Vue和Vuetify.js作为开发框架 移除velocity模板 集成swagger,提供api管理功能 当前版本的Dubbo Admin包含了之前版本中的绝大部分功能,包括服务治理,服务查询等,同时支持了Dubbo2.7中 …

    更多

  • 浅谈 RPC

    Monday, January 07, 2019 在 功能演示

    近几年随着微服务化项目的崛起,逐渐成为许多公司中大型分布式系统架构的主流方式,而今天所说的 RPC 在这其中扮演着至关重要的角色。随着这段日子公司项目微服务化的演进,发现在日常开发中都在隐式或显式的使用 RPC,一些刚刚接触 RPC 的小伙伴会感觉无所适从,而一些入行多年的老手虽然使用 RPC 经验丰富,但有些对其原理也一知半解,缺乏对原理的深入理解,往往也会造成开发中的一些误用。 什么是RPC? RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程 …

    更多

  • Dubbo 在瓜子二手车的实践

    Saturday, January 05, 2019 在 生态集成

    前言 随着瓜子业务的不断发展,系统规模在逐渐扩大,目前在瓜子的私有云上已经运行着数百个dubbo应用,上千个dubbo实例。瓜子各部门业务迅速发展,版本没有来得及统一,各个部门都有自己的用法。随着第二机房的建设,dubbo版本统一的需求变得越发迫切。几个月前,公司发生了一次与dubbo相关的生产事故,成为了公司dubbo版本升级的诱因。 接下来,我会从这次事故开始,讲讲我们这段时间所做的dubbo版本升级的历程以及dubbo后续多机房的方案。 一、Ephermal节点未及时删除导 …

    更多