百度知道是一个诞生于2005年的产品,知道在过去的17年中作为搜索内容生态天然载体,致力于用问答沉淀知识。百度知道至今共解答了6.5亿问题,其中被集中关注的问题逐渐被优化完善,沉淀为了体系性的知识。与此同时,互联网内容供给也经历了爆发性的增长。在这个00后用户崭露头角的时代,人们对于知识获取的需求也更加注重效率。 在知道18周年之际,我们拓展了【知识笔记】新场域,将沉淀内容升级为知识笔记,通过简单、沉浸式的交互,简化信息获取途径,让用户把注意力集中在深度消费优质内容上。
设计模式是软件开发中的重要经验总结,Gang of Four (GoF) 提出的经典设计模式则被誉为设计模式中的“圣经”。但是设计模式往往是以抽象和理论化的方式呈现,对于初学者或者没有太多实战经验的开发者来说,直接学习设计模式往往会显得枯燥乏味。 市面上或者网上也经常有一些书籍或者文章,尝试以实际的应用场景深入浅出地介绍设计模式。但是这些资料所列举的样例或应用实践,往往都是一些构造的虚拟场景,缺乏生产级软件的真实应用。而软件理论最重要的是学以致用,那是否有真实生产级代码的学习机会呢? iLogtail 作为一款阿里云日志服务(SLS)团队自研的可观测数据采集器,目前已经在 Github 开源,其核心定位是帮助开发者构建统一的数据采集层。iLogtail 在多年的技术演进过程中,也一直在尝试进行各种设计模式的应用,这些设计模式的应用大大提升了软件的质量与可维护性。本文我们将结合 iLogtail 项目,从实践角度探讨一些常见设计模式的技术原理。在这里也要感谢字节跳动多位同学对 iLogtail Golang 部分架构的一些升级优化。
内容架构是 QQ 浏览器搜索的内容接入和计算层,主要负责腾讯域内的内容接入和处理,当前接入了多个合作方的上千类内容。正如前面《如何避免旧代码成包袱?5步教你接手别人的系统》中提到,这是一套包含 93 个小服务的微服务架构。经过 23 年 Q1 的大力治理,让我们稳住阵脚,进一步对老系统做深入的评估: 研发效率较低:新增一类数据需要在 3~4 个服务上做开发,代码量不多,但很繁琐。 系统性能较差:数据流经多个小服务,且服务内部的实现普遍较差。譬如:核心服务的 CPU 最高只能用到 40%、一条消息从进入到流出需要经过 20 多次的反复 JSON 解析、多处存在多余的字符串拷贝和查找... 从架构和代码层面,我们看到系统存在较多的缺陷,同时我们也多次收到业务同学、上层领导对吞吐性能的投诉反馈,譬如:传输 6 亿的文档需要 12 天,太慢了;内容接入周期太长,成了某项目的瓶颈等等。 作为偏后方的基础架构系统,可靠高效是基本要求, 我们决定对系统做彻底的改造,设计简单的系统、写清晰的代码,提升系统性能和研发效率,为搜索业务提供稳定高效服务。
通过 API 发送 UI 是一种改变我们对 UI 思考方式的技术,该技术也被称之为服务器驱动的 UI。与传统的 UI 开发范式相比,这种开发方式更加灵活,也正在影响和改变着传统的 UI 开发方式。 服务器驱动的 UI 不仅仅是一个理论概念;一些科技行业的公司已经开始实施这种方法。例如 Instagram、Lyft 和 Airbnb 利用服务器驱动的 UI 向全球数百万用户提供动态内容和更新。 那么,什么是服务器驱动的 UI?它们是如何工作的,为什么它们在现代 JavaScript 开发中变得如此重要?本文旨在回答这些问题,并深入介绍服务器驱动的 UI,它们的优劣势,以及如何在自己的项目中实现它们。
Istio 可以轻松创建具有丰富路由、负载均衡、服务间身份验证、监控等功能的已部署服务网络 - 所有这些都无需对应用程序代码进行任何更改。Istio 致力于以最小的资源开销提供这些优势,并旨在支持具有高请求率的大型网格,同时增加最小的延迟。 Istio 数据平面组件(Envoy 代理)处理流经系统的数据。Istio 控制平面组件 Istiod 配置数据平面。数据平面和控制平面具有不同的性能问题。
容器运行时(Container Runtime)是负责管理和执行容器的组件。它负责将容器镜像转化为在主机上运行的实际容器进程,提供镜像管理、容器的生命周期管理、资源隔离、文件系统、网络配置等功能。
B站作为一个视频网站,视频播放页作为用户的核心消费场景,其重要程度可想而知。目前APP客户端的主要播放页场景主要有UP主稿件播放页,Story模式播放页,直播播放页跟番剧影视播放页。每一个都是大量业务的汇总点作为用户核心消费场景,需要在承接各种业务到播放页的转化,还要负责承接各业务在播放页的功能展示。可以说播放页代码复杂度属于客户端最高的代码之一,这不仅仅是因为播放页本身的功能复杂,还因为播放页往往需要融合大量外部业务功能。复杂的功能自然会产比较高的代码复杂度,而高代码复杂度又往往意味着高代码维护成本。 另一方面,在这个降本增效的大时代之下,公司层面上决定把UP主稿件播放页与番剧影视播放页进行页面合并,这样既可以确保用户播放体验尽可能一致的,又避免了相同功能又不需要重复开发从而降低开发成本,并且后续课堂业务也会融合进来。然而这也意味着在这个新的融合播放页中会承载直接三个播放页的代码复杂度。为此我们需要探索出一种新的架构模式来满足当前的业务诉求。
在我们对数据库技术方案设计的时候,我们是否有自己的设计理念或者原则,还是更多的依据自己的直觉去设计,是否曾经懊悔线上发生过的一次低级故障,可能稍微注意点就可以避免,是否想过怎么才能很好的避免,下面规范的价值正是我们工作的检查清单,需要我们不断从错误中积累有效经验来指导未来的工作。以下规范在大型互联网公司经过了充分的验证,尤其适用于并发量大、数据量大的业务场景。先介绍的是安全规范,因为安全无小事,很多公司都曾经因为自己的数据泄露导致用户的惨痛损失,所以将安全规范放到了第一位。