自定义博客皮肤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

  • 博客(150)
  • 收藏
  • 关注

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

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

2019-09-20 22:29:24 28905 1

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

一. 事件背景我在凤巢团队独立搭建和运维的一个高流量的推广实况系统,是通过HttpClient 调用大搜的实况服务。最近经常出现Address already in use (Bind failed)的问题。很明显是一个端口绑定冲突的问题,于是大概排查了一下当前系统的网络连接情况和端口使用情况,发现是有大量time_wait的连接一直占用着端口没释放,导致端口被占满(最高的时候6w+个),因此H...

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

原创 DDD领域驱动设计

一. 什么是DDD 2004年Eric Evans 发表Domain-Driven Design –Tackling Complexity in the Heart of Software (领域驱动设计),简称Evans DDD。Evans DDD是一套综合软件系统分析和设计的面向对象建模方法。 领域驱动设计分为两个阶段: 1.以一种领域专家、设计人员、开发人员都能理解的通用语言作为相互...

2018-08-06 00:35:10 16077 3

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

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

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

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

数据库和操作系统一样,是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并发控制的一个非常重要的技术。在实际应用中经常会遇到的与锁相关的异常情况,当两个事务需要一组有冲突的锁,而不能将事务继续下去的话,就会出现死锁,严重影响应用的正常执行。   在数据库中

2017-07-08 10:22:40 89647 12

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

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

2017-06-16 23:52:38 30918 10

原创 高并发下的抽奖优化

一. 项目思考由于项目发起了一个抽奖活动,发起活动之前给所有用户发短信提示他们购买了我们的产品有抽奖权益。然后用户上来进入抽奖页面点击爆增,过了一会儿页面就打不开了。后面查看了下各种日志,发现了瓶颈在数据库,由于读写冲突严重,导致响应变慢,有不少连接都超时了。后面看到监控和日志留下的数据,发现负责抽奖的微服务集群qps暴涨12倍,db的qps也涨了10倍。这很明显是一个高并发下如何摆脱数据库读写,I

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

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

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

2016-12-12 00:19:38 2217

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

一.出现问题在前一段时间日常环境很不稳定,前端调用mtop接口会出网络异常或服务不存在的异常。查询了服务器上的HSF会有偶尔挂死的情况,服务器上的接口服务都不可用。于是我们对服务器上的状况进行了排查。二.排查问题的过程在这次的问题排查主要是围绕JVM的内存使用情况,生成对象分布情况以及GC情况来讨论的。中间有一些细节一开始存有疑问,迷雾的排除不算太顺利。首先要感谢下基础架构事业群的右席,井桐,梁希,

2016-11-23 00:07:59 9369

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

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

2016-11-10 14:52:37 4564

原创 Python 内存泄漏问题排查

一. 问题现象最近我在做一个推荐系统中的离线计算时,遇到了离线定时任务总是挂掉的问题,日志中记录的错误异常如下:python exited with code 137在stackoverflow上查询了一下这个错误的原因, 高赞回答的解释如下:Exit code 137 means that your process was killed by (signal 9) SIGKILL . In the case you manually stopped it - there’s your answ

2021-02-13 22:46:55 8599 1

原创 读书笔记 ---《推荐系统实践》第五章

