部署到GitHub Pages。官网支持很多种方法,我选了GitHub Action。 我有几台电脑,几套开发环境,如果每个都配一遍也够麻烦的,毕竟不是专业的前端。用GitHub Action的话,写简单博客或者文档直接push到仓库就好了,甚至可以在GitHub的网页编辑,方便得很。
Docusaurus建站(1)- 项目初始化
本想重做自己的博客和文档,本打算从头写,调研了Next.js和Gatsby,都是很强大的框架,但对我个后端开发来说还是很有难度的。无意中看到了Docusaurus框架,能自带文档和博客,还能高度自定义页面,完美匹配我的需求,所以就有了这个系列,打算记录下整个博客改造过程,能写几期不一定,慢慢来吧。
初尝Gatsby
第一次体验Gatsby项目,创建demo项目就碰到了不少问题。 笔者用的是MacOS环境。
HBase SCP & TRSP
最近在组内进行的一次SCP和TRSP两个Procedure执行过程的分享,在这里记录一下,懒得去整理出文章了 😜
HBase不停服跨集群数据迁移
最近接到两个用户提的JIRA,都是目前数据只存在了一个srv集群,需要将数据备份prc集群做数据备份或者离线计算,同时两集群之间还要做数据实时同步。所以在这里记录下操作过程并介绍下原因。
Maven项目以Shaded形式引入第三方依赖库
最近有用户反馈,他的项目中同时使用了HBase和一个RPC框架,HBase依赖2.5.0的protobuf,RPC框架依赖3.7的protobuf,导致他的项目编译都失败。0.98版本的HBase还是使用的原生的protobuf-java依赖,2.0版本才使用了shaded形式的protobuf,所以我们决定自己提供以shaded形式引入protobuf的HBase Client。
相信这个问题不只是出现在HBase中,或者出现在与protobuf相关的项目中,其实当我们项目间接依赖了像protobuf、netty等大版本之间互不兼容的框架,甚至guava这种某些接口不兼容的框架,都有可能出现类似的问题。这里也是提供一个可以参考的解决方法。
方法上,参考了HBase 2.0之后对第三方依赖的处理,简单来说就是将常用第三方依赖的代码负责一份,修改所有类的package,发布一个自己的artifact到仓库中。这样肯定就不会再依赖冲突了。
而protobuf的依赖处理起来则比较麻烦一点,除了修改原生protobuf类的package之外,还需要处理proto生成的Java文件。所以本文就以protobuf为例,提供第三方依赖冲突的解决方案。因为都是使用Maven插件实现,所以也只对Maven项目有用,相信其他项目也有类似的解决办法。
本文相关代码都已放在Github
初步了解HBase Region Replicas
「记」Jdk8 CompletableFuture在高并发环境下的性能问题
最近的工作内容就是写一个 DualHBaseClient
,在查询数据时间过长时,能够将同样的请求发给 replication 的集群,缩小 client 端的 p99、p999 延迟,减小毛刺。
实际开发最初的一版代码都没有花费1pd,性能测试倒测了好几天都不及预期,甚至优化之后各方面性能更差劲。
本文就是记录下导致此次性能问题的主要原因:CompletableFuture.
使用 Java 异步编程的时候,CompletableFuture
用起来还是相当舒服的,在HBase的异步API里,也大量的使用了CompletableFuture
,如果 CompletableFuture
有性能问题,那可就悲催了。