基于开源Tars的动态负载均衡实践

2021-05-31
阅读 6 分钟
3.8k
官方的描述是:TARS是一个支持多语言、内嵌服务治理功能,与Devops能很好协同的微服务框架。我们在开源的基础上做了很多适配内部系统的事情,比如与CICD构建发布系统、单点登录系统的打通,但不是这次我们要介绍的重点。这里想着重介绍一下我们在现有的负载均衡算法之外实现的动态负载均衡算法。
封面图

Mybatis-Plus的应用场景及注入SQL原理分析

2021-05-25
阅读 8 分钟
4.7k
一、背景1.1 传统Mybatis的弊端1.1.1 场景描述假设有两张表:一张商品表、一张订单表,具体表的字段如下:现有如下需求:分别根据id查询商品表和订单表所有信息根据支付状态和通知状态查询订单表信息对订单表增加一个订单状态,根据订单状态查询订单信息1.1.2 需求需求a:根据id查询商品表: {代码...} 根据id查询订单表...

玩转直播系列之消息模块演进(3)

2021-05-24
阅读 8 分钟
4k
即时消息(IM)系统是直播系统重要的组成部分,一个稳定的,有容错的,灵活的,支持高并发的消息模块是影响直播系统用户体验的重要因素。IM长连接服务在直播系统有发挥着举足轻重的作用。
封面图

Kafka万亿级消息实战

2021-05-18
阅读 18 分钟
4k
本文主要总结当Kafka集群流量达到 万亿级记录/天或者十万亿级记录/天  甚至更高后,我们需要具备哪些能力才能保障集群高可用、高可靠、高性能、高吞吐、安全的运行。

玩转直播系列之RTMP协议和源码解析(2)

2021-05-17
阅读 16 分钟
10.7k
实时消息传输协议(Real-Time Messaging Protocol)是目前直播的主要协议,是Adobe公司为Flash播放器和服务器之间提供音视频数据传输服务而设计的应用层私有协议。RTMP协议是目前各大云厂商直线直播业务所公用的基本直播推拉流协议,随着国内直播行业的发展和5G时代的到来,对RTMP协议有基本的了解,也是我们程序员必须...
封面图

Tars-Java客户端源码分析

2021-05-08
阅读 14 分钟
2.6k
在分布式计算中,远程过程调用(Remote Procedure Call,缩写 RPC)允许运行于一台计算机的程序调用另一个地址空间计算机的程序,就像调用本地程序一样,无需额外地为这个交互作用涉及到的代理对象构建、网络协议等进行编程。

玩转直播系列之从 0 到 1 构建简单直播系统(1)

2021-05-07
阅读 9 分钟
5.2k
随着5G时代的到来,音视频行业也可能迎来一个行业的春天,直播则是新视频行业一直以来的一个重要的产品形态,从最初的秀场直播,游戏直播,到今年由于疫情,目前比较火的在线教育直播,带货直播等,各类新的直播形式则是越来越多的展示在大众面前。
封面图

如何把 Caffeine Cache 用得如丝般顺滑?

2021-04-28
阅读 10 分钟
6.3k
在推荐服务中,虽然允许少量请求因计算超时等原因返回默认列表。但从运营指标来说,越高的“完算率”意味着越完整的算法效果呈现,也意味着越高的商业收益。(完算率类比视频的完播率,成功完成整个推荐线上流程计算的请求次数/总请求次数)

commons-pool2 池化技术探究

2021-04-27
阅读 11 分钟
6.9k
我们经常会接触各种池化的技术或者概念,包括对象池、连接池、线程池等,池化技术最大的好处就是实现对象的重复利用,尤其是创建和使用大对象或者宝贵资源(HTTP连接对象,MySQL连接对象)等方面的时候能够大大节省系统开销,对提升系统整体性能也至关重要。

系统高可用之健康检查和健康度量那些事

2021-04-26
阅读 6 分钟
4.6k
随着互联网的快速发展,同类同质产品之间的竞争越来越大,产品之间一个重要的差异就是用户体验。影响用户体验的,除了产品设计因素外,技术层面也是一个重要的影响因素,主要体现在服务的可用性和响应速度。提升服务可用性和响应速度如此重要,为了实现这样的目标,必须要有相应的手段,其中健康检查就是保障服务可用性...
封面图

