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

原创 gRPC-第二代rpc服务

回归题目,gRPC因为他强大的可扩展性,轻便的底层传输格式,越来越多的企业在技术选型时选择了它,我也希望未来能有一款应用可以通过gRPC发挥出每种语言的优势,绽放出绚丽的色彩。

2024-03-05 18:34:36 1285

原创 运维工作新时代:自主编码实现运维自动化的转型之旅

运维自动化率的定义范围是技术保障部门的所有运维人员。运维自动化率 = 自动化操作次数(通过泰山麒麟) / 手工操作次数(通过堡垒机登录) + 自动化操作次数其中,分子表示通过泰山麒麟进行的自动化操作次数。这些操作可以是自动化运维命令、运维功能或自动化编排任务。分母表示通过堡垒机登录之后进行的手工操作的次数,再加上分子的数量。通过这个指标,可以衡量在给定时间内运维人员使用自动化工具相对于手工操作的比例,从而评估运维的自动化水平。

2024-02-21 11:24:56 1203

原创 分布式场景怎么Join | 京东云技术团队

算法有很多种,这里举例是hash算法),那么这两张表的分片或许可以在同一个物理库中,这样我们不需要做大表维度的处理,我们可以直接下推Join操作到对应的物理库操作即可。在ShardingSphere中,这种场景类似于绑定表的定义,如果两张表的算法相同,可以直接配置绑定表的关系,进行相同算法的连接查询,避免复杂的笛卡尔积。举个例子,有一张非常小的表A,还有一张按照ID分片的表B,我们可以在每一个物理库中复制一份表A,这样我们的Join操作就可以直接下推到每一个数据库操作了。这种现象称为数据倾斜。

2024-02-20 16:32:36 1153

原创 spark为什么比mapreduce快?

因为mapreduce计算模型只能包含一个map和一个reduce,所以reduce完后必须进行落盘,而DAG可以连续shuffle的,也就是说一个DAG可以完成好几个mapreduce,所以dag只需要在最后一个shuffle落盘,就比mapreduce少了,总shuffle次数越多,减少的落盘次数就越多。

2024-02-20 16:03:48 2185

原创 当平台工程遇上DevEx:打造卓越的开发者体验

根据 StackOverflow 的调查,约有 62% 的受访者每天花费超过 30 分钟的时间在搜索答案和解决问题上,而 25% 的人甚至花费超过 1 小时。此外,根据 CNCF 云原生的 Landscape 展示,目前已有 2000+ 张卡片,覆盖了各个维度的能力,但这也导致了开发人员认知负担的日益加重。在公司内部,我们目前拥有行云、泰山等各种开发者工具。然而,这些工具对于开发者在反馈周期、认知负荷、专注状态方面仍然有很大的提升空间。

2024-02-20 15:31:06 1004

原创 营销系统黑名单优化:位图的应用解析 | 京东云技术团队

位图的基本思想是使用bit来标记一个数值,1表示该数值存在,0表示不存在。由于以位为单位存储数据,因此可以大大节省存储空间。通过这种方式,可以非常高效地表示和操作数值集合。举个直观的例子,有40亿个不重复的随机自然数,如果使用long型数值存储,一个long型数值8个字节,40亿个数值占用约29.8GB,但如果是存储为40亿个bit,则只需要约0.47GB。在Java中一个long型数值占64位,可以用一个long型数组存储位图,其中nBits表示位图的初始大小。对于给定任意自然数xx / 64。

2024-02-19 15:14:54 1087

原创 扯淡的DevOps,我们开发根本不想做运维!

平台工程是设计和构建工具链和工作流的学科,可在云原生时代为软件工程组织提供自助服务功能。平台工程师提供的集成产品通常被称为“内部开发人员平台”,涵盖了应用程序整个生命周期的运营需求。--定义来自 platformengineering.org (关于平台工程的定义较多,但大部分意思较一致:主要是倡导自助服务减少底层基础支撑工具的复杂性和不确定性,减化工作流程,减少最终用户在使用过程中的认知成本,从而改善了最终用户的体验,和提高生产效率)

2024-02-19 10:14:50 1113

原创 哎呀,当时怎么没有想到 | 京东云技术团队

