公司:字节跳动
北京字节跳动科技有限公司,简称字节跳动,是一家位于中国北京的跨国互联网技术公司,成立于2012年3月,旗下有产品媒体聚合服务今日头条和短影音抖音(及其海外版本TikTok)、西瓜视频、社交平台Lemon8等,也有一些加入人工智能技术的专业生产力软件,例如剪映、办公套装拉客(lark,中国版本称飞书)等业务。
至2018年,字节跳动的移动应用月度用户超过十亿人,估值750亿美元,超越Uber成为全球最有价值的创业公司。截至2019年7月,字节跳动的产品和服务已覆盖全球150个国家和地区、75个语种,曾在40多个国家和地区位居应用商店总榜前列。
在中国互联网企业中,字节跳动是第一家没有向阿里巴巴、腾讯或百度寻求商业保护或融资的创业公司;相反地,字节跳动被认为与百度、腾讯两大巨头有强烈的竞争关系,因字节跳动资金主要来源于抖音和今日头条的广告收入。
至2020年3月,字节跳动已经有六万员工,并计划再增员一万人。投资人和内部消息将字节跳动2019年的营收定在1,040亿元至1,400亿元人民币,超过了Uber、Snapchat和推特的总和。在中国,其广告收入也超越了腾讯、仅次于阿里巴巴。抖音的全球下载量达1.15亿次,固定用户近10亿。
数据血缘图谱升级方案设计与实现
数据地图平台是字节跳动内部的大数据检索平台,每天近万的字节员工在此查找所需数据。数据地图通过提供便捷的找数,理解数服务,大大节省了内部数据的沟通和建设成本。
如何做好分布式任务调度——Scheduler 的一些探索
Scheduler 是飞书内的分布式任务调度平台,本文为大家介绍如何做好分布式任务调度。
一文了解字节跳动 KubeZoo 的核心理念 —— 协议转换
从租户的视角来看,无论是 namespace scope 还是 cluster scope 的资源,用户都拥有完整和独立的视角,比如租户 A 拥有名字为 foo 的 namespace,租户 B 也可以拥有名字为 foo 的 namespace,而且这两个 namespace 只是名字相同,其资源和权限实际上是互相隔离的。
但是从 Kubernetes 的视角来看,其对 namespace 的资源要求在 namespace 内是命名唯一的,对于 cluster scope 的资源,其要求在全局上也是命名唯一的。
当所有的租户都共享同一个 Kubernetes 时,为了解决多个租户具备完整独立视角和 Kubernetes 要求在 namespace/scope cluster 不同层次命名的唯一性的矛盾,我们提出了协议转换的理念,以此解决命名唯一性的问题。
智能插帧,打造丝滑视频体验
是什么技术让视频还原出当下的瞬间,让卡顿视频变得如此丝滑?字节跳动智能创作团队自研视频插帧技术为大家找到了丝滑视频的秘诀。
Bundle-less 的思考和实践分享
本文分享作者对于 Bundle-less 的理解以及在这个方向上做过的探索。
Golang 中 map 探究
本文主要通过探究在golang 中map的数据结构及源码实现来学习和了解map的特性,共包含map的模型探究、存取、扩容等内容。
从混合部署到融合调度:字节跳动容器调度技术演进之路
字节服务体系大致分为微服务、推广搜服务、视频处理、机器学习和大数据服务。
在线微服务是指支撑应用的业务逻辑、产品基础功能的后端服务,它包括接口、 RPC 后端服务、数据访问层服务等;推广搜服务是指为抖音、西瓜视频、懂车帝等 Feed 服务和搜索提供内容列表的后端服务,它们大量应用机器学习模型进行服务优化,属于重度算力要求服务。
视频处理、机器学习和大数据服务属于偏离线的服务,它们为推广搜离线训练、视频处理、数据报表提供数据处理支持,通常运行在 Hadoop、Mesos 等调度系统上。
如何衡量一个站点的性能好坏
高性能站点比低性能站点更能吸引和留住用户,而留住用户对于提高用户转化率至关重要。本文以此为背景,介绍字节内部是如何衡量站点性能的,如何依靠性能监控定位线上站点性能问题。
Go 生态下的字节跳动大规模微服务性能优化实践
Go 是一门很有特色的编程语言,已经被广泛应用到不少领域,随着使用场景的发展,一些性能相关的问题也开始逐渐暴露出来。本次分享将以字节跳动的性能优化工作为例,介绍基于 Go 生态的微服务体系下,分析系统性能、优化不同层次软件以提升运行性能、提高资源使用效率的一些实践和经验,会特别介绍在 Go 语言 SDK 侧的一些优化工作。
抛砖引玉:TypeScript 从入门到实践
众所周知 JavaScript 是一门弱类型语言,在前端进入工程化后,代码仓库越来越大,JavaScript 弱类型的缺点被无限放大,使其难以胜任开发大型项目。在一个多人维护的项目中,往往不知道别人写的函数是什么意思、需要传入什么参数、返回值是什么,一个用法不小心就会导致线上出现 BUG,所以除了靠口口相传以外还要维护大量的代码注释或者接口文档来提供其他人了解。但是当我们使用 TypeScript 后,除了初期具有一定的学习成本以外,基本上可以很好的解决上述的问题。
抖音 iOS 推荐 Feed 容器化总结
抖音 Feed 容器在推荐、关注、同城、朋友等多个场景中使用,每个场景都有自身的逻辑和业务,最终汇总在 FeedViewController 中,随着业务的迭代,代码越来越臃肿,面临如下的问题:
- 容器类(FeedViewController) 有 10000+行,还有十多个业务分类,整体的理解和维护成本高
- 容器类 框架和业务边界不清晰,框架代码的修改不收敛和不规范,业务改动可能导致线上问题,如数据层不收敛导致的问题:自动删除导致一次滑动多个视频或者自动跳转到第一个视频等问题
- 容器类 承担了推荐、关注、朋友三个大场景,细节的业务逻辑差异较多,目前多业务代码耦合在一起,增加新功能时需要考虑其他业务方,容易引入问题,开发和测试效率低
- 内流容器和外流容器,形态相似但是代码分离,主体代码重复,新增功能时需要在两个类中做重复开发,如:视频预加载优化等,开发和维护成本高
- 核心功能的监控和代码防劣化的体系不完善
Pico Unity VR游戏开发实战——性能优化基础
Pico致力于VR头显产品的研发、生产、销售,特别专注于VR一体机这一形态产品。Pico兼顾C端消费者市场与B端行业市场,同时为大众VR用户与行业客户提供VR产品与服务。业务逐步由中国本土推向全球——北美、韩国、欧洲和日本。
深度解析字节跳动的增长模型
字节跳动是如何做用户增长的?
关于这个问题,坊间流传着各种版本的回答。有人说时也命也靠运气;有人说靠抖音最推崇的算法;也有人说是靠字节一只强悍的增长团队...
10年前,在“增长黑客”的概念已在硅谷典例频出的时候,国内的“增长”思维还处在冬草萌动、芽尖儿都没有的阶段。“增长”并非一个放之四海皆准的标准化方案。面对不同的地域、不同的人群,不同的思维方式与生活习惯,都会有不同的增长策略。而每一滴毫厘之差,也会汇成千里之势。
Hessian 序列化、反序列化
- 序列化参数有枚举属性,序列化端增加一个枚举,能否正常反序列化?
- 序列化子类,它和父类有同名参数,反序列化时,同名参数能否能正常赋值?
- 序列化对象增加参数,反序列化类不增加参数,能否正常反序列化?
- 用于序列化传输的属性,用包装器比较好,还是基本类型比较好?
WebXR 技术调研 - 在浏览器中构建扩展现实(XR)应用
WebXR 是一组支持将渲染 3D 场景用来呈现虚拟世界(XR)或将图形图像添加到现实世界(AR)的标准。
RTC 场景下的屏幕共享优化实践
屏幕共享是视频会议场景使用最广泛的功能之一,在共享一个 PPT 或者文档的情况下,人们对画面清晰度有着极高的要求,“看不清” 是最容易被用户吐槽的事情;而在共享一个视频素材的情况下,大家又对流畅度有着极高的要求,“卡顿” 也是最容易被用户吐槽的点。