牛顿冷却定律在得到APP的实践

背景介绍

「得到锦囊」产品刚上线时,该版块首页的最热排序暴露了两个问题:分页时数据重复和最热榜单被霸屏,本文将围绕解决这两个问题来展开,介绍下如何参考牛顿冷却定律来优化最热内容的排序。

牛顿冷却定律”本质上它描述了高于周围温度的物体会向外散热,并逐渐降温的过程,同时单位时间内散热与周围温差会成正比关系。通过建立”温度”与”时间”之间的函数关系,构建一个”指数式衰减”(Exponential decay)的过程。

如果我们把”热文排名”想象成一个”自然冷却”的过程,那么如下的场景是成立的:

  • 任一时刻,网站中所有的文章,都有一个”当前温度”,温度最高的文章就排在第一位。
  • 随着时间流逝,所有文章的温度都逐渐”冷却”。

【八里庄技术沙龙 - 18期】得到 hybrid 架构的演进之路

得到 APP 是一个三年多的产品,最初采用纯 Native 的方式开发,在 18 年初,我们开始了 Hybyid 开发技术方案的探索和实践, 目前得到 APP 共包含了 ReactNative 和 Webview 两套 Hybrid 方案。本文从时间维度上,重点回顾一下 Webview Hybrid 方案在得到 APP 从 0 到 1 的过程,也希望我们的经历可以给一些想落地 Hybrid 方案的团队一点启发。

kubernetes 指南 -- 弹性伸缩

0x0 pre

弹性伸缩, 是云计算中的一种常用方法,通过该方法,服务器池中的计算资源量(通常根据有效的服务器数量来衡量)会根据服务器池中的负载进行动态伸缩。

本文旨在为想在 kubernetes 中使用弹性伸缩功能
的读者解释相关概念,并制定一条较为清晰的路线图。

不得不了解系列之限流

限流简介

现在说到高可用系统,都会说到高可用的保护手段:缓存、降级和限流,本博文就主要说说限流。限流是流量限速(Rate Limit)的简称,是指只允许指定的事件进入系统,超过的部分将被拒绝服务、排队或等待、降级等处理。对于server服务而言,限流为了保证一部分的请求流量可以得到正常的响应,总好过全部的请求都不能得到响应,甚至导致系统雪崩。限流与熔断经常被人弄混,博主认为它们最大的区别在于限流主要在server实现,而熔断主要在client实现,当然了,一个服务既可以充当server也可以充当client,这也是让限流与熔断同时存在一个服务中,这两个概念才容易被混淆。

那为什么需要限流呢?很多人第一反应就是服务扛不住了所以需要限流。这是不全面的说法,博主认为限流是因为资源的稀缺或出于安全防范的目的,采取的自我保护的措施。限流可以保证使用有限的资源提供最大化的服务能力,按照预期流量提供服务,超过的部分将会拒绝服务、排队或等待、降级等处理。

Grid 布局初探

Grid布局是微软在2010年提出来的一种新的布局方式,到2016年的时候提交了该布局的草案,经过这三四年的发展,grid布局慢慢变的成熟,兼容性也越来越好,可以适当学起来用起来了

本次学习的几个点:

  • CSS布局发展过程
  • Grid布局的优点以及相关术语介绍
  • Grid布局的使用
  • 注意事项、备注
  • 参考资料

【八里庄技术沙龙-15 期】得到安卓客户端的工程架构实践

大家好,我是刘硕,来自得到安卓客户端。主要负责业务架构方向的工程效能提升相关工作。我们希望,通过对工程架构的改造升级,践行工程化方面的一些通用实践。使安卓团队在研发效率和研发体验上得到整体提升,提高app稳定性。

最近两年,我们在工程架构方面有了一些成果,主要围绕着工程架构,开发架构相关方面做了很多工作,大概分为两部分内容:组件化和mvvm开发架构。

【八里庄技术沙龙-14 期】Kubernetes在得到App的落地实践

引言

罗辑思维是一家创业公司,主要产品有:得到App。主要有两类业务,线上: 订阅课程、商城、听书、讲座、电子书,线下:跨年演讲,得到大学,线下大课等。目前有高质量用户3300万,后端服务以容器方式运行,正在基于Kubernetes进行混合云建设,目前线上主要的主机资源是使用的阿里云。

由于技术选型比较“激进”,并且践行微服务架构设计,目前的语言栈有:按照占比排名,Golang、Node.js、Python、Java、PHP、C++,之前使用云主机(ECS)带来的运行环境管理复杂、发布过程不统一等问题。所以,将应用容器化以及微服务治理,一直是较为迫切的需求。

Java并发编程通识

引言

并发编程是一个经典的话题,由于摩尔定律已经改变,芯片性能虽然仍在不断提高,但相比加快CPU的速度,计算机正在向多核化方向发展。虚拟化的赋能,让多核服务器的弹性创建和扩容都更加便捷。为了尽可能的提高程序的性能,硬件,操作系统,程序编译器进行一系列的设计和优化,但是同时,带来了影响并发安全的3类问题:

  1. cpu增加了缓存,以均衡与内存的速度差异,但是带来了可见性问题
  2. 操作系统增加了线程,行程,分时复用cpu以增加cpu利用率,但是带来的线程切换的原子性问题
  3. 编译程序优化指令次序,但是带来了有序性问题

【八里庄技术沙龙-13 期】进度服务重构之路

进度服务是什么

要说明进度服务是什么,首先要说明进度是什么。得到app主要提供内容服务,用户在使用内容服务的时候,就会产生进度。如图,进度的元素无处不在,收听百分比,已听完等。

Vue社区的路由解决方案:vue-stack-router

vue-router 是 Vue 官方的路由管理器,用法简单、功能强大。但在移动端场景中,特别是 hybrid 项目,我们在使用中遇到了一些问题。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×