在我们的测试工作中,是不是经常遇到这样的情形,发生了线上问题,产品、研发或者测试同学一拍脑袋:当时怎么没有想到,怎么给漏掉了呢?明明是一个非常简单的事情,用大拇指都能想到的验证场景,为何当时就漏测了呢?但实际情况是,逃逸到线上的缺陷,疑难杂症式的极端异常的问题很少,大部分都不复杂且可以在设计和开发中规避,或者在测试过程中被识别出来。针对此类问题,从测试覆盖度的角度,本文试图解释一下为何会发生这样的事情,以及如何有效规避。

2024-02-18 14:33:26 1101

原创 Spring事务实现原理

先从配置文件开始入手,找到处理annotation-driven标签的类TxNamespaceHandler。TxNamespaceHandler实现了NamespaceHandler接口,定义了如何解析和处理自定义XML标签。@OverrideAnnotationDrivenBeanDefinitionParser里的parse()方法,对XML标签annotation-driven进行解析。

2024-02-18 11:15:10 1326

原创 糟糕,被SimpleDateFormat坑到啦!| 京东云技术团队

以上就是针对本次问题排查的主要思路及流程,刚开始的排查思路也一直局限于规则引擎的线程不安全或者是传入的env(由于使用的是HashMap)线程不安全,还是受到组内大佬的启发和帮助才进一步去分析类可能会存在线程不安全。本次问题排查确实提供一个经验打破常规思路,比如类看起来只是对日期进行格式化,很难和在并发场景下线程不安全会导致数据错乱关联起来。作者:京东科技 宋慧超来源:京东云开发者社区 转载请注明来源。

2024-02-18 10:20:45 1278

原创 代码手术刀-自定义你的代码重构工具

JavaParser 是一个开源的 Java 源代码分析工具,它提供了一系列简单的API来解析、修改和生成Java 代码。举个例子,我们可以使用javaparser轻松的实现下面几个操作:1.分析代码中的类、方法、字段等元素,提取类的继承关系、方法的参数和返回类型等。2.更改源码,例如重命名方法、修改方法体、添加或删除代码行等。3.可以使用它来生成代码片段,例如创建新的类、方法或字段,或者生成代码文档。在上一章节里就用到了数据提取,源码替换功能。

2024-02-06 11:26:07 1133

原创 亿级流量高并发春晚互动前端技术揭秘

2022年央视春晚互动项目是一次大规模、高并发的挑战,前端团队通过静态资源优化、缓存、容错和工程化等方面的努力和创新,确保了系统的稳定性和性能,为用户提供了一个稳定流畅的互动体验。在静态资源优化方面,团队通过首屏资源拆分、帧动画方案替代3D模型、动态雪碧图和WebP格式优化等技术手段,显著降低了资源消耗和请求次数。在降低服务器成本及风险方面,选择作为非常规优化方案,提升用户体验。在容错方面,流量削峰和降级处理,确保系统稳定运行。在工程化方面,统一处理通用解决方案、提供拟真的MOCK。

2024-02-06 11:08:06 1132

原创 打开java语言世界通往字节码世界的大门——ASM字节码操作类库

ASM是一个通用的Java字节码操作和分析框架。它可以用于修改现有类或直接以二进制形式动态生成类。ASM提供了一些常见的字节码转换和分析算法,可以从中构建定制的复杂转换和代码分析工具。ASM提供了与其他Java字节码框架类似的功能,但侧重于性能。由于它的设计和实现尽可能小和快,因此非常适合在动态系统中使用(但当然也可以以静态方式使用,例如在编译器中)。一个.java文件经过Java编译器(javac)编译之后会生成一个.class文件。在.class文件中,存储的是字节码(ByteCode)数据。

2024-02-05 17:00:21 1252

原创 大文件上传原理及实现方案 | 京东物流技术团队

如果调用了mkfile接口,则磁盘上的切片内容就可以清除掉了,如果客户端一直不调用mkfile的接口,放任这些切片一直保存在磁盘显然是不可靠的,一般情况下,切片上传都有一段时间的有效期,超过该有效期,就会被清除掉。上传暂停的实现也比较简单,通过xhr.abort可以取消当前未完成上传切片的上传,实现上传暂停的效果,恢复上传就跟断点续传类似,先获取已上传的切片列表,然后重新发送未上传的切片。

