自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhoxing

https://github.com/zhoxing-ms

原创 kafka 消息堆积慢消费问题

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数...

2019-09-20 22:29:24 4949 0

原创 HttpClient连接池设置引发的一次雪崩

一. 事件背景 我在凤巢团队独立搭建和运维的一个高流量的推广实况系统,是通过HttpClient 调用大搜的实况服务。最近经常出现Address already in use (Bind failed)的问题。很明显是一个端口绑定冲突的问题,于是大概排查了一下当前系统的网络连接情况和端口使用情况...

2019-07-04 00:15:57 3164 4

原创 DDD领域驱动设计

一. 什么是DDD 2004年Eric Evans 发表Domain-Driven Design –Tackling Complexity in the Heart of Software (领域驱动设计),简称Evans DDD。Evans DDD是一套综合软件系统分析和设计的面向对象建模方...

2018-08-06 00:35:10 6727 0

原创 ES动态映射导致的线上疑案

一. 事件背景 在凤巢的推广平台中,有对物料进行不同属性进行筛选排序的需求,由于物料的量级很大(单用户千万级物料),并且有根据物料关键词搜索和某些特定值搜索,所以需要一个全文检索的搜索引擎来满足物料筛选的需求。ElasticSearch是一个基于Lucene的搜索服务器,它提供了一个分布式多用户...

2018-06-28 08:46:58 958 2

原创 数据库常见死锁原因及处理

数据库和操作系统一样,是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并发控制的一个非常重要的技术。在实际应用中经常会遇到的与锁相关的异常情况,当两个事...

2017-07-08 10:22:40 58622 6

原创 并发插入引发的死锁问题排查

一.业务背景我们现在的业务是一款数据产品,有不少实时计算和爬取来的数据都汇总到大数据仓库、数据挖掘平台ODPS上。然后应用在读取这些数据时,这些数据会先导入到并发读能力更强,适合结构查询的mysql上。数据端开发的同学在跑定时任务时, tps比较高,于是出现了一些线上问题:在开发过程中发现对某一包...

2017-06-16 23:52:38 17984 6

原创 高并发下的抽奖优化

一. 项目思考由于项目发起了一个抽奖活动,发起活动之前给所有用户发短信提示他们购买了我们的产品有抽奖权益。然后用户上来进入抽奖页面点击爆增,过了一会儿页面就打不开了。后面查看了下各种日志,发现了瓶颈在数据库,由于读写冲突严重,导致响应变慢,有不少连接都超时了。后面看到监控和日志留下的数据,发现负责...

2016-12-20 00:17:58 11903 4

原创 收益发放资金回流链路系统的开发

一.开发背景在项目成功后会有个收益发放的流程,把校验好的总金额核算无误后,批量打款给用户的流程。因为整体流程比较长,用文档记录下来整个过程二.链路介绍1.sftp账单明细核对系统(1)sftp业务流程图 (2)sftp技术流程图 (3)定时任务体系: 定时任务a:扫描正在执行中的项目...

2016-12-12 00:19:38 1556 0

原创 一次线上OOM过程的排查

一.出现问题在前一段时间日常环境很不稳定,前端调用mtop接口会出网络异常或服务不存在的异常。查询了服务器上的HSF会有偶尔挂死的情况,服务器上的接口服务都不可用。于是我们对服务器上的状况进行了排查。二.排查问题的过程在这次的问题排查主要是围绕JVM的内存使用情况,生成对象分布情况以及GC情况来讨...

2016-11-23 00:07:59 5303 0

原创 记一次KeyCenter中遇到Invalid signature format问题的解决过程

一次刨源码解决验签问题的过程与体会

2016-11-10 14:52:37 2713 0

转载 Python Async/Await入门指南

本文将会讲述Python 3.5之后出现的async/await的使用方法,以及它们的一些使用目的,如果错误,欢迎指正。 昨天看到David Beazley在16年的一个演讲:Fear and Awaiting in Async,给了我不少的感悟和启发,于是想梳理下自己的思路,所以有了以下这篇文...

2020-05-24 19:02:33 44 0

转载 Elasticsearch开发人员最佳实战指南

题记 几个月以来,我一直在记录自己开发Elasticsearch应用程序的最佳实践。本文梳理的内容试图传达Java的某些思想,我相信其同样适用于其他编程语言。我尝试尽量避免重复教程和Elasticsearch官方文档中已经介绍的内容。本文梳理的内容都是从线上实践问题和个人总结的经验汇总得来的。 ...

2020-04-30 20:54:16 115 0

转载 一个技术总监的忠告:精通那么多技术为何还是做不好一个项目?

编写高质量可维护的代码既是程序员的基本修养,也是能决定项目成败的关键因素,本文试图总结出问题项目普遍存在的共性问题并给出相应的解决方案。 1. 程序员的宿命? 程序员的职业生涯中难免遇到烂项目,有些项目是你加入时已经烂了,有些是自己从头开始亲手做成了烂项目,有些是从里到外的烂,有些是表面光鲜等...

2020-02-29 21:48:49 333 1