加密原理详解:对称式加密VS非对称式加密

2021-04-21
阅读 5 分钟
5.9k
小红和小明是情侣,一天,小红给小明发短信说:“亲爱的,我银行卡上没有钱了,你给我转1万块吧。”有过上当受骗经历的人都知道这有可能是小偷偷了小红手提包,然后拿手机发的短信。不过我们小明学过加密原理,于是他回复说:“你直接拿我的银行卡刷吧,密码加上我们第一次约会的日期就是663156。”很明显,只有小明和小红知...

抢购倒计时自定义控件的实现与优化

2021-04-20
阅读 18 分钟
3.1k
但是国内的电商应用大部分都仅支持中文,不适配其他的语言,因此当倒计时与其他文案处于同一行展示时,无需考虑倒计时的展示方式。在海外应用中,由于需要适配各种语言,有些小语种的文案较长,因此当倒计时和其他文案处于同一行展示时,需要充分考虑多语言的适配,如何优雅地完成倒计时自适应显示是一个值得深思的问题。

深入剖析共识性算法 Raft

2021-04-19
阅读 9 分钟
3.8k
Raft 是一种为了管理日志复制的分布式一致性算法。Raft 出现之前,Paxos 一直是分布式一致性算法的标准。Paxos 难以理解,更难以实现。Raft 的设计目标是简化 Paxos,使得算法既容易理解,也容易实现。
封面图

神秘又强大的@SpringBootApplication注解

2021-04-14
阅读 8 分钟
3.5k
大部分的配置都可以用Java类+注解来代替,而在SpringBoot项目中见的最多的莫过于@SpringBootApplication注解了,它在每个SpringBoot的启动类上都有标注。

Dubbo 编解码那些事

2021-04-13
阅读 12 分钟
3.1k
笔者在一次维护基础公共组件的过程中,不小心修改了类的包路径。糟糕的是,这个类被各业务在facade中进行了引用、传递。幸运的是,同一个类,在提供者和消费者的包路径不一致,没有引起各业务报错。

2D+1D | vivo官网Web 3D应用开发与实战

2021-04-12
阅读 7 分钟
5.3k
在近20年的前端发展史中,前端经历了铁器时代(小前端),信息时代(大前端)以至现在的全能前端时代。经历了几个时代的沉淀之后,前端领域开始更加细分。
封面图

Android内存泄露检测 LeakCanary2.0(Kotlin版)的实现原理

2021-03-30
阅读 12 分钟
4.5k
本文介绍了开源Android内存泄漏监控工具LeakCanary2.0版本的实现原理,同时介绍了新版本新增的hprof文件解析模块的实现原理,包括hprof文件协议格式、部分实现源码等。

微服务时代组件化和服务化的抉择

2021-03-29
阅读 4 分钟
3.3k
随着业务系统的复杂性越来越高,系统之间的调用也越来越多,在微服务拆分和迭代过程中,是不断的拆分出新的独立的服务还是封装独立的组件以jar包依赖的方式提供服务是我们经常需要面对的问题,本文将详细探讨这两种不同的方式区别、各自的优劣势及适用的场景,希望能够对大家有所启发。
封面图

Hystrix 实战经验分享

2021-03-25
阅读 14 分钟
3.4k
Hystrix是Netlifx开源的一款容错框架,防雪崩利器,具备服务降级,服务熔断,依赖隔离,监控(Hystrix Dashboard)等功能。

vivo 应用商店中的断点续传技术剖析

2021-03-23
阅读 14 分钟
3.7k
目前,vivo 平台有很多的业务都涉及到文件的下载:譬如说应用商店、游戏中心的C端用户下载更新应用或游戏;开放平台B端用户通过接口传包能力更新应用或游戏,需要从用户服务器上下载apk、图片等文件,来完成用户的一次版本更新。
封面图

vivo 应用商店推荐系统探索与实践