2024-02-05 13:53:03 1140

原创 这篇深入浅出贴 助你早日实现Stable diffusion自由

我也不想标题党,可它们就是好萌啊!看看下面这些你认识多少?我是憨憨,一个不会画画的设计师。过去半年里,AI绘画曾经多次引爆公众讨论,网络上那些精致的二次元同人插画、堪比真人的AI穿搭博主、打破次元壁的赛博Coser……背后都有一个“幕后黑手” —— Stable Diffusion,其背后的技术便是人们常说的扩散模型(扩散模型这个概念源自热力学,在图像生成问题中得以应用)。想知道上面这些精致的插画是如何实现的吗?

2024-02-05 11:21:45 1273 1

原创 IT工单治理野史:由每周最高150+治理到20+ | 京东物流技术团队

基于此种治理效果,基本上算是比较满意了(心里美滋滋),然而周而复始的值班进行在线解答与事后分析盘点,其实还是能看到咨询类的问题占比较多,纵横对比发现此时的咨询类问题提出人的所属部门很零散(销售、客服、运营、解决部、仓等等),问的问题也是“千奇百怪”,算是上述方案中的一些盲点区域了。目前处于试用阶段,正在尝试推行,在系统上进行挂靠,同时在值班过程中也在推行,目前经过部分使用者的反馈看是有些效果,但是在单量上还未有所体现,可以随着推行时间的延长来看具体的效果,让我们拭目以待吧,效果图和使用记录如下所示。

2024-02-05 10:58:44 1146

原创 安卓动态链接库文件体积优化探索实践

编译选项 | 体积 || strip + opt-level = ‘z’ + lto + panic = ‘abort’ + 代码裁减 + panic_immediate_abort | 135k || strip + opt-level = ‘z’ + lto + panic = ‘abort’ + 代码裁减 + panic_immediate_abort + 移除section | 95k |

2024-02-05 10:02:33 1584

原创 本地缓存Ehcache的应用实践 | 京东云技术团队

java本地缓存包含多个框架,其中常用的包括:Caffeine、Guava Cache和Ehcache, 其中Caffeine号称本地缓存之王,也是近年来被众多程序员推崇的缓存框架,同时也是SpringBoot内置的本地缓存实现。Ehcache的分布式实现并不可靠,核心还是采用广播集群方式,实现数据的同步及更新,并且性能受机器IO,磁盘,网络等影响,在实际应用情况下,不会比redis更好。**空闲时间:**缓存映射将在上次访问后的固定持续时间后过期;**生存周期:**缓存映射将在创建后的固定时间后过期;

2024-02-04 10:58:03 1266

原创 财务数据处理问题及解决方案分享

系统汇总核心是依靠MySQL物理机在每库每表通过group by进行,汇总是按费用类型分而治之,每种类型汇总维度不一样,每次如有新的汇总维度引入,需从前到后,写一遍新的汇总逻辑,主要是锁定新维度的数据范围,确定新的group by 字段,之前逻辑还得回归测试,很蠢是吧,我也觉得。汇总后的数据和通过原技术实现汇总出来的数据能保持一样的结果,同时还能填充一些公共的字段。如下图,其中绿色的2行源数据,按ou汇总在结果表中变成1行;橙色的3行源数据按dept汇总在结果表中变成2行;

2024-02-04 10:30:33 1202

原创 大促削峰实战:评价QPS降低85%的背后逻辑

京东APP商品详情页展示的评价数据通过单独请求评价接口获取,与商详模块流量近乎1:1,需要共同应对秒杀等海量流量的冲击,存在突发流量风险。经过对用户操作行为和评价埋点信息分析,评价调用与商详流量解耦可行,预期收益显著。为此,评价与商详模块研发人员组成虚拟攻坚小组,推进解耦方案实施。如图所示,商品详情页面中的评价、种草秀、问答等楼层的数据都是由评价独立接口提供。随着商品详情页面的内容日益丰富,评价楼层通常不会在第一屏展示。因此,当用户首次进入商详页面且没有进行任何交互时,评价数据基本不会得到曝光。