转载 ​微服务架构体系的深度治理

在QCon10周年的大会上,我做了题为《微服务架构体系的深度治理》的分享,现将PPT和演讲文稿整理出来,希望能够给仍在(微)服务治理迷局中夺路狂奔的同学们一点启发和指引。 这次分享首先介绍了服务治理的发展历史,它的4个阶段;接着重点介绍微服务度量及分析体系的构建;最后,分别针对微服务...

2019-12-14 20:56:20 88 0

转载 世界上最好的学习法:费曼学习法

你是否曾幻想读一遍书就记住所有的内容?是否想学习完一项技能就马上达到巅峰水平?除非你是天才,不然这是不可能的。对于大多数的普通人来说,可以通过笨办法(死记硬背)来达到学习的目的,但效率低下。当然,也可以通过优秀的学习法来进行学习,比如今天讲的“费曼学习法”,可以将你的学习效率极大的提高。 #...

2019-11-13 23:17:32 122 0

原创 记一次ES的GC问题

一. 问题背景 在双十一时,有用户反馈推广平台物料列表出现了耗时严重的情况。筛选排序系统出现过耗时严重的情况,根据业务系统的筛选排序慢接口的traceId, 我们分析了一下请求链路上的瓶颈是ES. 二. 问题排查 首选我们在监控平台上确认了一下ES的访问流量,发现流量曲线变化不大,说明不是E...

2019-10-21 10:41:41 456 0

转载 收藏版:《JDK13新特性详解》

