技术年货|打开你就会说:牛逼,滚去收藏夹里面吃灰吧!!!
你好呀,我是歪歪。
今天是大年初一,祝大家新年快乐。给你分享一个我整理的一份技术年货吧。
每年各大机构公众号都会分享自己的一年最佳文章,我今年整理了一下我关注的部分我觉得很不错的机构技术号的文章,我觉得够学习很长一段时间了。
非常适合较为碎片化的学习,而且有大公司背书,总是不会太差的,可以自己看一下,查漏补缺。
这其实也是我自己的一个学习小窍门,分享给你了,就当是新年礼物。
包括以下机构号(排名不分先后):
美团技术团队 阿里巴巴中间件 vivo互联网技术 阿里巴巴云原生 有赞技术 Qunar技术沙龙 阿里技术
文章很多,全是考点,收藏起来,学就完事了。
美团技术团队
操作日志几乎存在于每个系统中,而这些系统都有记录操作日志的一套API。操作日志和系统日志不一样,操作日志必须要做到简单易懂。所以如何让操作日志不跟业务逻辑耦合,如何让操作日志的内容易于理解,如何让操作日志的接入更加简单?上面这些都是本文要回答的问题。本文主要围绕着如何「优雅」地记录操作日志展开描述。
本文主要介绍一种通用的实时数仓构建的方法与实践。实时数仓以端到端低延迟、SQL标准化、快速响应变化、数据统一为目标。美团外卖数据智能组总结的最佳实践是:一个通用的实时生产平台跟一个通用交互式实时分析引擎相互配合,同时满足实时和准实时业务场景。两者合理分工,互相补充,形成易开发、易维护且效率高的流水线,兼顾开发效率与生产成本,以较好的投入产出比满足业务的多样性需求。
数据已成为很多公司的核心资产,而在数据开发的过程中会引入各种质量、效率、安全等方面的问题,而数据治理就是要不断消除引入的这些问题,保障数据准确、全面和完整,为业务创造价值,同时严格管理数据的权限,避免数据泄露带来的业务风险。数据治理是数字时代很多公司一项非常重要的核心能力,本文介绍了美团酒旅平台在数据治理方面的实践。
Spock是国外一款优秀的测试框架,基于BDD(行为驱动开发)思想实现,功能非常强大。Spock结合Groovy动态语言的特点,提供了各种标签,并采用简单、通用、结构化的描述语言,让编写测试代码更加简洁、高效。目前,美团优选物流绝大部分后端服务已经采用了Spock作为测试框架,在开发效率、可读性和维护性方面均取得了不错的收益。
Kafka在美团数据平台承担着统一的数据缓存和分发的角色,针对因PageCache互相污染,进而引发PageCache竞争导致实时作业被延迟作业影响的痛点,美团基于SSD自研了Kafka的应用层缓存架构。本文主要介绍了该架构的设计与实现,主要包括方案选型,与其他备选方案的比较以及方案的核心思考点等,最后介绍该方案与其他备选方案的性能对比。
OCTO 2.0是美团下一代分布式服务治理系统,它基于美团现有服务治理系统OCTO 1.0与Service Mesh通信基础设施层的结合,是命名服务、配置管理、性能监控、限流鉴权等服务治理功能的全新演进版本。本文主要讲述OCTO 2.0的重要功能及实现思路。
图数据结构,能够更好地表征现实世界。美团业务相对较复杂,存在比较多的图数据存储及多跳查询需求,亟需一种组件来对千亿量级图数据进行管理,海量图数据的高效存储和查询是图数据库研究的核心课题。本文介绍了美团在图数据库选型及平台建设方面的一些工作。
另外,获取可以在美团公众号的后台获取历年公众号的技术文章汇总。
当然了,我也收集了一份,你也可以在我的公众号的后台回复关键字【java】,领取相关 PDF 一份,真的是非常不错的学习资料。
阿里巴巴中间件
《Apache Dubbo 3.0.0 正式发布 - 全面拥抱云原生》
在如今的大背景下,Apache Dubbo 3 选择全面拥抱云原生,将 Dubbo 的架构升级,提出了全新的服务发现模型、下一代 RPC 协议和云原生基础设施适配等优化方案。
面向饿了么上千研发人员,EMonitor 提供精准的报警服务和多样化的触达手段,同时运行约 2 万的报警规则。本文就细数饿了么可观测性的建设历程,回顾下“饿了么可观测性建设的那些年”。
继 Nacos 1.0 发布以来,Nacos 迅速被成千上万家企业采用,并构建起强大的生态。但是随着用户深入使用,逐渐暴露一些性能问题,因此我们启动了 Nacos 2.0 的隔代产品设计,时隔半年我们终于将其全部实现,实测性能提升 10 倍,相信能满足所有用户的性能需求。
在做微服务的路上,拆分服务是个很热的话题。我们应该按照什么原则将现有的业务进行拆分?是否拆分得越细就越好?
架构师需要什么样的能力?我参考了外面一些同学的分享,总结出来其实就是发现问题、分析定义问题、解决问题。遇山开道、遇水架桥,这讲的是决心。很多时候问题确实很难解决,也需要协调更多的人。
在阿里淘宝 双11 的过程中,长期以来都是在生产环节做全链路压测的,通过实践我们发现在生产环境中做压测,实际上会和一个 IT 组织的结构、成熟度、流程等紧密相关,所以我们把全链路压测从简单的制作范围内脱离出来,变成整个业务连续性的方案。
对于我本人而言,每当我对抽象有进一步的理解和认知,我都能切身感受到它给我在编码和设计上带来的质的变化。同时,感慨之前对抽象的理解为什么如此肤浅。如果时间可以倒流的话,我希望我在我职业生涯的早期,就能充分意识到抽象的重要性,能多花时间认真的研究它,深刻的理解它,这样应该可以少走很多弯路。
认清每个人自己在日常工作中的思维定式非常重要,有助于转变自己对很多事情的认知,而这种转变也会从根本上带来行为上的变化。也就是说,可以通过理论分析和实践,来共同完成对个人实际生活的影响。
每年各个部门都要进行规划,规划能让目标更聚焦,让我们清晰地知道今后我们要做什么、如何去做。并非每个人都会参与规划中去,但需要掌握规划的方法,否则让你来做规划时,你会发现很痛苦,找不到什么头绪,要么规划出来的内容都是散点,要么规划出来的太抽象。
技术一号位不是岗位,更多的是技术人员在公司中做事的一种心态,这个系列的文章适合所有想要对日常工作“知其然更知其所以然”的技术人,借助理论工具的指引,结合自己的实践经历,悟到自己的收获,从而加速成长的过程。大道理千千万万,有缘者得之真谛践于其行而非流于其表。
vivo互联网技术
随着公司业务发展和用户规模的增多,很多项目都在打造自己的评论功能,而评论的业务形态基本类似。当时各项目都是各自设计实现,存在较多重复的工作量;并且不同业务之间数据存在孤岛,很难产生联系。因此我们决定打造一款公司级的评论业务中台,为各业务方提供评论业务的快速接入能力。本文主要讲述 vivo 评论中台在数据库设计上的技术探索和实践。
本文主要分析Dubbo中对 SPI机制实现方式及相关原理,以核心类ExtensionLoader的源码解读来将实现细节进行分析,并对各使用场景使用扩展类的流程细节进行展示和总结。
《设计模式如何提升 vivo 营销自动化业务扩展性 | 引擎篇01》
营销业务本身极具复杂多变性,特别是伴随着数字化营销蓬勃发展的趋势,在市场的不同时期、公司发展的不同阶段、面向不同的用户群体以及持续效果波动迭代,都会产生不同的营销策略决策。本文详细解析设计模式和相关应用如何帮助营销自动化业务提升系统扩展性,以及实践过程中的思考和总结。
MGR(全称 MySQL Group Replication 【MySQL 组复制】)是Oracle MySQL于2016年12月发布MySQL 5.7.17推出的一个全新高可用和高扩展的解决方案。本文主要介绍MySQL Group Replication(组复制)技术的基本原理和技术演进史以及安装体验新特性。
WebFlux 是一个异步非阻塞式的web框架 。内部以Reactor库为基础,可以在不扩充硬件资源的前提下提高系统吞吐量。适用于IO密集型的服务。
推荐系统等面向用户的后端服务通常需要多级缓存方案,通过本地-分布式缓存-数据库方式进行缓存加速。而 Caffeine Cache 正是基于 JAVA8 的高性能本地缓存组件,因其更有效的淘汰算法和良好的易用性,已被 Spring Boot 2.0 后续版本集成并替代了 Google Guava Cache。本文从最常用的 get 方法入口,结合源代码,细数作者使用 Caffeine Cache 过程中遇到的各种坑和思考,作为闭坑指南分享给各位看官。
Jedis 是业界常用的 Redis JAVA 客户端。而 Lettuce 是一款基于 Netty 实现的异步客户端,不但逐步覆盖了 Jedis 的各种功能,还在可靠性、易用性、可扩展性、可维护性等方面都有长足发展。笔者因项目需要,在一些场景下切换成 Lettuce 进行开发,并且希望能类似 Jedis pipeline 一样提升批量查询的性能。在对 Lettuce 进行了学习和踩坑后,笔者将过程中遇到的各种关键点总结成文章分享给大家。
JVM调优是系统性能优化的重要手段之一,也是最为后端工程师津津乐道的技术沉淀之一,网络上已经有非常丰富的资料,不过大都偏向于理论,且没有一步一步落地的细节。本文着重于实践,一步一步介绍线上某核心服务的JVM调优落地过程,希望能给读者提供JVM调优的思路和可参考、可落地的方案。
分布式一致性 (distributed consensus) 是分布式系统中最基本的问题,用来保证一个分布式系统的可靠性以及容错能力。Raft 出现之前,Paxos 一直是分布式一致性算法的标准。Paxos 难以理解,更难以实现。Raft 的设计目标是简化 Paxos,使得算法既容易理解,也容易实现。
Netty是一款高性能网络IO框架,本文结合线上长连接真实案例,深入讲述Netty的流量控制原理以及问题解决的思路和步骤。
阿里巴巴云原生
《阿里云容器服务全面升级为 ACK Anywhere,让云的边界拓展至企业需要的每个场景》
9月底,在上海阿里云计算峰会上,阿里云发布 ACK Anywhere,打造“计算无界、承载无限”的新一代容器平台,将公共云能力向本地化进一步延伸,客户在自建的数据中心内也能体验到低成本、低延迟、本地化的公共云产品。同时发布三款新产品:ACK发行版、ACK 敏捷版、ACK ONE分布式云容器平台,让云无处不在。
未来世界上的每家企业,都将成为数字化的软件企业。数字化转型或许没有统一路径,但经实践验证,云原生是企业实现数字创新的最短路径。阿里云云原生致力于为企业提供五大核心价值:资源弹性、系统稳定、应用敏捷、业务智能、可信安全,让企业放心用云,用好云。
KubeVela v1.0 的发布是我们基于 OAM 模型以及云原生应用交付使用场景最大化验证的结果,它不仅代表了稳定的API,还代表了成熟的使用范式。然而这不代表结束,而是一个全新的开始,它开启了一个“可编程式”应用平台的未来,这是一个能够充分释放云原生潜力、让最终用户和软件交付方从第一天开始就充分享受云原生技术魅力的有效路径。我们期待这个项目能达成它最朴素的愿景:Make shipping applications more enjoyable!
《成本直降50%,下一代网关震撼发布》MSE 云原生网关将流量网关与微服务网关合二为一,提供用户丰富的认证鉴权能力,同时可直连后端服务,打通 Nacos/Eureka/K8s 多种服务来源,并且率先支持 Apache Dubbo3.0 协议,其技术积淀已久,已历经 2020 双 11 考验,每秒承载数 10 万笔请求。总的来说,MSE 云原生网关拥有更经济、更安全、更统一、更稳定的产品优势!
sealer是阿里巴巴开源的集群镜像的一个实现方式通过把整个集群打包,实现了分布式软件的 Build Share Run!!!希望未来 sealer 可以以极其简单的方式让用户自定义集群,解决分布式软件制作者与使用者的协作问题。提供极其简单友好的 User Interface,能屏蔽和兼容各种底层技术细节,到处运行。同时进行生态建设,使官方仓库里涵盖常用的分布式软件。
基于云原生架构,企业可以最大化使用云的能力,聚焦于自身业务发展,开发者也可以基于云原生的技术和产品,提升开发效率,将精力更多地聚焦于业务逻辑的实现。可以看出,以容器为代表的云原生技术正在成为释放云价值的最短路径。
云原生架构本质上也是一种软件架构,最大的特点是在云环境下运行,也算是微服务的一种延伸。
《阿里云消息队列 RocketMQ 5.0 全新升级:消息、事件、流融合处理平台》
RocketMQ5.0 将不再局限于消息解耦的基本场景,更是通过统一内核、存储的优势,提供消息、事件、流一体化的处理能力。新版本核心诞生两大新亮点,首先是消息核心场景的扩展和布局,RocketMQ 5.0 不再局限于消息解耦场景,将全新布局事件驱动和消息流式处理场景;其次则是一站式融合处理的技术架构和趋势。
服务框架就像铁路的铁轨一样,是互通的基础,只有解决了服务框架的互通,才有可能完成更高层的业务互通,所以用相同的标准统一,合二为一并共建新一代的服务框架是必然趋势。Dubbo3.0 是 Dubbo2.0 与 HSF 融合而来,是阿里经济体面向内部业务、商业化、开源的唯一标准服务框架。
通过计算资源、内存资源、存储资源、网络资源等全链路的隔离以及毫秒级的自适应调度能力,阿里可以在双十一的流量下进行全时混部,通过智能化的决策与运维能力,支撑着内部百万级的 Pod 混部,不管是 CPU 与 GPU 资源,普通容器与安全容器,包括国产化环境各种异构基础设施,都能实现高效混部,这让阿里核心电商业务生产集群成本下降了 50% 以上,同时让核心业务受到的干扰小于 5%。
有赞技术
ClickHouse 是一款由俄罗斯 Yandex 公司开发的 C++ 开源高性能 OLAP 组件。在 Yandex 内部, ClickHouse 主要用于在线流量分析产品 Yandex Metrica,类似于 Google Analytics 或者百度统计。本文主要介绍了 ClickHouse 的简单原理,有赞 OLAP 相关组件以及 ClickHouse 在有赞的实践之路。
随着实时技术的不断发展和商家实时应用场景的不断丰富,有赞在实时数仓建设方面做了大量的尝试和实践。本文主要分享有赞在建设实时数仓过程中所沉淀的经验,内容包括以下五个部分:建设背景、应用场景、方案设计、项目应用、未来展望。
UI 自动化是质量保障的一种重要手段,我们从分层测试金字塔模型可以看出,质量保障更多的应该依靠底层的单元测试和接口集成测试,UI 自动化测试占比是非常小的一部分,众所周知,UI 层的自动化测试稳定性差,成本高。
然而有赞团队经过一年多的 UI 自动化测试的实践与优化,发现我们 UI 层自动化测试相对性价比是最高的,脚本的稳定性也非常好,误报率降到了 1% 左右,每次上线前能帮助我们回归系统的一些核心业务流程,本文将跟大家分享一些关于有赞 UI 自动化测试的实践经验。
本文是根据有赞中间件团队多年的TCP网络编程实践经验总结而来,目的是为了避免应用因各种网络异常而出现各种非预期行为,从而造成非预期的影响,影响系统稳定性与可靠性。本文不会涉及TCP的各个基础知识点,主要是总结一些TCP网络编程实践中可能碰到的一些问题,以及相应的经过实践验证的解决方案等。虽然本文很多细节主要是针对于Linux系统,不过,大部分建议适合于所有系统。
低代码开发平台已经成为现在很多企业开发管理应用程序的重要工具,低代码平台的出现帮助企业降低了软件开发的成本,提高了软件开发的效率,越来越多的公司开始开发低代码平台,甚至基于低代码平台开始商业化,比如微软的Power Platform,Salesforce的Lightning,阿里的星环等,我在这里介绍一下有赞的低代码开发平台-BOS。
随着应用不断迭代更新,目前端上的线程池设计已经无法满足需求,包括不限于网络请求、本地db操作、业务轮询等任务容易导致线程队列堆积,最终造成“操作卡顿”现象。本文章通过线程分离、轮询统一、线程监控等手段解决了大部分线程阻塞难题。
最近越来越多的人问到:“现有有赞测试团队是什么样子?” 很高兴听到这个问题,这说明大家在择业过程中越来越关心技术氛围和成长空间,能够更加理性、全面、长远的去做好自己的职业规划。同时也感谢大家能关注和选择我们,本文将会介绍有赞的测试开发团队,以及在工作过程中我们是如何做到精益求精,不断实现自我提升和团队发展的。
权限管理是一个几乎所有大中型 B 端系统都会涉及的重要组成部分,其目的是对整个系统进行权限控制,避免造成误操作及数据泄露等风险问题。在充分调研了商家的经营需求后,传统的老板、店长、收银员等角色不足以覆盖商家角色场景。因此,在原有权限系统的基础上,增加了商家自主定义员工权限的能力,满足其细粒度管控员工权限的诉求。任何一家使用有赞开店软件经营店铺的商家,不仅能给员工赋予默认的角色,也可以实时给员工开放特定的权限、修改权限,以此保障店铺运营的安全、健康。本文将介绍有赞移动权限系统的演进过程。
有赞搜索中台的前身是ES中间件,并没有一个中台的概念,相应的就会有一个问题,业务接入搜索场景的时候还需要为此投入开发资源同步搜索设计,一个需求上线往往耗时很久,重复性工作较多,所以就有了后来的搜索中台的成立,将搜索完整链路的复杂性折叠成一个简单完整的搜索产品,让业务方直击搜索需求,无需费心搜索实现;在此前提下,如何针对搜索中台进行一个从0到1的完整的质量保障也是一个挑战,且中台面临的问题可能跟传统业务面临的不大一样,保障手段也需要更多样化。本文主要介绍有赞搜索质量保障体系从0到1的搭建过程及中间遇到的痛点解决方案。
在快速迭代的业务需求下,难免会出现一些线上 bug ,特别是在 SaaS 业务领域,线上 bug 对于商家来说大概率会影响经营,严重的话很可能引发故障。所以,我们对线上质量要求很高。针对线上 bug ,除了商家主动上报问题,后端还有自己的天网监控体系,进行主动发现问题,那移动端如何进行主动防控呢?所以我们也需要自己的主动防控平台。为什么不可以直接使用后端的天网系统?本文将为你解答。
Qunar技术沙龙
去哪儿网国内机票售后为用户提供退票、改签、航班变动、行程服务、疫情政策等服务的业务。为解决复杂查询场景,我们设计了一套将数据从一个数据源聚合导入到另一个数据源,提供同构或者异构、低延时的、最终一致性的数据同步系统。
国内报价搜索是国内主流程业务,相应时间的长短直接影响到用户体验。本文主要从业务/系统结构出发,聊一下国内报价时间优化上的探索和实践。
本篇文章从自旋锁出发,详细介绍了 CLH 锁及 AQS 对 CLH 的改造。
本文将从线程阻塞的原理,中断优化,网卡处理数据过程出发,深入的介绍 epoll 背后的原理,最后还会 diss 一些流行的观点。相信无论你是否已经熟悉 epoll,本文都会对你有价值。
DBA 从业十年经验分享,希望对业内人员有一定的启发。
一文理论结合实践全面讲解了 ES 的索引设计。
本文主要从安全通告监控、Jar 资产收集和 Jar 升级实践工作编排等方面,向大家介绍 Qunar 安全组在在 Jar 组件自动化风险监测和升级方面的探索和实践。
用量化的思维解决慢查询。
发挥 DBA 的优势,让数据库监控更加精准灵活和智能。
阿里技术
我是一名很普通的技术工程师,从14年毕业到现在工作了7年。一路走过来,觉得自己很幸运遇到了很多伯乐,教会了我很多道理和职场经验。最近几年作为面试官也面试了很多同学,经常和很多候选人沟通分享一些自己学习成长的路径,也经常和很多新入职的同学口头分享一些工作心得。现在把这些的经验总结了一下,如果能对看到文章的同学有所启发及帮助最好。
作为一个技术TL(Team Leader),除了自身技能,还会面临诸多团队管理上的困难和挑战。如何定义和明确团队的目标?怎样建立优秀的工程文化?让团队长期发挥战斗力和创新能力的核心是什么?本文作者基于四年的团队管理经验,分享他在招聘、目标管理、团队沟通和工程文化等方面的思考与总结,介绍相关的经验方法,并推荐几本关于体验、思考的书籍。希望对同学们有所启发。
今年3月,世界经济论坛公布了2021年度最具潜力的112位全球青年领袖(Young Global Leaders)。来自蚂蚁集团的可信原生技术部负责人何征宇入选了该名单,成为中国互联网工业界代表之一。
本文采用“高可用是什么,为什么要高可用,怎么做高可用,为什么这么做,软件风险又在哪里”的逻辑来介绍。
工作中经常遇到这样的场景,老板交给了你一件事,这件事是一件横向的,需要其他人参与,时间跨度可能会比较长的。遇到这样的事,很多人上来就埋头苦干,浑浑噩噩到最后都不知道自己在做什么,尤其作为一个一线的小兵,不带人,这个时候,你需要一些成事的方法来加持。
debug不一定是最高效的方法,遇到线上问题不能debug了怎么办。本文介绍如何使用Arthas代替debug提高日常开发效率。
本文主要阐述在分库分表改造过程中需要考虑的因素以及对应的解法,还有踩过的那些坑。
荒腔走板
今年回家祭祖的时候,我少带了一点香蜡纸钱,等我反应回来的时候已经在回老家的路上了。
所以我决定到老家之后在老家的小店里面去买。
我的老家在比较偏远的小村庄里面,我记忆中整条街上只有一个小卖部,里面应该会卖一点香蜡纸。
到了老家之后,我先直奔去小卖部准备再买点祭祖需要用到的东西。
走进小卖部之后,发现整个小卖部和我小时候记忆中的格局一模一样,基本没有发生变化,就连老板娘都是我印象中的那位,这么多年变化并不是特别的大,只是有点垂垂老矣。
里面售卖的货物和顾客一样,一如既往的少的可怜,但是好在还有我需要购买的东西。
等我选好物品准备付钱的时候,我问她一共多少钱。
她说:25元。
我说:请问在哪儿扫二维码付钱呢?
她回答说:孩子,我不会用那个东西,我这里只能收现金。
而我根本不用去身上摸,我知道我根本就没有现金。于是我非常尴尬的把提在手上的东西放下,说:不好意思,我也没有现金,等我先去亲戚家换一点现金。
经营小卖部的老婆婆听了后,问了我一句:你是哪家的儿子呀?
我当时一愣,不知道为什么突然出现了这个问题,但是我还是如实回答了。
当我提出爸爸的名字的时候她也还是比较诧异,于是追问了一下:你爷爷是谁呢?
我说:我是 xxx 的孙子。
老婆婆说:哦,原来是他的孙子呀,都长这么大了,没事,你先把东西拿走吧,后面来给钱就行。
由于我比较赶时间,说过谢谢并表示一定会把钱送过来的时候,我就拿着东西先去祭祖了。
我这次祭祖,其实主要就是回来祭奠爷爷的,我爷爷去世已经近 20 年时间了。
老婆婆叫我把东西提走的那一刻我还是非常感慨的,虽然我知道她和我爷爷属于是一辈人,她在小卖部干了这么多年远亲近邻的都认识,她也知道我爷爷的名字,她一点也不认识我,但是她知道这个钱最后一定会给到她的手上,这背后是我很少能体会到的乡情。
而这份乡情会随着时间的推移,老一辈人的离去,越来越淡。
但是这就是真正的:中国人不骗中国人。
最后说一句(求关注)
最后,我自己也整理了一个自己的年度文章,有兴趣的可以点开看看:盘点了一下我的年度文章TOP10,快来看看有没有你错过的~
好了,看到了这里了,转发、在看、点赞随便安排一个吧,要是你都安排上我也不介意。写文章很累的,需要一点正反馈。
给各位读者朋友们磕一个了:
··································
你好呀,我是歪歪。一个主要敲代码,经常怼文章,偶尔拍视频的成都人。
我没进过一线大厂,没创过业,也没写过书,更不是技术专家,所以也没有什么亮眼的title。
当年以超过二本线 13 分的“优异”成绩顺利进入某二本院校计算机专业,误打误撞,进入了程序员的行列,开始了运气爆棚的程序员之路。
说起程序员之路还是有点意思,可以看看。点击蓝字,查看我的程序员之路