自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

crossoverJie专栏

会crossover的程序猿

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

原创 为自己搭建一个分布式 IM(即时通讯) 系统

前言大家新年快乐!新的一年第一篇技术文章希望开个好头,所以元旦三天我也没怎么闲着,希望给大家带来一篇比较感兴趣的干货内容。老读者应该还记得我在去年国庆节前分享过一篇《设计一个百万级的消息推送系统》;虽然我在文中有贴一些伪代码,依然有些朋友希望能直接分享一些可以运行的源码;这么久了是时候把坑填上了。目录结构:本文较长,高能预警;带好瓜子板凳。于是在之前的基础上我完善了一些...

2019-01-02 08:10:42 5836 2

原创 设计一个百万级的消息推送系统

前言首先迟到的祝大家中秋快乐。最近一周多没有更新了。其实我一直想憋一个大招,分享一些大家感兴趣的干货。鉴于最近我个人的工作内容,于是利用这三天小长假憋了一个出来(其实是玩了两天

2018-09-25 08:32:59 822 2

原创 1K star+ 的项目是如何炼成的?

前言首先标题党一下,其实这篇文章主要是记录我的第二个过 1K star 的项目 Java-Interview,顺便分享下其中的过程及经验。需求选择Java-Interview之所以要做这个项目主要是当时我正在面阿里的两个部门,非常幸运的是技术面都过了。其中的过程真是让我受益匪浅更是印象深刻,所以就想把期间的问题记录下来,加上自己的理解希望能对其他朋友起到帮助。...

2018-05-15 08:40:52 499

原创 秒杀架构实践

前言之前在 Java-Interview 中提到过秒杀架构的设计,这次基于其中的理论简单实现了一下。 本次采用循序渐进的方式逐步提高性能达到并发秒杀的效果,文章较长请准备好瓜子板凳(liushuizhang��)。本文所有涉及的代码:https://github.com/crossoverJie/SSMhttps://github.com/crossoverJie...

2018-05-09 10:05:29 1102

原创 OpenTelemetry 实战:从零实现分布式链路追踪

背景之前写过一篇 从 Dapper 到 OpenTelemetry:分布式追踪的演进之旅的文章,主要是从概念上讲解了 Trace 在 OpenTelemetry 的中的场景和使用。也写过一篇 实操 OpenTelemetry:通过 Demo 掌握微服务监控的艺术:如何从一个 demo 开始集成 OpenTelemetry。但还是有不少小伙伴反馈说无法快速上手(可能也是这个 demo 的项目比较多)...

2024-08-21 08:08:51 687

原创 深入理解单元测试:技巧与最佳实践

之前分享过如何快速上手开源项目以及如何在开源项目里做集成测试,但还没有讲过具体的实操。今天来详细讲讲如何写单元测试。????什么情况下需要单元测试这个大家应该是有共识的,对于一些功能单一、核心逻辑、同时变化不频繁的公开函数才有必要做单元测试。对于业务复杂、链路繁琐但也是核心流程的功能通常建议做 e2e 测试,这样可以保证最终测试结果的一致性。????具体案例我们都知道单测的主要目的是模拟执行你写过的每一行代码...

2024-08-15 08:08:51 283

原创 Pulsar升级自动化:一键搞定集群升级与测试

背景由于我在公司内部负责维护 Pulsar,需要时不时的升级 Pulsar 版本从而和社区保持一致。而每次升级过程都需要做相同的步骤:安装一个新版本的集群触发功能性测试触发性能测试查看监控是否正常应用有无异常日志流量是否正常各个组件的内存占用是否正常写入延迟是否正常命令行工具以上的流程步骤最好是全部一键完成,我们只需要人工检测下监控是否正常即可。于是我便写了一个命令行工具,执行流程如下:pulsa...

2024-08-07 08:08:08 1005

原创 Pulsar客户端消费模式揭秘:Go 语言实现 ZeroQueueConsumer

前段时间在 pulsar-client-go 社区里看到这么一个 issue:import"github.com/apache/pulsar-client-go/pulsar"client,err:=pulsar.NewClient(pulsar.ClientOptions{URL:"pulsar://localhost:6650",})iferr!=nil{...

2024-07-30 08:08:42 323

原创 Nginx监控不再难:简化部署流程,提升监控效率

前段时间接到一个需求,希望可以监控 Nginx 的运行状态。我们都知道 Nginx 作为一个流行的 Web 服务器提供了多种能力,包括反向代理、负载均衡;也支持了许多协议,包括:gRPChttpWebSocket 等作为一个流量入口的中间件,对其的监控就显得至关重要了。市面上也有一些现成的产品可以监控 Nginx,比如知名的监控服务商 datadog 也提供了 Nginx 的监控。但是我这是一个...

2024-07-24 08:08:40 769

转载 案例实践 | 如何做好 Apache Pulsar 的运维?ASP 产品简介

本文整理自 Pulsar Meetup 深圳2024 大会,由来自 AscentStream 谙流科技技术合伙人魏祥臣带来的《如何做好 Apache Pulsar 的运维?ASP 产品简介》的演讲视频。嘉宾|魏祥臣, AscentStream 谙流科技技术合伙人编辑|社区志愿者 陈杰(crossoverJie),Teng FuPulsar运维的四个阶段- Four stages of Pulsar...

2024-07-19 08:00:32 62

原创 载均衡技术全解析:Pulsar 分布式系统的最佳实践

背景Pulsar 有提供一个查询 Broker 负载的接口:/***Getloadforthisbroker.**@return*@throwsPulsarAdminException*/LoadManagerReportgetLoadReport()throwsPulsarAdminException;pub...

2024-07-16 08:08:26 1033

原创 我是如何从零到成为 Apache 顶级项目的 Committer

最近收到了 Apache Pulsar 和 Apache HertzBeat社区的邀请邮件,成为了这两个项目的 Committer。一路走来我从最开始的打游击战的闲散人员到如今活跃在各个开源项目里的“老兵”,用现在流行的话来说 Apache 的这两个 Committer 就相当于是拿到了编制,进入了正规军。下面就分享一下我的个人开源经历,希望对想要参与开源或者已经在其中的开发者有所帮助。我的 Gi...

2024-07-12 08:08:52 961

转载 开源项目如何做集成测试

之前有朋友问如何做集成测试,今天就重点讲讲这个集成测试在开源项目中是如何做的。通常是需要对外提供服务的开源项目都需要集成测试:PulsarKafkaDubbo 等而只提供本地类库的项目通常只需要编写单元测试即可:HutoolApache Commmon以我接触到的服务型应用主要分为两类:一个是 Java 应用一个是 Golang 应用。????GolangGolang 因为工具链没有 Java 那么强大...

2024-07-10 08:08:35 49

原创 从Helm到 Operator:Kubernetes应用管理的进化

????Helm 的作用在开始前需要先对 kubernetes Operator 有个简单的认识。以为我们在编写部署一些简单 Deployment 的时候只需要自己编写一个 yaml 文件然后 kubectl apply 即可。apiVersion:apps/v1kind:Deploymentmetadata:labels:app:k8s-combat...

2024-07-08 08:08:11 1102 1

转载 五个我最近在 Go 里学到的小技巧

原文链接:https://medium.com/@andreiboar/5-small-tips-i-recently-learned-in-go-cf52d50cf129让编译器计算数组数量我们在 Go 通常很少使用数组 arrays,一般使用切片 Slice 来代替;但是当你需要使用的时候,如果你对需要指定数量大小感到很烦时可以使用 [...] 让编译器自动帮我们计算数组大小:package...

2024-07-03 08:02:26 39

原创 如何找到并快速上手一个开源项目

以前有写过两篇文章来简单聊过如何做开源的事情,最近我自己组了一个社区里面也有不少朋友对开源感兴趣,于是我便根据自己的经验系统的梳理了一些关于开源的事情。新手如何快速参与开源项目手把手教你为开源项目贡献代码有兴趣的可以先看看之前这两篇。????如何找到自己感兴趣的开源项目首先第一步先想清楚自己搞开源的目的是什么:参考社区大佬的代码,提升技术丰富个人履历,提高面试通过率更功利一点就是想成为某个项目的 Com...

2024-07-02 08:08:28 865

原创 OpenTelemetry 深度定制:跨服务追踪的实战技巧

背景在上一篇《从 Dapper 到 OpenTelemetry:分布式追踪的演进之旅》中在最后提到在做一些 Trace 的定制开发。到现在差不多算是完成了,可以和大家分享一下。我们的需求是这样的:假设现在有三个服务:ServiceA、ServiceB、ServiceCServiceA 对外提供了一个 http 接口 request,在这个接口会调用 ServiceB 的 order 订单接口创建订...

2024-06-27 08:08:36 785

转载 Go 1.23:拥抱iter包,简化你的迭代逻辑

最近 Go1.23 进入了冻结阶段,意味着不再添加新功能,而且已经加入的功能也不再会删除。Go 1.23 正式引入了iter软件包,这是一个专门用于 Iterators 的新特性。该软件包在 Go 1.22 中作为实验性功能,需要通过GOEXPERIMENT=rangefunc参数启用。在 Go 1.23 中,开发者可以直接通过代码实现迭代。在这之前循环将切片数据全部转换为大写时的写法:f...

2024-06-24 08:01:08 391

转载 Rust 在许多方面都优于 Go,但为什么没有 Go 流行?

最近连续在 Quora 看到几个关于 Go 和 Rust 的问题,讨论的都是为什么看起来 Rust 的设计、性能等许多方面都优于 Go,但为什么就是没有 Go 流行呢?以下是一些回答:首先 Go 是背靠 Google,受到了大量的资金、人员的支持。两者的领域不同, Go 更擅长网络和通用的开发,而 Rust 更擅长系统开发。Rust 的主要竞争对手是 C 语言这样有深厚底蕴的编程语言。Go 很简...

2024-06-18 07:40:29 126

原创 从 Prometheus 到 OpenTelemetry: 指标监控的演进与实践

在上一篇:从 Dapper 到 OpenTelemetry:分布式追踪的演进之旅我们讲解了 Trace 的一些核心概念:TraceSpanContextBaggage 等这次我们来讲另一个话题 Metrics。背景关于 metrics 我最早接触相关概念的就是 prometheus,它是第二个加入 CNCF(云原生)社区的项目(第一个是 kubernetes),可见在云原生领域 Metrics 指...

2024-06-14 08:09:00 653

原创 从 Dapper 到 OpenTelemetry:分布式追踪的演进之旅

在之前写过两篇比较系统的关于 OpenTelemetry 的文章:OpenTelemetry 实践指南:历史、架构与基本概念实操 OpenTelemetry:通过 Demo 掌握微服务监控的艺术从基本概念到如何部署 demo 实战了解 OpenTelemetry,从那个 demo 中也可以得知整个 OpenTelemetry 体系的复杂性,包含了太多的组件和概念。为了能更清晰的了解每个关键组件的作...

2024-06-07 07:40:37 792

转载 几个你或许并不知道 kubernetes 技巧

原文链接: https://overcast.blog/13-kubernetes-tricks-you-didnt-know-647de6364472使用 PreStop 优雅关闭 PodapiVersion:v1kind:Podmetadata:name:graceful-shutdown-examplespec:containers:-name:sample...

2024-06-04 08:08:23 50

转载 stack overflow 与 OpenAI 的合作引起了巨大争议

前两天在推送中看到一条新闻:Stack Overflow Upset Over Users Deleting Answers After OpenAI Partnership。简单来说就是 SF 与 OpenAI 建立了合作关系,会使用用户的提问以及回答来训练大模型,好处自然是提高开发者使用 OpenAI 的体验。但用户会担心他们的数据被拿来作为训练后并不会标明出处。同时数据都由 AI 进行检索后...

2024-05-28 07:30:41 49

原创 实操 OpenTelemetry:通过 Demo 掌握微服务监控的艺术

前言在上一篇文章 OpenTelemetry 实践指南:历史、架构与基本概念中回顾了可观测性的历史以及介绍了一些 OpenTelemetry 的基础概念,同时也介绍了 OpenTelemetry 社区常用的开源项目。基础背景知识了解后,这篇就来介绍一下使用 OpenTelemetry 如何实战部署应用,同时在一个可视化页面查看 trace、metric 等信息。项目介绍我们参考官方文档构建几个 s...

2024-05-27 08:08:47 1228

转载 程序员如何提升个人技术影响力

目录一、为什么要分享这个话题?二、为什么要打造技术影响力?三、怎么提升技术影响力?1. 输入-多学习自己对应领域的知识2. 输出-Github项目贡献3. 技术文章4. 演讲 4.1 怎么上行业大会演讲? 4.2 怎么讲?演讲技巧?5. 出书四、总结都说程序员的成长是码出来的,此话不假。但如果既会写代码,还会写文章,还能讲PPT,...

2024-05-22 08:10:09 569

原创 OpenTelemetry 实践指南:历史、架构与基本概念

背景之前陆续写过一些和 OpenTelemetry 相关的文章:实战:如何优雅的从 Skywalking 切换到 OpenTelemetry实战:如何编写一个 OpenTelemetry Extensions从一个 JDK21+OpenTelemetry 不兼容的问题讲起这些内容的前提是最好有一些 OpenTelemetry 的背景知识,看起来就不会那么枯燥,为此这篇文章就来做一个入门科普,方便一...

2024-05-21 08:08:25 592

转载 Google 如果把 Go 团队给裁了会怎么样?

大家好,我是煎鱼。节前有一则劲爆消息,Google 把 Python 基础团队和 flutter/dart 团队里相当多的开发人员给解雇了,据说可能是要换个城市重组(真是熟悉的 CY 套路)。据悉被解雇的人中基本都是负责了 Python 重要维护的相关核心成员。如下图所示:此时引发了国内外社区一个较大的担忧,如果 Google 如法炮制,要放弃 Go 核心团队。会发生什么事,会不会有什么问题?现在...

2024-05-15 09:24:05 50

原创 OpenTelemetry agent 对 Spring Boot 应用的影响:一次 SPI 失效的调查

背景前段时间公司领导让我排查一个关于在 JDK21 环境中使用 Spring Boot 配合一个 JDK18 新增的一个 SPI(java.net.spi.InetAddressResolverProvider) 不生效的问题。但这个不生效的前置条件有点多:JDK 的版本得在 18+SpringBoot3.x还在额外再配合使用 -javaagent:opentelemetry-javaagent....

2024-05-14 08:08:22 1160

原创 自动化测试在 Kubernetes Operator 开发中的应用:以 OpenTelemetry

背景最近在给 opentelemetry-operator提交一个标签选择器的功能时,因为当时修改的函数是私有的,无法添加单测函数,所以社区建议我补充一个 e2e test.因为在当前的版本下,只要给 deployment 打上了 instrumentation.opentelemetry.io/inject-java: "true" 这类注解就会给该 deployment 注入 agent。但没...

2024-05-06 08:08:17 859

原创 深入剖析:如何使用Pulsar和Arthas高效排查消息队列延迟问题

背景前两天收到业务反馈有一个 topic 的分区消息堆积了:根据之前的经验来看,要么是业务消费逻辑出现问题导致消费过慢,当然也有小概率是消息队列的 Bug(我们使用的是 pulsar)。排查通过排查,发现确实是在一点多的时候消息堆积了(后面是修复之后堆积开始下降)。于是我在刚才堆积处查看了一条堆积消息的列表:获取到其中一条消息的 messageId.这里本质上使用的是 pulsar-admin 的...

2024-04-30 08:08:10 890

转载 Pulsar Meetup 深圳 2024 大咖推荐

Pulsar Meetup 深圳 2024 大咖推荐活动介绍图片由 AscentStream 谙流科技和腾讯云中间件联合主办的 Pulsar Meetup 深圳 2024 将于 2024年04月27日 14:00-18:00 在深圳腾讯大厦 2 楼多功能厅,精彩呈现,期待大家多多报名!同时我们也开展同步直播,大家可以关注 AscentStream 谙流科技视频号、腾讯云中间件、示说、上海开源信息技...

2024-04-26 08:01:59 69

原创 日志架构演进:从集中式到分布式的Kubernetes日志策略

当我们没有使用云原生方案部署应用时采用的日志方案往往是 ELK 技术栈。这套技术方案比较成熟,稳定性也很高,所以几乎成为了当时的标配。可是随着我们使用 kubernetes 步入云原生的时代后, kubernetes 把以往的操作系统上的许多底层都屏蔽,再由他提供了一些标准接口。同时在 kubernetes 中的日志来源也比传统虚拟机多,比如可能有容器、kubernetes 自身的事件、日志等。我...

2024-04-22 08:08:46 963

原创 实战:如何编写一个 OpenTelemetry Extensions

前言前段时间我们从 SkyWalking 切换到了 OpenTelemetry ,与此同时之前使用 SkyWalking 编写的插件也得转移到 OpenTelemetry 体系下。我也写了相关介绍文章:实战:如何优雅的从 SkyWalking 切换到 OpenTelemetry好在 OpenTelemetry 社区也提供了 Extensions 的扩展开发,我们可以不用去修改社区发行版:opent...

2024-04-16 08:08:34 763

原创 2024年的云原生架构需要哪些技术栈

背景时间过得很快啊,一转眼已经到了 2024 年,还记得 15 年刚工作那会掌握个 SSM/H(Spring/Struts2/Mybatis/Hibernate) 框架就能应付大部分面试了。现在 CS 专业的新同学估计都没听说过 SSM????恰好从我刚开始工作时的移动互联网热潮到电商->共享经济->toB 大热->如今我都经历了一遍,技术栈也有由最开始的单体应用+物理机发展到现在的 ...

2024-04-11 08:08:52 599

原创 实战:如何优雅的从 Skywalking 切换到 OpenTelemetry

背景最近公司将我们之前使用的链路工具切换为了 OpenTelemetry.我们的技术栈是:OTLPClient──────────►Collect────────►StartRocks(Agent)▲...

2024-04-08 08:08:08 1041

原创 在 kubernetes 环境下如何优雅扩缩容 Pulsar

背景在整个大环境的降本增效的熏陶下,我们也不得不做好应对方案。根据对线上流量、存储以及系统资源的占用,发现我们的 Pulsar 集群有许多的冗余,所以考虑进行缩容从而减少资源浪费,最终也能省一些费用。不过在缩容之前很有必要先聊聊扩容,Pulsar 一开始就是存算分离的架构(更多关于 Pulsar 架构的内容本文不做过多介绍,感兴趣的可以自行搜索),天然就非常适合 kubernetes 环境,也可以...

2024-03-29 12:00:16 982

原创 顶级开源社区都能吵起来?

起因因为订阅了 Pulsar 的开发者邮件,前段时间看到一封标题为《(Apache committer criteria) [ANNOUNCE] New Committer: Asaf Mesika》的邮件。乍一看以为是欢迎 Asaf Mesika 成为 Committer,但仔细一看不太对劲,这内容也太多了,以往的欢迎都是简单的 Congratulations! 作为回复,这篇内容明显有点多了,...

2024-03-22 08:08:38 831

转载 最迟但到的 Star History 2023 年度开源精选!

千呼万唤始出来,Star History 2023 年终开源精选来啦!????AI 是 2023 开源领域里最主要的关键词,但其实过去一年还是有很多其他值得关注的项目和发展趋势的!Star History 小编总结了几个类别并精选了类别中最亮眼的项目,包括:人工智能数据库开发工具前端安全Web3人工智能 - LangChainLangChain (https://github.com/langchain...

2024-03-12 08:02:04 42

转载 技术探究 | Flipkart 带来 Apache Pulsar 集群调优指南

本文翻译自 Flipkart 博客《Tuning Apache Pulsar Cluster》,讲述 Flipkart 如何调优 Apache Pulsar 集群的性能,并给出了详尽的调优指南。作者:Anshul Singh,译者:傅腾注:为了行为顺畅,有部分调整。翻译不易,有任何问题,都可以小窗公众号私信,或者直接联系 Pulsar Bot :)这是一篇对 Apache Pulsar 集群...

2024-03-05 12:00:14 88

原创 技术阅读周刊第十四期:常用的 Git 配置

技术阅读周刊,每周更新。历史更新20231122:第十一期20231129:第十二期20240105:第十三期:一些提高生产力的终端命令20240112:第十四期:Golang 作者 Rob Pike 在 GopherConAU 上的分享How I write HTTP services in Go after 13 years使用NewServer函数构建服务实例,利用依赖注入方式将所有的依赖参...

2024-03-01 08:00:41 1691

空空如也

空空如也

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

TA关注的人

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