2024-02-04 09:45:49 976

原创 京东广告算法架构体系建设--大规模稀疏场景高性能训练方案演变

京东广告训练框架随着广告算法业务发展的特点也在快速迭代升级,回顾近几年大致经历了两次大版本的方案架构演变。第一阶段,随着2016年Tensorflow训练框架的开源,业界开始基于Tensorflow开源框架训练更复杂的模型。模型对特征规模和参数规模需求不断提升,大规模稀疏模型具有更强的表征能力,逐渐成为算法的主流趋势。但是Tensorflow在大规模稀疏参数的训练机制不完备,因此第一次最大能力升级是通过自研高性能参数服务器,支持超大规模TB级稀疏参数模型的建模能力以及基于此架构支持在线学习的能力。

2024-02-02 11:23:48 1281

原创 Apache Doris 整合 FLINK CDC + Iceberg 构建实时湖仓一体的联邦查询

自此我们完整从搭建Hadoop,hive、flink 、Mysql、Doris 及Doris On Iceberg的使用全部介绍完了,Doris朝着数据仓库和数据融合的架构演进,支持湖仓一体的联邦查询,给我们的开发带来更多的便利,更高效的开发,省去了很多数据同步的繁琐工作。上述Doris On Iceberg我们只演示了Iceberg单表的查询,你还可以联合Doris的表,或者其他的ODBC外表,Hive外表,ES外表等进行联合查询分析,通过Doris对外提供统一的查询分析入口。

2024-02-02 10:36:56 2435

原创 关于「日志采样」的一些思考及实践

必须承认,使用这种方式实现是有一定优势的,但是奈何现在各团队都有自己独特功能的线程池包装类,并已经在业务系统中广泛使用,如果此时再增加一个处理 ‘日志采样’ 的包装,会出现嵌套包装的情况,这样会让程序变得混乱,增加理解成本,由于各包装实现之间缺乏磨合,甚至面临不可控的风险,这样做甚至有 ‘添乱’ 的嫌疑,我认为至少在当前的环境下是不可取的。除上述外,应该还有其他的办法,比如 AOP 机制,但是 AOP 只能到最低方法粒度,对于存量系统来说,改造量还是偏大,如果是新系统开发,可以考虑。

2024-02-02 10:13:03 489

原创 聊聊ClickHouse MergeTree引擎的固定/自适应索引粒度

我们在刚开始学习ClickHouse的MergeTree引擎时,就会发现建表语句的末尾总会有这句话(其实不写也可以),表示索引粒度为8192。在每个data part中,索引粒度参数的含义有二:每隔index_granularity行对主键组的数据进行采样,形成稀疏索引,并存储在primary.idx文件中;每隔index_granularity行对每一列的压缩数据([column].bin)进行采样,形成数据标记,并存储在[column].mrk文件中。

2024-02-01 13:49:22 1192

原创 JAVA应用CPU跳点自动DUMP工具 | 京东物流技术团队

该脚本是一个用于CPU性能监控的实用工具,通过定时检测并触发线程快照的方式,方便我们快速发现CPU异常占用以及定位问题所在。通过设置合适的阈值和线程数,可以根据具体项目的需求来应用该脚本,并根据日志记录的线程信息进行问题分析和优化。注意:在使用该脚本时,需要根据具体环境配置相关的路径和变量,并根据项目的需要进行相应的调整和优化。希望本文对您理解和运用该脚本提供了一些帮助,如有疑问或需要进一步了解,请随时联系我。

2024-02-01 12:03:36 987

原创 简易异步任务中心&批量导入技术处理方案

至此开发部分结束,任务执行器会自动调度拉取CATE_BATCH_PUBLISH类型的任务 -> 解析到List -> 调用你的run()方法实现落库 -> 将结果流上传到云存储并将结果链接更新到任务表中。步骤一 : 落库任务类型为TaskBizTypeEnum.CATE_BATCH_PUBLISH的记录到任务表中,并记录前台上传的excel导入文件url(常规crud本案例不做封装,自行实现即可)解析规则为一次性解析excel所有记录**,不适用超大excel解析job**

2024-02-01 11:12:09 908

