摘要:
分布式共识算法 (Consensus Algorithm) 如何理解分布式共识? 多个参与者 针对 某一件事 达成完全 一致 :一件事,一个结论 已达成一致的结论,不可推翻 有哪些分布式共识算法? Paxos:被认为是分布式共识算法的根本,其他都是其变种,但是 paxos 论文中只给出了单个提案的过 阅读全文
摘要:
作者简介 Vaughn Vernon是一个经验丰富的软件工匠,在软件设计、开发和架构方面拥有超过25年的从业经验。他提倡通过创新来简化软件的设计和实现。从20世纪80年代开始,他便开始使用面向对象语言进行编程。90年代初期,便在领域建模中应用了领域驱动设计。 作者的初衷很屌 本书中的绝大多数例子都是 阅读全文
摘要:
提到DevOps这个词,我相信很多人一定不会陌生。 作为一个热门的概念,DevOps近年来频频出现在各大技术社区和媒体的文章中,备受行业大咖的追捧,也吸引了很多吃瓜群众的围观。 那么,DevOps是什么呢? 有人说它是一种方法,也有人说它是一种工具,还有人说它是一种思想。更有甚者,说它是一种哲学。 阅读全文
摘要:
这四个项目能放在一起比较的背景应该是分布式计算的演进过程。 一、MapReduce开源分布式计算的第一个流行的框架是 Hadoop 项目中的 MapReduce 模块。它将所有计算抽象成 Map 和 Reduce 两个阶段,在计算时通过增加机器,并行的读取数据文件,进行 Map 或 Reduce 的 阅读全文
摘要:
个人感觉这个框架非常适合UI自动化测试,他不仅能把用例中的测试步骤以非常友好的形式展现出来,而且能够非常灵活的构建场景; 一、简介 Cucumber 是一个能够理解用普通语言 描述的测试用例的行为驱动开发(BDD)的自动化测试工具,用Ruby**编写,支持Java和·Net等多种开发语言。 Cucu 阅读全文
摘要:
本文作者:特邀敏捷教练梁堃 前段时间在和一个小伙伴聊天的时候,他问了阿甲这样一个问题:Scrum guide中把固定时间盒周期称为sprint(冲刺),但是为什么大家在平时都愿意把它称为迭代(iteration)呢? 从阿甲接触敏捷至今,对于sprint和iteration这两个词也是经常混着用,但 阅读全文
摘要:
说到支付网关,首先看一下网关的定义,网关的作用是实现网络之间的通讯链接,包含两个基本功能:网间连接和协议转换。 同理,商户业务系统中的支付板块实现的就是商户业务系统与银行支付系统之间的链接,所起到的作用是类似的,可以被看作为一个网关。 因此,本文要讲的支付网关设计,其实就是商户业务系统的支付板块设计 阅读全文
摘要:
1、 背景 Nresource服务日均4.5亿流量,考虑到未来流量急增场景,我们打算对大流量接口进行缓存化处理;根据服务管理平台数据统计显示getUsableResoureCount接口调用量很大,接近40%,故对此接口进行缓存化处理。 2、 方案调研 getUsableResoureCount接口 阅读全文
摘要:
前言 58作为一个分类信息网站,作为信息服务的提供平台,我们的客户在我们的平台的交易链路,抽象后可以描述为:商户购买服务->将购买后的资源托管到资源中心->商家消耗相关资源->收入的核算。 具体业务流程如下图: 图0-1 资源中心业务流程图 资源中心就是我们交易链路中客户购买相关服务后将相关服务资源 阅读全文
摘要:
1、背景 前一段时间观察了一下资源中心CPU的利用率,入下图 CPU峰值利用率在10%左右,有点资源浪费,所以进行了缩容。在节省了30%的硬件资源之后,服务大部分指标正常,但是超时量有点增长,有原来的每天50以内,变到了如今的250以内。所以来看一波小小的优化。 首先对比下缩容前后的变化 硬件资源减 阅读全文
摘要:
这一讲我会告诉你,怎么设计出优美的演讲结构。 演讲结构的本质是三个关键词: 关键内容、提炼抽象、排列组合 。 但是这样说有点抽象,今天我就给你四个非常简单好记,又经典实用的结构。它们分别是:1. 黄金圈法则结构;2. PREP结构;3. 时间轴结构;4. 金字塔结构。下面我一个一个来给你讲。 | 黄 阅读全文
摘要:
一、前言 领域驱动设计(Domain-Driven Design,简称 DDD)是一种软件开发设计思想,其旨在以领域为核心,让软件系统在实现时准确地基于对真实业务过程的建模,专注于业务问题域的需要。 DDD将软件系统设计分为了2个部分:战略设计和战术设计,战略设计用于提炼问题域并塑造应用程序的架构, 阅读全文
摘要:
这个节点是sentinel流控接口,主要承担的作用是限流和预热。还是老套路,在介绍源码之前先介绍一下源码中用到的几个核心原理,这样大家看源码相对轻松一些。 1、核心算法 1.1 漏洞算法和令牌通算法 漏桶可以看作是一个带有常量服务时间的单服务器队列,如果漏桶(包缓存)溢出,那么数据包会被丢弃。 在网 阅读全文
摘要:
本篇内容主要主要从理论及源码角度介绍sentinel降级和限流的核心原理。如果有对sentinel功能不了解的可以先阅读下《sentinel--初级使用篇》。 1、核心骨架介绍 Sentinel 的核心骨架,将不同的 Slot 按照顺序串在一起(责任链模式),从而将不同的功能(限流、降级、系统保护) 阅读全文
摘要:
1、官方资料 github官网地址:https://github.com/alibaba/Sentinel wiki:https://github.com/alibaba/Sentinel/wiki/ 2、基本使用方式 2.1 Sentinel的初体验 引入依赖 <dependency> <grou 阅读全文
摘要:
之前有个同事问我,在跨部门沟通中别人不配合你怎么整? 原因有多种,比如团队KPI不一致,再比如作为服务部门人家就认为没有必要接入你,再比如优先级不一致等等。 一、跨部门协作四要素 在告诉大家我是怎么给他解答这个问题之前,先跟大家聊一下跨部门协作的四要素: 红色虚线之上的是我们自己可以进行推动的,可以 阅读全文
摘要:
从上图可以看到批量消耗平均耗时在100ms以上,有时候甚至超过500ms,这是在1分钟内的平均耗时,我看过请求日志有些甚至在1000ms以上。 对于一个有着4亿请求量的服务来说,为了保证服务的质量与性能,该接口必定在优化名单之内的。 先从代码看起 整体代码梳理了一遍,没有什么太大的问题,不存在一些常 阅读全文
摘要:
前言 不久前在部门周会上分享了 Hystrix 源码解析之后,就无奈地背上了专家包袱,同事们都认为我对 Hystrix 很熟,我们接触 Hystrix 更多的还是工作中的使用和配置,所以很多人一遇到 Hystrix 的配置问题就会过来问我。为了不让他们失望,我把 Hystrix 的 配置文档 仔细看 阅读全文
摘要:
1. 制定该规范的目的: 码出高效,码出质量.结合自己的业务场景,整理出适合自己的规范. 2. 当前版本规范主要包含下列内容: 一. 代码编码规范 (一) 基本规范 A. 命名规范 通用:以英文为主导的驼峰格式, 不允许出现拼音命名和中文命名,非实际意义的数字不可使用。 【正例】expense,na 阅读全文
摘要:
在平时的学习/工作中,我们会经常面临如下场景: 阅读别人的代码 阅读框架源码 阅读自己很久之前写的代码。 千万不要觉得工作就是单纯写代码,实际工作中,你会发现你的大部分时间实际都花在了阅读和理解已有代码上。 为了能够更快更清晰地搞清对象之间的调用关系,我经常需要用到序列图。手动画序列图还是很麻烦费时 阅读全文
摘要:
话不多说直接上代码,invokeAll的使用方式如下图 public class Main { public static void main(String[] args) throws InterruptedException, ExecutionException { List<Callable 阅读全文
摘要:
1、安装运行 1.1 源码及运行包下载 下载地址:https://github.com/alibaba/nacos/releases 目前官方建议使用1.3.1 1.2 安装MySql驱动 1.3.1用的是mysql8的mysql connector 所以需要下载mysql的驱动,否则DB连接失败 阅读全文
摘要:
通过前两篇文章大家也看出nacos从使用角度来说功能强大,我们现有的配置支持较友好,对项目的侵入性较小。这也是我继续研究他的动力,看看到底是否能引入到项目中来。下面三个主题是我接下来研究的主要方向: 选举机制 数据同步机制 性能 nacos作为配置中心的功能是基于raft协议来实现的。为什么要选ra 阅读全文
摘要:
1、页面配置 撇开原理不谈,先来介绍下nacos的基本使用,如下图nacos配置是以data id为单位进行使用的,基本上一个服务的一个配置文件就对应一个data id,支持的格式有xml,yaml,properties。 像一般的小型项目基本上一个项目一个dataId即可。这种已配置文件为基准的设 阅读全文
摘要:
从开始成为一名开发人员就开始了解设计模式,多年以后,再回首看一下设计模式,发现当初难以理解的模式,现在看来简单了好多,文中橙色字体是自己这几年工作经验的沉淀,希望对大家有帮助 阅读全文
摘要:
四步教你轻松定位CPU飙高问题 阅读全文