自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

IT Panda 的技术博客

Hello World -> Keep Coding - 每天进步亿点点

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

原创 [随笔] 具有产品意识的工程师

最近一段时间是公司的晋升季,我也对过去一段时间的工作进行了全面的复盘,识别、分析与改善不足之处的同时,也继续完善并发扬光大做的好的方面,这其中对“成为具备产品意识的工程师”有着深刻的体会。

2023-09-09 14:03:27 176

原创 Github Arctic Code Vault 哈哈 自己的项目被存储在北极 1000年

今天像往常一样登陆自己的Github,突然发现左下角有个新的勋章 Arctic Code Vault Contributor,点进去才发现大事不妙 ????什么是 GitHub Code Vault,是Github发起的一个项目,旨在保存人类开源代码1000年,并封存在北极!第一批被选中的开源项目已经完成了封存Github从2020-02-02之前的开源项目中选取了一批,并生成快照存储于特殊的交卷中,封存在北极的一个退役的矿坑中,存上个1000年… 被选中的项目贡献者,会获得一枚北极代码库贡献者

2020-09-14 09:36:59 1451

原创 从利用Arthas排查线上Fastjson问题到Java动态字节码技术(下)

从Arthas的源码引出了Java动态字节码技术,那么这一篇就从几种Java字节码技术出发,看看Arthas是如何通过动态字节码技术做到无侵入的源码增强;Java大部分情况下都是解释执行的,也就是解释.class文件,所以如果我们想对原代码进行增强的话,直接接的手段便是从源文件.java入手,使用静态代理、动态代理、装饰器等设计模式进行功能增强。但很多时候我们作为第三方,没有机会、不方便拿到源码时,这条路就走不通了;此时如果还是想继续其进行功能增强的话,那么只剩一条路了,就是直接对.class文件下手。

2023-09-17 08:34:16 222

原创 通过图数据库 Neo4J 建立疫情行动轨迹及接触关系图

最近疫情反复,我被为拜托建一张“某某行动轨迹及接触关系图”。这类行动轨迹或接触关系,可以抽象成网或者图,从这类图结构立刻就会联想到图数据库Neo4J,正好并没有在公司电脑上安装和使用过Neo4J,于是在这里简单记录下,整个过程还是非常简单的,10min之内即可搞定。Neo4J 安装 & 启动选择通过docker镜像进行安装,首先打开 DockerHub,搜索Neo4J。这里选择最新版本即可,拉取镜像 docker pull neo4j$ docker image ls neo4jREP

2021-08-09 07:32:49 1135 2

原创 从利用Arthas排查线上Fastjson问题到Java动态字节码技术(中)