原创 【京东云新品发布月刊】2024年1月产品动态来啦

移动端监控SGM-Mobile专注于监控收集移动端App的真实用户感知体验数据,目前支持Android、iOS两大移动平台的接入, 提供网络请求、应用启动、原生页面、 跨端页面、WebView、崩溃、卡顿、错误、自定义等数据的监控,可追踪用户轨迹,配置智能告警,订阅周报,帮助移动端开发人员实时掌握应用的运行状况。京东莫奈可视化平台通过自由拖拽、图形化编辑、所见即所得的方式,快速实现极致酷炫、直观清晰的视觉场景,将海量繁杂数据背后所蕴含的价值更直观、深层、全面的展现出来,辅助决策者合理决策。

2024-01-31 16:43:31 562

原创 京东广告算法架构体系建设--高性能计算方案最佳实践 | 京东零售广告技术团队

综上,通过设计高性能的计算方案,打造新一代算法架构推理体系,在架构层面通过分布式分图异构方案很好的解决了高算力需求下的资源成本边际效应问题,在高算力推理引擎层面,通过一系列的专项优化,让GPU的算力得到充分的释放,实现复杂算法模型算力的扩展。目前新一代的高性能计算方案已经在广告多个业务线进行了落地实践,推荐首页CTR模型、推荐通用信息CTR模型、推荐商详CTR的规模扩展至千亿,助力推荐、搜索等核心业务取得显著的效果收益。

2024-01-31 16:01:17 1273

原创 streampark+flink一键整库或多表同步mysql到doris实战

streampark+flink一键整库或多表同步mysql到doris实战,此应用一旦推广起来,那么数据实时异构时,不仅可以减少对数据库的查询压力,还可以减少数据同步时的至少50%的成本,还可以减少30%的存储成本;

2024-01-31 11:30:31 1324

原创 数据质量和数据治理的关系 | 京东云技术团队

很多时候,数据质量是数据治理的驱动因素之一,这是数据治理计划的最初重点,因此两者之间可能会混淆。但它们并不相同,它们是同一枚硬币的两面,而不是两枚硬币。作者:京东科技 李然辉来源:京东云开发者社区 转载请注明来源。

2024-01-30 11:49:30 1041

原创 非内积级联学习

外页uctr +0.02%(0.8),引商点击 +0.53%, uctr含内页 +0.14%,外页ucvr+4.93%(0.00),含内页ucvr+4.17%(0.00),外页推荐用户转化率 +4.64%(0.00),含内页推荐用户转化率 +3.67%(0.00)模型训练过程中,随机采样同一个batch中的样本作为负样本[6]可大幅扩充负样本个数。| 扩充负样本+只加曝光未点击 | +20.3% | +30.0% | +12.5% | +16.8% | +18.6% | +18.2% |

2024-01-30 09:28:26 893

原创 复杂SQL治理实践 | 京东物流技术团队

重构的原则具备普适性,但是工具包每个人都有自己用的顺手的一套,没必要完全趋同。另外,上面的技术能不用就不用,好的前置设计胜过事后的十八般武艺。作者:京东物流 崔立群来源:京东云开发者社区 自猿其说 Tech 转载请注明来源。

2024-01-29 11:14:34 1196

原创 给你一颗“定心丸”——记一次由线上事故引发的Log4j2日志异步打印优化分析

经过上文分析,我们可以将Log4j2的异步日志打印优化总结如下:1.在日志可以丢弃的情况下,推荐使用__ 和__的组合配置;2.不要在生产环境使用可以直接与中间件交互的的Appender,如KafkaAppender。

2024-01-29 10:09:30 1044

原创 幻兽帕鲁来啦!京东云召唤你一键开服,快来私服联机

幻兽帕鲁》是一款备受瞩目的开放世界生存建造游戏,近期火爆全网。玩家可以在游戏世界中收集神奇的生物“帕鲁”,并利用它们进行战斗、建造、农耕、工业生产等各种活动。《幻兽帕鲁》官方推荐搭建专有服务器,话不多说直接从0到1搭建起来!•创建主机:在京东云上选择轻量云主机或者云主机,快速创建主机实例,选择Windows 2019或2022镜像并开启端口;•依赖环境安装:根据指引在服务器上安装《幻兽帕鲁》游戏环境,搭建《幻兽帕鲁》的服务器;•登录Steam账号,开始畅玩之旅。