2021-03-22
阅读 4 分钟
2.4k
商店的应用数据主要来源于运营排期、CPD、游戏、算法等渠道,成立推荐项目之后也没有变化,发生变化的是由推荐系统负责和数据源进行对接,商店服务端只需要和应用推荐系统进行对接即可。

C/C++ 性能优化背后的方法论:TMAM

2021-03-17
阅读 10 分钟
4.8k
开发过程中我们多少都会关注服务的性能,然而性能优化是相对比较困难,往往需要多轮优化、测试,属于费时费力,有时候还未必有好的效果。但是如果有较好的性能优化方法指导、工具辅助分析可以帮助我们快速发现性能瓶颈所在,针对性地进行优化,可以事半功倍。

存量用户运营企业微信的“用户端小程序”优化方案

2021-03-16
阅读 5 分钟
2.9k
企业微信端产品“C端用户小程序”,是一款服务于vivo线下代理、门店和导购,帮助导购连接用户,快速与用户进行沟通的工具。基于“C端小程序”的PU/UV量较为庞大,为了更加极致的用户体验,所以提升小程序性能优化是必然。

用户行为分析模型实践(一)—— 路径分析模型

2021-03-15
阅读 13 分钟
6.7k
在互联网数据化运营实践中,有一类数据分析应用是互联网行业所独有的——路径分析。路径分析应用是对特定页面的上下游进行可视化展示并分析用户在使用产品时的路径分布情况。比如:当用户使用某APP时,是怎样从【首页】进入【详情页】的,用户从【首页】分别进入【详情页】、【播放页】、【下载页】的比例是怎样的,以及可...

Webpack 基石 tapable 揭秘

2021-03-10
阅读 14 分钟
3.7k
Webpack 基于 tapable 构建了其复杂庞大的流程管理系统,基于 tapable 的架构不仅解耦了流程节点和流程的具体实现,还保证了 Webpack 强大的扩展能力;学习掌握tapable,有助于我们深入理解 Webpack。

Node.js 模块化你所需要知道的事

2021-03-09
阅读 12 分钟
4k
我们知道,Node.js是基于CommonJS规范进行模块化管理的,模块化是面对复杂的业务场景不可或缺的工具,或许你经常使用它,但却从没有系统的了解过,所以今天我们来聊一聊Node.js模块化你所需要知道的一些事儿,一探Node.js模块化的面貌。

亿级用户中心的设计与实践

2021-03-08
阅读 5 分钟
5.5k
用户中心是互联网最为基础的核心系统,随着业务和用户的增长,势必会带来不断的挑战。如何在亿级的情况下保证系统的高可用,高性能以及高安全,本文能够给你一套实践方案。注1:本文讨论的是微服务框架下的用户中心,不涉及授权等功能;注2:本文所涉及的用户中心设计与vivo自身业务无关。

一文帮你搞懂 Android 文件描述符

2021-03-03
阅读 17 分钟
5.4k
文件描述符是在 Linux 文件系统的被使用,由于Android基 于Linux 系统,所以Android也继承了文件描述符系统。我们都知道,在 Linux 中一切皆文件,所以系统在运行时有大量的文件操作,内核为了高效管理已被打开的文件会创建索引,用来指向被打开的文件,这个索引即是文件描述符,其表现形式为一个非负整数。

vivo 官网资源包适配多场景的应用

2021-03-02
阅读 4 分钟
1.5k
本文介绍了资源包的概念及使用场景,同时对资源包的几种使用方案进行对比。通过本文,大家可以快速掌握资源包的使用方法,解决单一配置满足多场景、多样式的问题。

MongoDB 在评论中台的实践

2021-03-01
阅读 4 分钟
7.4k
随着公司业务发展和用户规模的增多,很多项目都在打造自己的评论功能,而评论的业务形态基本类似。当时各项目都是各自设计实现,存在较多重复的工作量;并且不同业务之间数据存在孤岛,很难产生联系。因此我们决定打造一款公司级的评论业务中台,为各业务方提供评论业务的快速接入能力。在经过对各大主流 APP 评论业务的...