
工作记录
文章平均质量分 76
那只是一股逆流
长风破浪会有时,直挂云帆济沧海。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Ffmpeg分布式视频转码问题记录
本篇聊一聊我们实施分布式转码过程中所碰到的比较难解的问题以及解决方案,希望能够给大家带来一些帮助或者少踩一些坑。原创 2023-04-22 18:40:07 · 960 阅读 · 0 评论 -
一招教你定位Java CPU占用过高
线上排查问题必备原创 2023-03-02 23:33:31 · 246 阅读 · 0 评论 -
转码服务serverless探索
转码服务serverless探索之路原创 2023-03-01 21:53:58 · 579 阅读 · 0 评论 -
任务调度系统-业务线资源隔离
任务调度系统到底在调度什么?原创 2022-12-11 17:09:25 · 565 阅读 · 0 评论 -
QuantumTunnel:Netty实现
接上一篇文章内网穿透服务设计挖的坑,本篇来聊一下内网穿透的实现。为了方便理解,我们先统一定义使用到的名词:UserClient:用户客户端,真实的请求发起方;UserServer:内网穿透-用户服务端,接收用户客户端发起的请求;并将请求转发给代理服务端;ProxyServer:内网穿透-代理服务端,与代理客户端保持一个连接通道用于传输数据;ProxyClient:内网穿透-代理客户端,从通道中接收来自代理服务端的请求数据,并且发起真正的请求。拿到请求结果后再通过该通道写回到代理服务端;Targ原创 2021-10-17 15:01:30 · 414 阅读 · 0 评论 -
QuantumTunnel:内网穿透服务设计
背景什么是内网穿透摘自百度百科内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。通俗易懂一点就是一个与没有公网IP的机器进行数据交换。这个机器有可能在某个机房,也有可能在家。典型的应用场景公网访问内网中的某个系统服务:出于安全等因素考虑,机房一般是不能公网访问的;要想访问机房中的某个服务,那么就需要用到内网穿透;用于接收公网回调:在开发微信业务时,一般会涉及到服务回调,而开发者的电脑无法被原创 2021-10-06 16:26:03 · 391 阅读 · 1 评论 -
Dubbo 2.6.2 获取不到${dubbo.registry.address}
背景公司原来的配置中心是一个闭源的系统,该系统有几个痛点问题:无权限控制、敏感配置不能加密、应用和配置的依赖关系混乱。在这个背景下,运维同学基于k8s的configMap写了一个配置中心,并推动应用配置从闭源的配置中心迁移到自有的configMap。获取dubbo.registry.address配置项因为我负责这次迁移,所以迁移过程中开发同学碰到的问题都会来问我,其中有一个比较有意思的问题是dubbo 获取不到dubbo.registry.address配置项。比如明明在application.p原创 2021-06-19 19:03:51 · 3258 阅读 · 0 评论 -
计算机网络(二):传输层
上一篇文章简单介绍了现在的计算机网络模型和每层的作用,对计算机网络有了一个初步的认识。在计算机网络模型的各个层次中,我们最关心的莫过于传输层和网络层了;尤其是传输层,作为应用层的下层,开发同学在工作中也接触的比较多。比如拥有高性能网络通信能力的netty、dubbo等中间件,都涉及了传输层尤其是TCP协议的很多细节和上层的协议优化。作为与开发同学关系最紧密的传输层,掌握其相关的知识是非常必要的。传输层简介传输层位于应用层的下面一层,它提供了主机间的进程(应用)的通信能力;它屏蔽了底层网络路由、数据传原创 2021-02-27 17:51:16 · 406 阅读 · 0 评论 -
系统日志实践
日志就像救火队,没有问题的时候感知不到它的存在;一旦出了问题没有它是不行的日志困境:为什么需要打印日志其实我们需要问一下自己这个问题:**为什么需要打印日志?**为了系统出问题时快速定位问题?为了监控系统运行情况?我们的目的不一样打出来的日志也是不一样的;如果搞不清楚打印日志的目的,为了打日志而打日志,那么很可能在需要日志的时候发现打的日志根本不能用;下面是碰到的一些典型的日志问题:打印过多的无用日志:当出现问题时无法找到想要的日志、无法定位问题;堆栈信息json化:使得日志阅读成本直线.原创 2020-12-10 23:42:47 · 286 阅读 · 1 评论 -
zipkin(五):zipkin-spring-boot-starter兼容dubbo2.7.6
通过引入zipkin-spring-boot-starter(下文简称zipkin-starter)依赖,小伙伴们可以分分钟让应用集成链路跟踪能力。随着集成链路跟踪的应用数量持续增加,作为中间件依赖的zipkin-starter开始面临的各种框架的兼容性问题。今天就聊一下dubbo高版本(2.7.5&2.7.6,两个版本兼容性问题相似,下文只对2.7.6进行分析)的兼容性问题:因zipkin-starter默认生成的Config覆盖dubbo自身Config,导致配置文件中的dubboConf.原创 2020-08-30 15:45:05 · 703 阅读 · 0 评论 -
zipkin:自定义链路传播(四)
背景zipkin链路信息传播方式ons、dubbo通用传播工具原创 2020-07-19 18:53:52 · 1684 阅读 · 0 评论 -
zipkin:实现zipkin-spring-boot-starter(三)
本篇文章主要讨论如何基于Spring容器和springboot starter的能力简化开发者集成链路跟踪的流程原创 2020-07-18 20:18:09 · 782 阅读 · 0 评论 -
不可忽视的Dubbo线程池
问题描述线上突然出现Dubbo超时调用,时间刚好为Consumer端设置的超时时间。有好几个不同的接口都报超时了第1次调用超时,第2次(或第3次)重试调用非常快(正常水平)Dubbo调用超时的情况集中出现了3次,每次都是过一会自动恢复排查排查日志看到调用超时,首先就拿着traceId去服务提供方查日志。奇怪的是,在服务提供方的业务日志里面,只有正常的调用日志(耗时正常),没有超时调用的日志。从正常的调用日志里面看,一切都是正常的,看不出所以然。给人的感觉就是超时那次请求的调用没有达到原创 2020-05-31 18:44:37 · 523 阅读 · 0 评论 -
通用状态码设计
背景在企业中,一个对外发布的产品一般会涉及到好几个部门、不同人员开发的系统。每个部门甚至每个人开发的系统的返回码体系可能都是不一样的,比如:A系统把系统返回码都放在SystemAResultCode的枚举类中B系统则把系统返回码都放在SystemBResultCode的枚举类中等等系统间不同的返回码会造成:无法设计通用响应数据结构。在rpc调用场景,这一点很重要;无法互操作。...原创 2020-04-23 20:31:24 · 888 阅读 · 0 评论 -
zipkin:为阿里云Ons/RocketMQ加上链路跟踪(二)
上一篇文章简单的介绍了如何把zipkin server、brave插件跑起来,这篇文章介绍一下如何把阿里云Ons/RocketMQ添加到链路跟踪里面来背景RocketMQ为阿里巴巴开源的一款消息中间件,阿里云的Ons服务可以看做成商业闭源版RocketMQ。为了叙述方便,下面统称RocketMQ。zipkin官方出品的brave已经包含了很多中间件插件了,比如dubbo、okhttp3、...原创 2020-03-30 01:03:32 · 3380 阅读 · 15 评论 -
zipkin:打造自己的链路跟踪系统(一)
在微服务盛行的时代,一个公司的应用数量动辄成百上千个。应用之间的依赖关系错综复杂,定位问题、排查问题是一件令人头疼的事情。为了解决这个问题,Google的Dapper论文应运而生。Twitter基于该论文打造了自己的链路跟踪系统(也就是本文章的主角):zipkin并将其开源简介Zipkin is a distributed tracing system. It helps gather...原创 2020-03-28 16:40:58 · 1619 阅读 · 0 评论 -
给MySQL数据库表瘦身
背景:MySQL数据库有一张几千万的数据表要做瘦身,需要删除指定日期前的数据。其中自增主键id和创建时间create_time都有索引解法:解法1:delete from xxx where id < xxx 或者 create_time < xxx。这种方式简单粗暴,进行删除操作时会锁表,从而影响其他的正常SQL,大数据量时不可行;解法2:从解法1得到启示,既然SQL一次性...原创 2020-02-11 20:54:51 · 946 阅读 · 0 评论 -
对2b、2c账号体系的思考
2b:to business,对商业(机构);2c:to consumer,对消费者(个人)2b的产品:主要针对机构、企业的产品;2c的产品:主要针对消费者、个人的产品假设你想推出一款针对记者,提高他们工作效率的产品,那么在设计账号体系时需要好好思考这个问题:这款产品它是2b还是2c的不要小看这个问题,这个问题的答案会决定这个产品的账号体系的结构,以及账号体系后续的可扩展性。有这么严...原创 2019-10-13 22:50:00 · 1207 阅读 · 0 评论 -
OAuth2的四种模式
现在的互联网流量入口基本上被几大巨头(BAT、TMD)所把持,对于新上线的应用获取用户比较快捷的方式就是通过OAuth2协议接入它们的账号系统。降低用户注册&登录成本,是大部分新上线应用的选择。比如前段时间吵得沸沸扬扬的抖音滥用腾讯系(微信、QQ)用户信息(头像、昵称)事件,就是因为抖音上线时通过OAuth2接入了腾讯系的账号体系,后面未经腾讯同意就将用户信息给多闪使用。本文将介绍OAu...原创 2019-10-13 15:30:17 · 3751 阅读 · 1 评论 -
ffmpeg: hls 转流 rtmp
最近遇到一个需求,需要将hls协议的直播流转换成rtmp协议的直播流; 在网上找了很长时间,没有找到相应的技术文章, 最后leader给了一个终极命令搞定:ffmpeg -i http://test.com/index.m3u8 -vcodec libx264 -vb 800k -acodec libfaac -ab 64k -f flv rtmp://test.com/appNam...原创 2018-04-27 21:33:43 · 2318 阅读 · 3 评论 -
RESTful api:post 与 put的区别
无论是post还是put,两者都可以创建和更新资源。创建:post不需要指定被创建资源的id,而put需要指定更新:两者都要指定被更新资源的idPOST:> modify and update a resourcePOST /questions/<existing_question> HTTP/1.1> create a resource:POST /...原创 2018-11-15 10:06:32 · 2641 阅读 · 0 评论 -
FFmpeg碎片知识
命令保存m3u8视频为mp4ffmpeg -i 'http://xxx.com/a.m3u8' -vcodec copy -acodec copy -absf aac_adtstoasc output.mp4m3u8转推rtmp切割视频原创 2018-12-06 11:14:50 · 266 阅读 · 0 评论 -
利用TP-Link TL-SG2005进行网络抓包
最近遇到需要分析某个网络设备的网络请求的需求,而这个设备可以认为是一个黑盒:无法从内部分析这个设备的网络请求,只有从外部的网络连接中想办法。于是乎,搞到了一个TL-SG2005网管交换机去解决这个问题,就是这个东西:这个交换机既可以当做标准的交换机去使用,也可以用作端口监控。而现在我就要使用它的端口监控功能,它可以让任意的端口收发的数据包都复制一份到指定端口,然后在使用WireShark这...原创 2019-01-14 23:39:24 · 16675 阅读 · 1 评论 -
一行脚本快速统计Java项目代码行数
脚本find . -name *.java -exec wc -l {} \; | awk '{s+=$1}END{print s}'分析整个脚本分为三部分:查找当前目录下所有以java结尾的文件通过wc 统计单个的java文件行数通过awk命令进行求和得到总的文件行数ps:如果想统计其语言的项目,只需要把*.java后缀替换成*.go、*.js即可参考资料一行she...原创 2019-03-14 19:38:41 · 918 阅读 · 0 评论 -
第一个shell脚本
这是一个检测ip变化后,重启docker的脚本脚本#! /bin/bashdocker_restart='./docker_restart.sh'ipFile='./pre.ip'currentIp=$(curl ip.sb -s)echo "currentIp: "$currentIpif [ -z "$currentIp" ];then exit 0fiif [...原创 2019-03-12 09:36:57 · 173 阅读 · 0 评论 -
记一次性能压测瓶颈排查
昨天测试同学过来反应有一台机器做性能压测的时候,无论开多少个线程,QPS一直压不上去,而服务器和数据库的性能指标(主要是CPU和内存)一直维持在很低的水平。希望帮忙排查一下原因。过去看了下进行压测的接口代码,逻辑很简单,就是一个数据库查询,所以不存在耗时操作的问题。首先观察服务器(4c32g)和数据库的详细性能指标:服务器CPU和内存都很低,数据库的监控显示只有一条活跃连接。这就很奇怪原创 2018-01-07 15:58:18 · 6382 阅读 · 1 评论