上一篇文章 中通过对一次线上事故的复盘,引出了福报厂的Arthas,一个建立在Java动态字节码技术之上的Java诊断工具;关于Arthas的使用方式就不赘述了,查看官方文档可以很快上手,玩法也特别多;上一篇中也仅仅只介绍了一种使用场景,即”debug线上JVM内部class信息、在线watch方法执行并查看方法输入输出、在线反编译class、重新编辑Java后直接热部署“的组合拳(手动狗头)…上手一门技术最基本要做到 what-how-why,在知道了Arthas是什么(what),以及如何使用(how

2021-06-07 06:30:47 612

原创 从利用Arthas排查线上Fastjson问题到Java动态字节码技术(上)

没被Fastjson搞过的程序员不是合格的程序员 ---- 手动狗头开个玩笑,福报厂的同学们不要喷,Fastjson是非常优秀的工具!复盘先简短复盘下之前遇到的一个线上问题:随着业务发展项目A日渐臃肿,已经成为人人都头疼的big ball of mud 大泥球,遂决定对其进行重构,细节包括服务拆分与部分逻辑重构。虽然我不是这块业务的技术owner,但这类重构任务自然还是我来负责,同时在业务需求排队与原owner看戏心态的情况下,留给我从头熟悉与重构的时间并不多… 重构过程就不在这赘述了,虽然发现和.

2021-05-22 09:59:59 709 1

原创 系统稳定性方法论 - 提感知、快响应、做复盘

之前在<系统稳定性方法论>中提到了稳定性建设的四大抓手,在<降发生>之后,今天来说一说其余的三点 提感知、快响应、做复盘提感知何为"提感知"提感知指的是:对于已经出现问题,能够及时且精准的进行告警,提升对异常的感知能力如何"提感知"对异常的感知主要分为:被动接收 与 主动发现 ,抓手是 监控 & 告警监控首先要明确一点,监控是分层级的,常见的可以分为5层:服务器监控:物理机监控、虚拟机监控、容器监控,分别监控cpu、内存、io、存储、网络…中间件监控:数据

2021-05-15 09:05:42 1660 7

原创 系统稳定性方法论 - 降发生

上一篇<系统稳定性方法论 - 序篇>中提到了系统稳定性的4大抓手,今天就先说说这第一个方向,降发生。何为”降发生“降发生指的是,从设计阶段开始,开发阶段、测试阶段、上线前的准备节点、上线阶段到最后上线后的回归测试阶段,在这整个过程中,对所有阶段进行把控,将能出现异常的可能消除。设计阶段这一阶段需要考虑的主要问题:除了最基本的”实现功能型需求“之外,更好设计和思考”如何实现非功能性需求“,而对于系统稳定性方向来说,就是如何设计系统防止被别人搞死。举几个常见的”非功能性需求“与上下游交

2021-04-25 07:09:10 933

原创 系统稳定性方法论 - 序

业务发展是树系统稳定是根既要想上发展也要向下扎根~~ 某位大佬系统稳定性的重要程度不言而喻,特别是在后互联网寡头平台化时代,任何微小的系统稳定性故障都有可能造成巨大损失。就拿我所在的出行行业的公司举例,重要的节假日简直成了各位RD的噩梦,五一、国庆节、年三十,虽然节前都会大搞特搞稳定性专项,但总是遵循墨菲定律,bad things always happen… 且每次的故障、再加上竞对推波助澜,都会对公司造成巨大的负面评论,同时也在打击着RD的自信心…作为一名RD,虽然我不是稳定性这方面的.

2021-04-17 16:31:11 886

原创 Kubernetes弃用Docker的由来和始末

2020年12月初,Kubernetes在发布v1.20的时候重磅宣称将逐渐弃用Docker,一石激起千层浪,瞬间引爆容器圈;但没想到已经过去两个月时间了,还有文章用UC体误导吃瓜群众,“还在学Docker?”、“Docker已死!”; 额… 累了,毁灭吧,赶紧的…所以在此梳理下整件事情的来龙去脉,若有不正确的地方还请指正,非常感谢!快速回顾最初Docker是建立在Linux的LXC容器技术之上,但LXC最早也是由Google贡献给Linux的,所以一定程度上说没有Google就没有Docker。

2021-02-01 08:50:57 6455

原创 DDD领域驱动设计

经常可以看到大家在内网社区讨论DDD,作为一名~~79岁的~~老同志也想分享下自己的心得体会 ????本篇不会涉及DDD基础概念的介绍,很多文章已经讲解的非常详细,就不赘述了;但想强调一点的是DDD的概念最早由巨佬 Eric Evans 在2003提出,里面的很多概念由于年代久远和翻译的问题经常困扰大家,其实不必纠结于概念,理解思想就足够了。`DDD`和`OOP`一样都是大浪淘沙留下来的金子 上面的图片某种程度上可以从侧面反应出近10年后端架构的发展,特意拿微服务和Serverless这两个近几年非

2020-12-03 08:37:54 737 2

原创 设计模式落地篇: 摆脱复杂难维护的条件表达式(if-eles/switch)

请先看下面两段代码if( conditionA ){ if( conditionA1 ){ }else if( conditionA2 ){ }else{ }}else if( conditionB ){}else{}switch(type){ case XxEnum.A: ... case XxEnum.B: ... case XxEnum.C: ...}这类代码在日常工作中

2020-10-24 19:06:16 878

原创 Kubernetes autoscaling 自动扩缩容

很多时候需要对线上应用进行扩容和缩容,扩容以提高应用处理能力,缩容以节约成本;而以往的系统对在线扩缩容支持的并不是很好,或多或少都需要开发或运维人员介入;Kubernetes提供的HPA - Horizontal Pod Autoscaler - Pod水平扩缩容,则解决了这个问题,只需要定义扩缩容的阈值,之后就交给Kubernetes处理即可。基本概念HPA默认 15s 执行一次 (当然也可以修改 --horizontal-pod-autoscaler-sync-period XXs),每次执行会查

2020-09-11 09:21:35 1113 1

原创 Kubernetes Pause pod

我们会发现在 kubernetes 中,有为数不少的 gcr.io/google_containers/pause-amd64 container;他们的大小都很小只有几百KB,同时entrypoint都为/pause了解它是什么之前,先看看docker和pod之间的一个主要区别,pod是一组逻辑相关的docker container集合;我们已知 container 要职责单一,同时 pod 是逻辑相关的 container 的集合,pod内部的container共享相同的网络磁盘CPU内存等资源;

2020-09-11 09:08:26 594

原创 Argo 101 - 3 : Download & Upload with 「script」 template

上一篇中成功连通Argo与Storage - Minio,那么现在就可以使用 script 这种 template 来 upload 和 download 数据;对于Data Engineering或者Machine Learning来说,这一步都是必须的;download既然是download,那首先需要了解download的 from 和 to 都是哪儿from,肯定是Minio了,但是连接Minio需要mc(Minio client)的帮助,所以需要使用minio/mc这个imageto,肯

2020-07-14 17:57:23 2822

原创 Argo 101 - 2 : S3/Minio Storage

继续Argo之旅;Argo基本概念再熟悉下 Argo 的核心概念:WorkflowTemplate,可以看作是function,Argo中的Template有两类:定义Templatecontainer,最常见的,也是Argo的优势script,基于container,你可以写点什么resouce,直接操作k8s的任何resourcesuspend,暂停一段时间,等同于 Thread.wait(int time)调用Templatesteps,直接调用其他Template

2020-07-12 17:23:19 1129

原创 Argo 101 - 1 : Hello Argo

首先,啥是workflow?Wiki:a workflow consists of an orchestrated and repeatable pattern of activity是一些被精心编排过的,重复性的活动;对于Data Engineering或者Machine Learning来说,workflow 就是 DAG (有向无环图),而DAG中的每一步都是一个task,这些task协同工作来完成具体的任务;比如说,ETL,Machine Learning,deployument…而开

2020-07-12 00:07:54 677

原创 Machine Learning - A/B Test

首先,A/B testing 并不是机器学习独有的概念,事实上它被用在everywhere[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7CfXPMHk-1594375165804)(https://media2.giphy.com/media/9P3fsk7SesjIverw4Q/giphy-downsized.gif)]...

2020-07-10 22:50:56 869

原创 Bloom Filter - Guave

昨天隔壁组 GEO location 的同事,来请教一个问题,如何对千万级的数据进行 重复数据判断;之前数据量不大的时候,一直使用hashset,现在数据量上来了,显然需要重构;大概场景是,GEO location 每天需要监控司机的位置信息,位置信息可经基站数据转化成Long整数,数据量会达到千万级别,但其中不乏基站发送的重复数据,所以想去重,并且对精度要求也不是很高,偶尔的偏离位置也可以接受;我一听,这不是标准的布隆过滤器的case么,不能再标准了…什么是布隆过滤器布隆过滤器,说简单也很简单,底

2020-07-07 19:01:36 574

原创 使用Cobra创建功能强大的命令行CLI

我敢肯定所有人都在使用git,也有很大一部分在使用kuberntes,但是不确定你是否会对每天都在操作使用的这俩命令行CLI感到好奇? 是否想过对它们的实现一探究竟?毕竟,好奇心是驱使人类进步的一大动力哈哈,直接进入今天的主题;Cobra,一个可以用来创建强大功能命令行CLI的工具,git / kubectl 都是它的代表作。就不翻译 文档 了,先说下基本使用方式,然后直接上例子。Golang 配置和引用 Cobrago get -u github.com/spf13/cobra/cobra

2020-07-03 22:49:38 848

原创 macOS High Sierra 10.13.4 部署 CUDA 环境

先说结论,失败了… 并没有安装成功,但是记录下整个setup CUDA的方法及流程… 毕竟过程也很重要嘛,哈哈Xcode/Xcode cliCUDA在macOS上需要Xcode的支持,我之前就已经安装过,只不过这次升级了Xcode到 9.4GPU driver到这里找与你系统支持的GPU driver;因为我本季系统是 10.13.4 所以下载的版本是 10.13.4 (17E199) 387.10.10.10.30.106,之后下载安装即可。CUDA driver到这里 下载与 GPU.

2020-06-21 16:23:09 865

原创 使用Fabric8 kubernetes-client java client 操作kuberntes 自定义资源CR

kubernetes-client (fabric8) to interact with kubernetes custom resourceskubernetes中的一切东西都叫做 resource,k8s 默认的提供了很多 resource,比如 pod/deployment… 而 custom resource 允许用户基于已有resource,创建新resource来扩展k8s;在这里并不打算深入介绍CR/CRD;而着重介绍下如何通过 fabric8·kubernetes-client 来操作C

2020-06-21 16:02:58 5020

原创 OpenFaaS 101 - 4:Design & Architecture

掌握了hello world之后,就来看看OpenFaaS架构Overview如上图,OpenFaaS在架构上,属于承上启下的第二层,需要部署在k8s上,同时需要container registry存储image;也需要NATS负责异步处理,Prometheus负责收集metrics,同时负责扩容workflow上看:OpenFaaS Gateway负责处理所有request (sv...

2020-05-04 18:50:35 786

原创 OpenFaaS 101 - 3:Hello World

第一个列子,当然是 Hello World 了… 下面使用 Python, Go, Java 分别实现…首先准备好目录:└── helloworld ├── go ├── java └── pythonPython使用CLI创建 function faas-cli new --lang python hello-world, 会自动生成以下文件└── hello...

2020-05-04 18:48:05 842 1

原创 OpenFaaS 101 - 2 : 安装 OpenFaaS 以及第一个 Function

首先 OpenFaaS 可以部署在 k8s, OpenShift, Docker Swarm 上,其中官方推荐使用 k8sInstall faas-cli如果是Mac的话,可以直接 brew install faas-cliCreate two namespaces openfaas & openfaas-fnkubectl apply -f https://raw.githubu...

2020-05-04 18:45:14 1595

原创 OpenFaaS 101 - 1 : Serverless & Faas

OpenFaaS 101 - 1 : Serverless & Faas在开始 OpenFaaS 之前,需要先了解两个概念: Serverless Computing, FaaS近几年 MicroService 微服务,Cloud Computing云计算 ,Kubernetes 等技术 已经成熟的落地,甚至变着花的玩儿的时候;很多人开始探索下一代架构 Serverless Compu...

2020-05-04 18:42:10 698 1

原创 Python 项目打包,上传至Artifactory,并下载安装

Python PackingPython Project结构python_project/ package/ __init__.py xx.py setup.py LICENSE README.md上面是一个Python Project最基本的结构,包含:package folder:__init__.py 和 你真正的Python module文...

2020-05-04 18:34:38 1918

原创 Golang 问题列表

无法安装beeparsing go.mod: unexpected module path "github.com/go-delve/delve"解决办法 GO111MODULE=off go get -u github.com/beego/beek8s client-go 依赖问题../../../../pkg/mod/k8s.io/client-go@v11.0.0+incompat...

2020-05-04 18:33:24 970

原创 Elastic search OOM out-of-memory issue, caused by Lucene off-heap memory

背景介绍首先介绍下项目ES集群环境:5台server组成的ES集群,每台server物理内存64G还有几个G的SWAP,其中给ES分配40G的堆内存;除ES之外,server上还跑着一些其他service.项目内使用ES,主要存储fluentD泵过来的k8s集群内所有app的系统log,之外还维护GEO app的业务数据.事件还原期初ES只是偶尔单个节点报OOM,并没有引起足够的重视,特别...

2020-04-03 06:48:57 729

原创 Java单例模式double check locking在JDK1.5之前的问题

线上datadog最近总是在报警网站在登录时颁发证书操作耗时太长,即spring security oauth2 endpoint /oauth/token这个API performance慢.在阅读源码的时候看到了个有趣的地方,如下:# org.springframework.security.oauth2.provider.token.store.KeyStoreKeyFactorypu...

2019-12-16 05:58:16 605

原创 Elastic Search Too Many Open Files Error

线上ES突然报错too many open files首先使用如下命令查看es cluster当前file descriptor statuscurl -XGET '127.0.0.1:9200/_cat/nodes?v&h=ip,fdc,fdm'ip fdc fdm100.85.71.6 103828 128000100.85.71.7 10...

2019-12-16 05:21:58 1163

原创 Kubernetes Namespace Stuck in status Terminating

公司的DEV kubernetes环境需要重新搭建,在搭建的过程中,发现了一个有趣的现象,在尝试kubectl delete ns XX的时候, namespace一直卡在了Terminating的状态上.在尝试了诸多方式后,只有直接调用ApiService的API才可行,具体方法:kubectl get secretskubectl describe secrets xxx (anyone...

2019-11-10 16:35:26 582

原创 Train Machine Learning models with MLflow, Deploy with Seldon

MLflowMLflow: the open-source platform for the machine leaning lifecycle, 管理machine learning整个生命周期的一款开源产品,主要提供了三种服务:MLflow Tracking: 记录并维护了machine learning的代码,数据,matrics,config,results…并结合UI展示MLfl...

2019-11-10 16:34:16 904

原创 kubernetes DNS

最近公司的k8s集群中不时的会出现域名解析的问题,但排查问题的过程却费了些时间,为了以后的经验积累,在这里在梳理下用到的基本知识.DNS: /etc/resolv.conf有四个重要的元素:nameserver //定义DNS服务器的IP地址,可以有多个,分行即可domain //定义本地域名search //定义域名的搜索列表,可以是多个,空格分隔即可so...

2019-11-02 06:29:09 605 1

原创 设计模式 - 责任链模式

Mybatis中的Plugin是依赖Interceptor接口实现的,这里面还用到了责任链模式 Chain of responsibilityinterceptorChain.addInterceptor(interceptor);public class InterceptorChain { private final List<Interceptor> interce...

2019-10-28 06:50:41 484

原创 Mybatis Plugin

很多在service上的逻辑,可以由Mybatis在DAO层实现,比如说:分页,比较有名气的PageHelper对数据加密/解密而想要在Mybatis上实现此类功能,则需要有Mybatis PLugin的帮助。其主要思想是,在已映射了的statement上,进行拦截,替换/增强新的逻辑。Mybatis允许对如下的方法进行拦截:Executor (update, query, fl...

2019-10-28 06:48:17 478

原创 2019 阿里巴巴云栖大会 - Alibaba Apsara

9月底有幸参加了为期三天的阿里巴巴云栖大会, 感受了虽然已入秋但依旧炎热的杭州, 也体验了阿里巴巴作为国内领先科技公司带动的行业发展.但是也不得不承认, 较往年更偏向开发者 极客, 现在的云栖大会越来越商业化, 充斥着友商合作 流量…所以在享受着新技术的同时, 也头疼着行业乱像. 大会上发布各式各样的阿里新产品, 宣布这阿里进军产业A产业B, 与X合作与Y合作的同时, 收着门票, 吸着引流量…...

2019-10-06 10:33:17 2115

原创 SSO: Basic-Auth & OAuth2 & SAML & OpeanID

SSO = Single Sign On为什么要有SSO?我们可以从有SSO和没有SSO比较开始:如果没有SSO的话,那所有的APP都需要维护一套完整的认证+授权(authentication and authorization)App team 不开心,因为他们不得不维护所有用户信息,还要维护模块去做验证和授权User 不开心,因为用户得不得在每个App内管理一对儿用户名和密码,还总...

2019-09-22 05:59:09 920

原创 Docker <none> <none> - dangling

如果查看docker的image或者container的话,肯定会看到很多 <none>:<none> 的东西,那么这都是是些什么? 可以删除了吗?答案是: 分情况讨论如果使用的是带-a参数的命令,如docker container ls -a或者docker image ls -a那么这里看到的所有<none>:<none>的东西,很大几率上...

2019-09-13 07:20:08 6928

原创 Redis reshard issue - timeout

线上的Redis集群使用的是5台Node组成的Redis Cluster,之前有一台node宕机重启之后,Redis service启动了,也还在Cluster内,但是一直不给分配slot.就是说,16382个slot本来可以被均匀的分配到这5台node上,但现在只分配给其中的4台,第5个虽然可以接收client发送过来的请求,但是只能做到redirect request…那只好手动resha...

2019-09-13 07:18:48 768

空空如也

空空如也

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

TA关注的人

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