1、switch优化更新 JDK11以及之前的版本: switch (day) { case MONDAY: case FRIDAY: case SUNDAY: System.out.println(6); break; case TUESDAY: System.out...

2019-10-06 21:18:47 74 0

原创 Redis线程模型

从Redis的工作模式谈起 我们在使用Redis的时候,通常是多个客户端连接Redis服务器,然后各自发送命令请求(例如Get、Set)到Redis服务器,最后Redis处理这些请求返回结果。 那Redis服务端是使用单进程还是多进程,单线程还是多线程来处理客户端请求的呢? 答案是单...

2019-09-16 23:24:16 158 0

原创 正方形字符串解题思路

之前做到一道算法题感觉挺有意思的,题目内容如下: 给你一个字符串str,你必须让找到这个字符串中的最长的正方字符串,正方字符串是以下的形式 str = x + x; where x is any string. Return length of this square string. Examp...

2019-09-14 09:07:22 530 0

转载 彻底搞懂MySQL的索引

前言 MyISAM和InnoDB是MySQL最常用的两个存储引擎,本文将进行详尽的介绍和对比。对于MySQL其余几种存储引擎,请读者自行搜索学习。 本文会图解两种引擎的索引结构区别,然后讲解索引的原理,理解本文内容,就能够理解索引优化的各种原则的背后原因。 限于篇幅,本篇没有介绍的知识,会在...

2019-08-18 21:31:08 62 0

转载 服务端高并发分布式架构演进之路

1. 概述 本文以淘宝作为例子,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。 2. 基本概念 在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最...

2019-06-16 10:45:03 219 1

原创 Hive原理分析

Hive背景介绍 Hive是构建在Hadoop上的数据仓库软件框架,支持使用SQL来读,写和管理大规模数据集合。Hive入门非常简单,功能非常强大,所以非常流行。通常来说,Hive只支持数据查询和加载,但后面的版本也支持了插入,更新和删除以及流式api。Hive具有目前Hadoop上最丰富最全...

2019-05-19 16:51:01 75 0

转载 高并发编程知识体系

1.问题 1、什么是线程的交互方式? 2、如何区分线程的同步/异步,阻塞/非阻塞? 3、什么是线程安全,如何做到线程安全? 4、如何区分并发模型? 5、何谓响应式编程? 6、操作系统如何调度多线程? 2.关键词 同步,异步,阻塞,非阻塞,并行,并发,临界区,竞争条件,指令重排,锁,...

2019-04-14 13:11:11 125 0

转载 通过MySQL存储原理来分析排序和锁

先抛出几个问题 1.为什么不建议使用订单号作为主键? 2.为什么要在需要排序的字段上加索引? 3.for update 的记录不存在会导致锁住全表? 4.redolog 和 binlog 有什么区别? 5.MySQL 如何回滚一条 sql ? 6.char(50) 和 varchar(...

2019-04-14 12:03:31 96 0

转载 分布式架构知识体系

1.问题 1、何为分布式何为微服务? 2、为什么需要分布式? 3、分布式核心理论基础,节点、网络、时间、顺序,一致性? 4、分布式是系统有哪些设计模式? 5、分布式有哪些类型? 6、如何实现分布式? 2.关键词 节点,时间,一致性,CAP,ACID,BASE,P2P,机器伸缩,网络变...

2019-03-31 21:48:49 114 0

转载 Spring Boot引起的“堆外内存泄漏”排查及经验总结

背景 为了更好地实现对项目的管理,我们将组内一个项目迁移到MDP框架(基于Spring Boot),随后我们就发现系统会频繁报出Swap区域使用量过高的异常。笔者被叫去帮忙查看原因,发现配置了4G堆内内存,但是实际使用的物理内存竟然高达7G,确实不正常。JVM参数配置是“-XX:Metaspac...

2019-02-24 11:21:03 386 0

原创 Hadoop工作原理浅析

Hadoop是Apache软件基金会所开发的并行计算框架与分布式文件系统。最核心的模块包括Hadoop Common、HDFS与MapReduce。 HDFS HDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的缩写,为分布式计算存储提供了底层...

2019-01-27 20:57:33 4415 1

转载 微服务设计指南

2018年,每个人都听说过微服务。但你知道怎么设计吗?   微服务是当今软件工程师的一个热门话题。让我们了解如何使用微服务架构风格构建真正模块化、业务敏捷的IT系统。   一、微服务概念   微服务体系结构由轻量级、松散耦合的服务集合组成。每个服务都实现了单个业务功能。理想情况下,这些...

2018-12-15 22:13:58 210 0

转载 【基本功】不可不说的Java“锁”事

前言 Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。 Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再...

2018-11-24 21:42:51 91 0

原创 Kafka原理介绍

一. Kafka的基本介绍 Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并...

2018-10-27 11:46:00 223 0

原创 Flume概念与原理

一.什么是Flume?        apache Flume 是一个从可以收集例如日志,事件等数据资源,并将这些数量庞大的数据从各项数据资源中集中起来存储的工具/服务,或者数集中机制。flume具有高可用,分布式,配置工具,其设计的原理也是基于将数据流,如日志数据从各种网站服务器上汇集起来存储...

2018-09-09 17:55:32 314 0

原创 Spark工作原理

Apache Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架,最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一,与Hadoop和Storm等其他大数据和MapReduce技术相比,Spark有如下优势: 1.运行速度快,Spar...

2018-09-05 23:49:32 7968 1

原创 分布式事务之柔性事务

一. 定义 在电商领域等互联网场景下,传统的事务在数据库性能和处理能力上都暴露出了瓶颈。在分布式领域基于CAP理论以及BASE理论,有人就提出了柔性事务的概念。CAP(一致性、可用性、分区容忍性)理论大家都理解很多次了,这里不再叙述。说一下BASE理论,它是在CAP理论的基础之上的延伸。包括基本...

2018-08-19 14:35:40 2664 0

原创 Elasticsearch原理简介

一. 简介 Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,它建立在全文搜索引擎 Apache Lucene(TM) 的基础上. 当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作: • 分布式实时文...

2018-08-18 17:48:11 1141 0

原创 事件溯源Event Sourcing

一. 什么是Event Sourcing? 一个对象从创建开始到消亡会经历很多事件,以前我们是在每次对象参与完一个业务动作后把对象的最新状态持久化保存到数据库中,也就是说我们的数据库中的数据是反映了对象的当前最新的状态。而事件溯源则相反,不是保存对象的最新状态,而是保存这个对象所经历的每个事件,...

2018-08-12 12:08:57 1130 0

原创 CQRS架构

命令查询的责任分离Command Query Responsibility Segregation (简称CQRS)模式是一种架构体系模式,能够使改变模型的状态的命令和模型状态的查询实现分离。这属于DDD应用领域的一个模式,为了使得项目逻辑更加清晰,便于对不同部分进行针对性的优化。 一. 背景问...

2018-08-11 23:34:58 1864 0

转载 一篇超实用的服务异常处理指南

服务异常的处理流程 负载 2.1 查看机器 cpu 的负载 top -b -n 1 |grep java|awk ‘{print “VIRT:”5,"RES:"5,"RES:"5,"RES:"6,”cpu:”9"...

2018-05-26 17:15:05 377 0

转载 Java工程师成神之路(2018修订版)

主要版本 更新时间 备注 v1.0 2015-08-01 首次发布 v1.1 2018-03-18 增加新技术知识、完善知识体系 一、基础篇 JVM JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别 Java内存模型 内存可见性、重排序、顺序一致性、...

2018-03-25 18:20:08 605 1

转载 浅谈命令查询职责分离(CQRS)模式

在常用的三层架构中,通常都是通过数据访问层来修改或者查询数据,一般修改和查询使用的是相同的实体。在一些业务逻辑简单的系统中可能没有什么问题,但是随着系统逻辑变得复杂,用户增多,这种设计就会出现一些性能问题。虽然在DB上可以做一些读写分离的设计,但在业务上如果在读写方面混合在一起的话,仍然会出现一些...

2018-02-10 08:55:07 638 0

原创 一次AOP配错自动创建事务代理的bean引发的疑案

一.案发背景 问题出现在一次发现自己的请求没有被日志记录,发现是AOP中没有配置那个服务,于是在BeanNameAutoProxyCreator是个根据bean名生成自动代理的代理创建器,声明了UrlAuditServiceImpl 这个Bean需要自动生成代理,然后被打日志的拦截器生成代理来打...

2018-01-07 23:16:56 206 0

提示
确定要删除当前文章?
取消 删除