2024-01-26 23:33:24 871

原创 京东广告算法架构体系建设--在线模型系统分布式异构计算演变 | 京东零售广告技术团队

架构上,通过以上服务化、单元化、配置化的升级,实现更高层级的抽象,实现一套架构支持所有算法业务。规范上,实现流量、数据、模型统一标准化。降低算法实验难度,整体迭代周期从周级别提升到天级别,极大提升了算法的迭代效率。第一阶段的在线模型系统升级,将业务开发由无序到有序,架构从散乱到统一,奠定在线模型系统的基础,也为后续的架构发展提供更多可能。

2024-01-26 14:38:24 1336

原创 一种轻量分表方案-MyBatis拦截器分表实践

2.切换到新表的临界点,为了避免丢失积压的老表binlog,需要同时处理新表binlog和老表binlog,这样会出现死循环同步的问题,因为老表需要同步新表,新表又需要双写老表。1月8号就是分表临界点,8号需要切换到第二周的表,但8号0点刚切换的时候,表内没有任何数据,这时如果业务需要查近一周的操作日志是查不到的,这样就会引发线上问题。1.提前上线监听程序,提前把老表数据同步到新的周期表。| 1月1号 ~ 1月7号的数据 | 1月8号 ~ 1月14号的数据 | 1月15号 ~ 1月21号的数据 |

2024-01-26 10:34:41 1056

原创 bean的一生

你曾读spring源码 “不知所云”、“绞尽脑汁”、“不知所措”嘛🤣🤣🤣那这篇文章可能会对你有所帮助,小编尝试用简单、易懂的例子来模拟spring经典代码👉Spring Bean生命周期及扩展点,让你能够****轻松的读懂Spring Bean的生命周期,更加深入的理解Spring。那好,下面小编将从如下几个步骤来介绍✍️✍️✍️1》回顾Spring Bean相关知识点1.1》什么是Bean1.2》什么是 Spring Bean 的生命周期1.3》 Spring Bean 的生命周期的扩展点2》模拟

2024-01-25 11:52:48 951

原创 热更新适配ibatis原理浅析

接下来从代码视角,简单阐述整体流程2.1 应用启动后,加载agent的jar包,首先会初始化插件pluginManager.getInstance().init(),扫描这个包路径下面的@Plugin注解信息,然后注册插件信息,其中就包含springPlugin、ibatisPlugin等插件,插件的方法上会通过@OnResourceFileEvent注解方式,在资源变更后反射调用该方法。

2024-01-25 10:41:57 933

原创 CDP技术系列(三):百万级QPS的人群命中服务接口性能优化指南

CDP系统提供了强大的标签和群体的构建能力,面对海量数据的标签和群体,我们采用了Bitmap+ClickHouse的存储与计算方案。详细内容可以参考之前文章。有了群体之后,它们被广泛的应用到支付,消金,财富,营销等各种核心业务的用户拉新,交易转化,促活等核心链路中。而人群应用方式中,基于人群的命中服务,是非常重要的P0级接口(日常TPS峰值40W+,响应耗时50ms以内,大促备战120W+)它主要用来查询指定用户ID是否包含在指定群体中,这篇文章就来分享人群命中接口的演进迭代过程。

2024-01-24 10:25:27 1147

原创 CDP技术系列(一):使用bitmap存储数十亿用户ID的标签或群体

为了便于理解,首先介绍一下什么是bitmap。它的基本思想是用bit位来唯一标记某个数值,这样可以用它来记录一个数值没有重复的数据元组。并且每一条数据只使用一个bit来标识,能够大大的节省存储空间。比如,我想存储一个数值数组[2,4,6,8]。Java中如果用byte类型来存储,不考虑其他开销,需要4个字节的空间,一个字节8位,也就是4*8=32bit。倘若使用更大的数据类型,存储空间也会相应增大,如使用Integer(4字节),则需要4*4*8=128bit。

2024-01-24 09:33:31 963

空空如也

空空如也

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

TA关注的人

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