利用上下文信息5.1 时间上下文信息5.1.1 时间效应简介时间是一种重要的上下文信息,对用户兴趣有着深入而广泛的影响。一般认为,时间信息对 用户兴趣的影响表现在以下几个方面:用户兴趣是变化的物品也是有生命周期的季节效应5.1.2 时间效应举例5.1.3 系统时间特性的分析在给定时间信息后,推荐系统从一个静态系统变成了一个时变的系统,而用户行为数据也变成了时间序列。研究一个时变系统,需要首先研究这个系统的时间特性。包含时间信息的用户行为数据集由一系列三元组构成,其中每个三元组(u,t,

2021-01-21 22:21:59 364

原创 读书笔记 ---《推荐系统实践》第四章

利用用户标签数据推荐系统的目的是联系用户的兴趣和物品,这种联系需要依赖不同的媒介。推荐系统基本上通过3种方式联系用户兴趣和物品:利用用户喜欢过的物品,给用户推荐与他喜欢过的物品相似的物品,这就是前面提到的基于物品的算法利用和用户兴趣相似的其他用户,给用户推荐那些和他们兴趣 爱好相似的其他用户喜欢的物品,这是前面提到的基于用户的协同过滤算法通过一些特征(feature )联系用户和物品,给用户推荐那些具有用户喜欢的特征的物品。这里的特征有不同的表现方式,比如可以表现为物品的属性集合,也可以表现为隐语

2021-01-19 23:52:50 396

原创 读书笔记 ---《推荐系统实践》第三章

推荐系统冷启动问题推荐系统需要根据用户的历史行为和兴趣预测用户未来的行为和兴趣,因此大量的用户行为数据就成为推荐系统的重要组成部分和先决条件。在开始阶段就希望有个性化推荐应用的网站来说,如何在没有大量用户数据的情况下设计个性化推荐系统并且让用户对推荐结果满意就是冷启动的问题3.1 冷启动问题简介冷启动问题(coldstart)主要分3类:用户冷启动主要解决如何给新用户做个性化推荐的问题。当新用户到来时, 我们没有他的行为数据,所以也无法根据他的历史行为预测其兴趣物品冷启动主要解决如何将新的物

2021-01-18 23:22:45 196

原创 读书笔记 ---《推荐系统实践》第二章

利用用户行为数据基于用户行为分析的推荐算法是个性化推荐系统的重要算法,学术界一般将这种类型的算法称为协同过滤算法。协同过滤就是指用户可以齐心协力,通过不断地和网站互动,使自己的推荐列表能够不断过滤掉自己不感兴趣的物品,从而越来越满足自己的需求。2.1 用户行为数据简介用户行为数据在网站上最简单的存在形式就是日志。网站在运行过程中都产生大量原始日志 (raw log),并将其存储在文件系统中。很多互联网业务会把多种原始日志按照用户行为汇总成会话日志(session log),其中每个会话表示一次用户行为

2021-01-17 17:37:19 735

原创 读书笔记 ---《推荐系统实践》第一章

好的推荐系统1.1 什么是推荐系统随着信息技术和互联网的发展,人们逐渐从信息匮乏的时代走入了信息过载(information overload )的时代。在这个时代,无论是信息消费者还是信息生产者都遇到了很大的挑战:对于信息消费者,从大量信息中找到自己感兴趣的信息是一件非常困难的事情;对于信息生产者,让 自己生产的信息脱颖而出,受到广大用户的关注,也是一件非常困难的事情。推荐系统就是解决 这一矛盾的重要工具。推荐系统的任务就是联系用户和信息,一方面帮助用户发现对自己有价值 的信息,另一方面让信息能够展现

2021-01-16 23:41:11 606 1

转载 如何画好一张架构图?

什么是架构图?如何画好一张架构图,要做好这件事情首先要回答的就是什么是架构图。我们日常工作中经常能看到各种各样的架构图,而且经常会发现大家对架构图的理解各有侧重。深入追究到这个问题,可能一下子还很难有一个具象的定义,如果我们把这个问题进行拆分(如下图)理解起来就会容易一点。架构图 = 架构 + 图按照这个等式,我们可以把问题转换: 架构是什么? 图是什么? 图是什么?这个比较容易回答,图是一种信息的表达方式,所以架构图,即表达“架构”的图,...

2020-08-31 22:18:05 482

转载 推荐系统的工程实现

一、写在前面作者在上篇文章《推荐系统介绍》中简单对推荐系统做了一个较全面的介绍,相信大家对推荐系统有了初步的了解。本篇文章作者会结合多年推荐系统开发的实践经验粗略介绍推荐系统的工程实现, 简要说明要将推荐系统很好地落地到产品中需要考虑哪些问题及相应的思路、策略和建议, 其中有大量关于设计哲学的思考, 希望对从事推荐算法工作或准备入行推荐系统的读者有所帮助。本篇文章主要从整体上来介绍推荐系统工程实现, 以后发布的系列文章会逐步介绍工程实现的各个细节实现原理与策略。为了描述方便,本文主要基于视频推荐来讲

2020-07-19 08:18:37 729

转载 Python Async/Await入门指南

本文将会讲述Python 3.5之后出现的async/await的使用方法,以及它们的一些使用目的,如果错误,欢迎指正。昨天看到David Beazley在16年的一个演讲:Fear and Awaiting in Async,给了我不少的感悟和启发,于是想梳理下自己的思路,所以有了以下这篇文章。Python在3.5版本中引入了关于协程的语法糖async和await,关于协程的概念可以先看我在上一篇文章提到的内容。看下Python中常见的几种函数形式:1. 普通函数def functi

2020-05-24 19:02:33 535

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

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

2020-04-30 20:54:16 368

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

编写高质量可维护的代码既是程序员的基本修养,也是能决定项目成败的关键因素,本文试图总结出问题项目普遍存在的共性问题并给出相应的解决方案。1. 程序员的宿命?程序员的职业生涯中难免遇到烂项目,有些项目是你加入时已经烂了,有些是自己从头开始亲手做成了烂项目,有些是从里到外的烂,有些是表面光鲜等你深入进去发现是个“焦油坑”,有些是此时还没烂但是已经出现问题征兆走在了腐烂的路上。国内基本上是这...

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

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

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

2019-12-14 20:56:20 325

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

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

2019-11-13 23:17:32 296

原创 记一次ES的GC问题

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

2019-10-21 10:41:41 2927

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

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

2019-10-06 21:18:47 212

原创 Redis线程模型

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

2019-09-16 23:24:16 792

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

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

2019-09-14 09:07:22 985

转载 彻底搞懂MySQL的索引

前言MyISAM和InnoDB是MySQL最常用的两个存储引擎,本文将进行详尽的介绍和对比。对于MySQL其余几种存储引擎,请读者自行搜索学习。本文会图解两种引擎的索引结构区别,然后讲解索引的原理,理解本文内容,就能够理解索引优化的各种原则的背后原因。限于篇幅,本篇没有介绍的知识,会在后续博客将逐一讲解。例如:MySQL引擎的锁机制、多列索引的生效规则、索引优化等主题。下面SQL在...

2019-08-18 21:31:08 182

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

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

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

原创 Hive原理分析

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

2019-05-19 16:51:01 412

转载 高并发编程知识体系

1.问题1、什么是线程的交互方式?2、如何区分线程的同步/异步,阻塞/非阻塞?3、什么是线程安全,如何做到线程安全?4、如何区分并发模型?5、何谓响应式编程?6、操作系统如何调度多线程?2.关键词同步,异步,阻塞,非阻塞,并行,并发,临界区,竞争条件,指令重排,锁,amdahl,gustafson3.全文概要上一篇我们介绍分布式系统的知识体系,由于单机的性能...

2019-04-14 13:11:11 236

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

先抛出几个问题1.为什么不建议使用订单号作为主键? 2.为什么要在需要排序的字段上加索引? 3.for update 的记录不存在会导致锁住全表? 4.redolog 和 binlog 有什么区别? 5.MySQL 如何回滚一条 sql ? 6.char(50) 和 varchar(50) 效果是一样的么?索引知识回顾对于 MySQL 数据库而言,数据是存储在文件里的,而为了能...

2019-04-14 12:03:31 258

转载 分布式架构知识体系

1.问题1、何为分布式何为微服务? 2、为什么需要分布式? 3、分布式核心理论基础,节点、网络、时间、顺序,一致性? 4、分布式是系统有哪些设计模式? 5、分布式有哪些类型? 6、如何实现分布式?2.关键词节点,时间,一致性,CAP,ACID,BASE,P2P,机器伸缩,网络变更,负载均衡,限流,鉴权,服务发现,服务编排,降级,熔断,幂等,分库分表,分片分区,自动运维,容错处理...

2019-03-31 21:48:49 256

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

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

2019-02-24 11:21:03 617

原创 Hadoop工作原理浅析

Hadoop是Apache软件基金会所开发的并行计算框架与分布式文件系统。最核心的模块包括Hadoop Common、HDFS与MapReduce。HDFSHDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的缩写,为分布式计算存储提供了底层支持。采用Java语言开发,可以部署在多种普通的廉价机器上,以集群处理数量积达到大型主机处理性能。...

2019-01-27 20:57:33 20123 3

转载 微服务设计指南

2018年,每个人都听说过微服务。但你知道怎么设计吗? 微服务是当今软件工程师的一个热门话题。让我们了解如何使用微服务架构风格构建真正模块化、业务敏捷的IT系统。 一、微服务概念 微服务体系结构由轻量级、松散耦合的服务集合组成。每个服务都实现了单个业务功能。理想情况下,这些服务应该是具有足够的内聚性,可以独立地开发、测试、发布、部署、扩展、集成和维护。 正式定义 ...

2018-12-15 22:13:58 450

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

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

2018-11-24 21:42:51 154

原创 Kafka原理介绍

一. Kafka的基本介绍Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。主要应用场景是:日志收集系统和消息系统。Kafka主要设计目标如下:以时...

2018-10-27 11:46:00 476 1

原创 Flume概念与原理

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

2018-09-09 17:55:32 1020

原创 Spark工作原理

Apache Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架,最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一,与Hadoop和Storm等其他大数据和MapReduce技术相比,Spark有如下优势:1.运行速度快,Spark拥有DAG执行引擎,支持在内存中对数据进行迭代计算。官方提供的数据表明,如果数据由磁盘读取,速度是H...

2018-09-05 23:49:32 26100 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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