- 博客(113)
- 资源 (13)
- 收藏
- 关注
原创 推荐系统(工程方向)-统一召回平台
一、背景在推荐系统中,召回是非常重要的一步,尽可能召回所有相关的结果,适当召回具有探索意义的结果,是决定推荐效果上限的一环。召回可以模块化:1、u2i,k2i,i2i,v2i(统称x2i)2、index召回(基于倒排,lucene、solr、es、redis等实现)3、新热召回(排行榜)...我们其实在https://zhuanlan.zhihu.com/p/355510794已经做了这些模块化,...
2022-01-24 22:34:18
2058
原创 记:捕获ERROR
一、背景目前工作中遇到2个情况因为捕获的是Exception而不是Error,导致程序无法正常运行。1、使用google的ortools库(jni):因为和操作系统相关,需要判断运行环境是否兼容,如果不兼容,则不使用ortools库,而使用常规java库处理。判断的代码会抛出Error,需要catch Throwable。2、使用自定义类加载器,做插件,抛出java.Lang.LinkageErr...
2022-01-20 17:14:21
305
原创 捕获ERROR
一、背景目前工作中遇到2个情况因为捕获的是Exception而不是Error,导致程序无法正常运行。1、使用google的ortools库(jni):因为和操作系统相关,需要判断运行环境是否兼容,如果不兼容,则不使用ortools库,而使用常规java库处理。判断的代码会抛出Error,需要catch Throwable。2、使用自定义类加载器,做插件,抛出java.Lang.LinkageErr...
2021-09-23 23:30:31
692
原创 记:zookeeper集群抖动造成solrcloud集群故障
一、故障描述2020-04-18 23:10solrcloud集群报警,大量节点线程数>10000,读写慢请求非常多,搜索业务接口大量超时。二、紧急处理&故障追踪紧急处理:线程数居高不下,判断无法自愈,果断采取紧急节点重启方案,快速恢复服务。故障追踪:1、猜测是读写请求慢,导致线程池大量创建线程,第一步需要jstack栈数据分析4000+线程节点jstack解析图solr使用jett...
2021-05-12 13:51:00
513
2
原创 记:大量请求引起hbase regionserver故障
一、背景公司一个比较火的app量级上来了,需要接入推荐和搜索功能,为了快速提供支持,我们把用户、物品的特征直接用hbase存储,而没有接入到基于redis的特征平台(来不及改造)。上线一段时间之后,hbase突然报了慢请求(>400ms),我们介入排查...涉及到3张表,A,B,C,只有A表数据量大小超过2G,B、C 2张表只有几M而已。情景:1次用户请求查询,A表1次get,B、C表1次2...
2021-04-04 09:48:03
471
1
原创 读书笔记-云原生应用初探
一、源起最早在大学时代使用VMware安装Ubuntu学习Linux,12年实习使用kvm虚拟机搭建测试环境,14-15年那会儿docker有点火,开始基于docker搭建测试环境。使用体验是VMware安装挺复杂的,启动Ubuntu也很慢,操作很卡(可能那会儿电脑也差)。而docker使用体验非常好,mysql,redis,zookeeper,memcahce等这些开发环境能够快速搭建,使用do...
2021-03-29 18:40:00
210
原创 记:一次young gc优化记录
优化结果平均暂停时间137.7ms->69ms,最大暂停时间690.2ms->480ms【效果提升】平均暂停间隔35.9s->19.5s【效果降低】注:gc优化追求最小暂停时间&最大暂停间隔时间(比如ygc 10s以上触发一次,每次50ms以下就还可以),两者在不优化代码情况下,呈负相关。此次优化不涉及代码优化。服务gc现状分配内存:12Ggc算法:G1gc情况:无Ful...
2021-03-27 11:08:04
566
原创 记:arthas watch排查线上接口获取不到数据
一、现象从搜索引擎召回直播间id list后,去hbase批量查询id属性字段,未返回结果。(同事下班路上,帮忙排查)二、思考调用者和提供者都未打印详细请求参数,是参数问题?内部处理逻辑问题?鉴于hbase通用查询服务已运行非常久,大概率是请求参数有问题。三、解决服务调用者watchwatch xxx.hbase.service.api.HBaseQueryService batchQuery "...
2021-03-27 11:07:07
844
原创 hbase kerberos认证无法自动续约问题
一、背景服务运行一段时间后(大概7天),hbase写入和读取报错,错误描述为:重试次数耗尽,原因是因为正在重新认证且失败了,不能接受请求。之前同事是使用crontab定时重启临时解决,自己刚好有空帮忙看看。org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed after attempts=2, exceptions:Tu...
2021-03-23 15:40:30
2353
原创 arthas profiler诊断服务性能
一、背景A服务上线一个功能后,从cat监控发现前后大概增加50ms耗时。二、处理原想使用skywalking的profiler功能,可惜A服务只接了cat,没有接skywalking,否者还可以看到调用其他服务接口的内部栈耗时,于是使用了arthas的profiler。在预发使用jmeter大约压到100QPS,在压测期间,运行java -jar arthas-boot.jarprofiler ...
2021-03-16 11:35:41
767
原创 java自定义插件实现
一、背景算法RD以前用python实现特征预处理,改完代码重新运行就生效了,现在改成java(为了借助java更强大生态,同时融入公司java体系),每次修改,都要打包、上线,迭代效率特别低。二、需求分析python编程,不需要显式编译,现改现运行,python解释器会先把源代码编译成.pyc,然后解释执行,两步一起做了,用户无感知。而java源代码需要先在一个地方编译成.class字节码,然后丢...
2021-03-13 22:01:57
1417
原创 机器学习平台实践
一、背景期望通过强大易用的功能,来辅助算法研发人员,帮助大家脱离繁琐的工程化开发,把有限的精力聚焦于算法策略的迭代上面。通过一站式打通特征工程、模型训练、在线预测&上线等重要步骤,避免重复造轮子,以及解决特征穿越等问题。二、调研我们参考多个大公司的机器学习平台的实践经验,几乎都是拖拽+组件构成DAG图执行的方式来做。以下是几个重要的调研地址:阿里PAI腾讯TI-ONE美团一站式机器学习平台...
2021-03-12 11:15:23
372
原创 搜索平台实践
一、背景此搜索平台主要解决以下场景问题:大数据下的模糊检索、范围查询、聚合分析,mysql实现比较吃力。半结构化数据的存取(比如日志),mysql无法做到nosql动态扩展字段。数仓、数分统计的hive表,通过搜索平台高效快速接入并同步数据,对外提供服务。(搜索平台也是数据中台的在线查询服务)推荐系统的推荐池存取,k2i(基于关键字召回item)引擎实现等。app搜索(文本召回,分词器定制等)。二...
2021-03-11 13:26:38
127
原创 推荐系统(工程方向)-abtest平台
一、背景 早期我们进行ab实验,用的是单层实验,即按用户userId/deviceId进行hash取模,打在[0-99]区间,然后配置A:[0-49],B:[50-99]。单层实验有如下问题:流量饥饿,如果流量只有2W,需要做20组实验,每组1000个流量太少,导致置信区间太宽,实验结果不可信。流量偏置,假设上游的实验把所有的年轻人都获取了,下游的实验,没有年轻人的样本,导致有偏差...
2021-03-09 15:14:58
927
原创 推荐系统(工程方向)-策略平台
一、背景 假设某个app的首页推荐,有2个策略产品经理、6个算法RD、2个工程RD协同工作,如果没有一套可视化的策略执行流程,沟通将非常低效,且对接容易出错,达不到想要的效果。 其次推荐系统一般可抽象出几个核心流程:获取用户画像+用户过滤列表召回排序重排人工运营 这些核心流程可抽成公共组件,配置在流程中,减少很多工作量。二、方案设计1、设...
2021-03-08 19:55:23
300
原创 shiro中获取当前user出错
准确场景描述应该是: 1、在应用层使用“线程池等会缓存线程的组件”,比如Executors.newFixedThreadPool(n);在线程里进行 getUser(); 2、可能A用户获取到B用户。 下面分析一下原理: 顺着shiro源码去找,获取当前用户方法SecurityUtils.getSubject();/*ThreadContext线程上下文环境,主要靠InheritableT
2017-04-26 18:07:26
8383
原创 rocketmq源码简析之namesrc模块
先看一下官网一张清晰的架构图: nameserver作为替换早期版本zookeeper的轻量级实现,它只实现了zk的一致性+发布订阅,当然实现方式是不一样的。它的一致性是通过每个节点的Broker、Consumer、Producer定时心跳同步的,存在短暂的不一致性,可以说是弱一致性,不会有影响,因为有柔性事务保证重试机制。发布订阅跟zk就差不多了,Broker会与每一台nameserver
2017-04-25 17:21:05
1450
原创 sharding-jdbc源码阅读之soft transaction
先看一段作者张亮,对sharding-jdbc分布式事务理解: 张亮:分布式事务这块,我们认为XA多阶段提交的方式,虽然对分布式数据的完整性有比较好的保障,但会极大的降影响应用性能,并未考虑采用。我们采用的是两种方式,一种称之为弱XA,另一种是柔性事务,即BASE。 弱XA就是分库之后的数据库各自负责自己事务的提交和回滚,没有统一的调度器集中处理。这样做的好处是天然就支持,对性能也
2017-04-20 15:15:55
2707
原创 sharding-jdbc源码阅读之Adapter
15年做搜索的时候,业务那边对一些大的mysql表做了分表,记得好像是video表,给了我一个公式:vid%16。好在搜索业务对mysql表只是读取操作,改动还是比较简单,我在原来的读取类上,做了一层wrapper,在between 1 to 5000的情况下,计算该去哪张表读取。后面出来面试,也被问到分库分表这种概念,但手动去做,总是很坑。于是去了解了一下这一块的开源项目:**jdbc版:阿里的
2017-04-19 19:44:20
1731
原创 nodejs使用笔记
1、nodejs与java开发的最大区别在于:事件处理机制以及相应的回调函数。事件处理机制:即非阻塞IO操作,类似fs操作、网络访问、数据库查询、redis查询等等,都是在主进程的基础上,注册事件到事件队列,与主进程通过回调函数(钩子)关联,其实相当于java中的excutror带返回值的runable。2、使用express4.x做web框架开发,express4.x相对于exp
2015-07-31 16:52:35
811
原创 JS闭包理解
1、闭包概念闭包指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。满足闭包条件:在Javascript中,如果一个对象不再被引用,那么这个对象就会被GC回收。如果两个对象互相引用,而不再被第3者所引用,那么这两个互相引用的对象也会被回收。因为函数a被b引用,b又被a外的c引用,这就是为什么函数a执行后不会被回收的原因。
2015-07-31 15:34:56
823
转载 Ryan dahl对node.js初衷
2008年,我在寻找一个新的编程平台来做网站。我并不是想要一门新的语言,实际上,语言自身的细节对我来说并不重要。我真正关心的是,该语言能否提供先进的推送功能并集成到网站中来,就像我在Gmail中看到的那样——能够从服务器端把数据主动推送给用户,而不是采用不断轮询拉取数据的方式。现有的平台都把服务器作为接受请求然后返回相应内容的设备。要把事件推送到浏览器,平台需要能够持续处理大量打开的网络连接,而这
2015-06-18 13:50:23
1942
原创 java.lang.NullPointerException at org.hibernate.type.LongType.next(LongType.java
jpa使用乐观锁,version字段不要自己维护,否则很容易出错。项目上线之后,报以上错误,开始以为是代码问题,后面检查线上数据库,才发现order关联的webuser的version有些为空。设置默认0就可以了!
2015-05-26 10:49:52
3646
原创 toString小问题
问题描述:ToStringTest 类中,有一个重写的toString()方法,直接返回null;public class ToStringTest {public String a = "a";private String result;public ToStringTest(String result){this.result = result;}
2015-05-07 11:33:20
615
转载 使用BasicDataSource引发的数据库连接中断的问题和解决方法
最近碰到一个问题,应用程序每天的第一次进行系统访问时,会报一个奇怪的错误,最后经过仔细的跟踪,错误信息找到了,如下所示:1The last packet successfully received from the server was 60,428,178 milliseconds ago. The last packet sent su
2015-03-11 15:00:34
8908
转载 mapreduce与mapreduceV2/yarn
Hadoop MapReduceV2(Yarn) 框架简介原 Hadoop MapReduce 框架的问题对于业界的大数据存储及分布式处理系统来说,Hadoop 是耳熟能详的卓越开源分布式文件存储及处理框架,对于 Hadoop 框架的介绍在此不再累述,读者可参考 Hadoop 官方简介。使用和学习过老 Hadoop 框架(0.20.0 及之前版本)的同仁应该很熟悉如下的原 Ma
2014-11-14 10:37:01
939
转载 hash取模一致性哈希
取模最简单的hash算法targetServer = serverList[hash(key) % serverList.size]直接用key的hash值(计算key的hash值的方法可以自由选择,比如算法CRC32、MD5,甚至本地hash系统,如java的hashcode)模上server总数来定位目标server。这种算法不仅简单,而且具有不错的随机分布特性。但
2014-11-09 14:30:12
11663
转载 线程安全及性能良好单例
public class Singleton { private static volatile Singleton instance = null; /** * 防止其他人new对象 */ private Singleton(){ System.out.println("init"); }
2014-11-09 14:04:30
719
转载 Spark vs. MapReduce
MapReduce为大数据挖掘提供了有力的支持,但是复杂的挖掘算法往往需要多个MapReduce作业才能完成,多个作业之间存在着冗余的磁盘读写开销和多次资源申请过程,使得基于MapReduce的算法实现存在严重的性能问题。大处理处理后起之秀Spark得益于其在迭代计算和内存计算上的优势,可以自动调度复杂的计算任务,避免中间结果的磁盘读写和资源申请过程,非常适合数据挖掘算法。腾讯TDW Spark平
2014-11-04 18:12:56
9518
原创 记录mapreduce遇到的问题
1、java.lang.ClassNotFoundException后来发现原来是在0.20版本以后main方法中需要加:job.setJarByClass(HBaseToFile.class);才能找到自定义的map或reduce内部类2、
2014-07-18 16:59:15
3420
JAVA SOCKET 在线聊天系统雏形
2011-09-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人