微博config service实践

一.配置的那些事儿

1.业务背景

作为大型复杂分布式系统,微博平台中存在大量的配置信息,这些配置信息定义了平台中的RPC服务和资源(memcached、redis、mysql等)的地址,以及这些服务和资源的元数据信息。

在微博早期,配置信息散落在工程的代码中,这种方式简单方便,但是微博平台系统规模扩大和业务部署复杂度的提升带来了一些问题:

服务按照业务和重要程度部署在多个池子,不同池子的配置信息不同。

服务多机房部署,不同机房的配置信息也不同。

开发、测试以及上线部署的配置信息亦不同。

为了解决以上问题,微博平台对配置做了一次大规模调整,将代码和配置分离,配置按照机房、业务池以及环境拆分,并且存储在本地文件系统中约定的位置。分离之后,各业务池、各机房的配置更加灵活,也为配置向 config service迁移提供了条件。

随着微博平台服务器规模的持续增长,RPC服务和资源的故障和变更已经变为一种常态,在日常维护过程中,经常会遇到以下场景:

某一组memcacheq资源突然流量猛增,需要快速扩容

某一redis资源访问过载,需要立即降级调用它的服务

而现有的解决方案无法解决这些问题,我们迫切需要一个分布式环境下的持久配置系统,提供高效的配置注册获取和及时变更通知服务,于是vintage(config service在微博内部的代号)应运而生。

2.vintage

Vintage是典型的基于pub-sub模型的通讯框架,在业界类似的系统很多,比如淘宝的diamond和软负载中心,zookeeper在某些系统中(如kafka)也扮演着类似的角色。

Vintage 将信息集中管理在云端,并且提供实时的变更通知。Vintage主要应用于两种主要场景:配置管理和命名管理,配置管理主要维护静态配置数据(如服务超时时间、降级开关状态);命名管理主要维护RPC服务地址信息。两种场景看起来极为相似,但是也存在如下差别:

生命周期不同:命名服务需要管理服务的生命周期,实时探测服务的存活状态;配置服务主要管理静态的信息。

数据产生方式不同:命名服务数据来源于服务的注册;配置服务数据来源于OP手动添加。

数据精确度不同:命名服务数据可能会存在一定时间窗口内的误判(后面会提到);配置服务的数据会非常精确。

Vintage在微博平台内部已经获得了很大的推广和使用,RPC service、cache service、分布式trace系统、queue service都在一定程度上依赖vintage,它的重要程度是不言而喻的。 那么如此重要的服务是如何设计的呢?

二.Vintage设计和架构

1. 架构设计

Vintage在设计之初就明确了以下的目标:

高可用:vintage管理着服务的地址和元数据信息,其本身的高可用性决定着系统整体成败。

低延迟:微博平台中每次调用理论上都会与vintage有一次或者多次的交互,因此vintage访问延迟影响着系统整体的性能。

时效性:对于变更及时响应和通知

vintage选择redis作为配置信息的落地存储,结构简单,无单点,具体如下图所示:

时间: 2024-10-30 16:38:37

微博config service实践的相关文章

肖明超:微博的营销实践与猜想

微博是社交媒体中用户最活跃的平台,微博改变了媒体和信息传播模式,更给营销带来巨大想象空间. 文/肖明超 新生代市场监测机构副总经理 继SNS和博客之后,微博成为社交媒体推进过程中迎风矗立的一次新浪潮,如今,微博风暴已经席卷中国,迅速成为中国互联网业界一个炙手可热的焦点.但是这股"微博之力"到底在改变着什么?微博是否存在营销机会和空间?2010年7月-9月,全球最大的媒介投资管理集团-群邑中国和新生代市场监测机构联合开展了一项针对微博的研究,在北京.上海.广州.沈阳.西安.成都6个城市采

微博平台的RPC服务化实践概述

2014年第一分钟,新浪微博的发布量以808298条再次刷新记录,第一秒微博发布量相较去年提升55%.(数据来源:新浪科技 )这是微博平台 RPC 框架 "Motan" 上线后第一次抗峰值,整体表现平稳,基本达到最初的"应用方无感知"的目标. 在RPC服务化这个事情上,微博平台不是第一个吃螃蟹的:早的有亚马逊和eBay等国外先驱,近的有Twitter的finagle,淘宝的dubbo等等,网上各种公开的资料铺天盖地.另一方面,单纯的RPC调用功能实现,从技术上看其实

微博CacheService架构浅析

微博作为国内最大的社交媒体网站之一,每天承载着亿万用户的服务请求,这些请求的背后,需要消耗着巨大的计算.内存.网络.I/O等资源.而且因为微博的产品特性,节假日.热门事件等可能带来突发数倍甚至十几倍的访问峰值,这些都对于支撑微博的底层基础架构提出了比较严苛的要求,需要满足: 每秒数十万的用户请求 数据更新的实时性 服务请求的低响应时间 99.99%以上的服务可用性 为了满足业务的发展需要,微博平台开发了一套高性能高可用的CacheService架构用于支撑现有线上的业务系统的运转.但"冰动三尺非

从 Spring Cloud 开始,聊聊微服务架构实践之路

本文讲的是从 Spring Cloud 开始,聊聊微服务架构实践之路[编者的话]随着公司业务量的飞速发展,平台面临的挑战已经远远大于业务,需求量不断增加,技术人员数量增加,面临的复杂度也大大增加.在这个背景下,平台的技术架构也完成了从传统的单体应用到微服务化的演进. 系统架构的演进过程 单一应用架构(第一代架构) 这是平台最开始的情况,当时流量小,为了节约成本,并将所有应用都打包放到一个应用里面,采用的架构为 .NET SQL Server: 表示层:位于最外层(最上层),最接近用户.用于显示数

基于Kickstart自动化安装CentOS实践

基于Kickstart自动化安装CentOS实践 前言 因为需要在浪潮的x86服务器中集中部署CentOS搭建基于Hadoop的大数据平台,平时接触SLES(SuSE Linux Enterprise Server)较多并且已经实现基于Autoyast方式使用光盘或者PXE网络自动化安装(后续会分享具体实现方法).这次主要通过学习Kisckstart实现最简单的光盘方式自动化安装CentOS,而网上的大多数教程并不完全适用于自身的环境,本文将不再赘述Kickstart相关概念,细节可参考扩展阅读

从玩腾讯微博所联想到的seo

最近一周的时间有在玩腾讯微博,一实践发现问题还真不少.估计我遇到的问题现在玩腾讯的朋友都有纠结过. OK,说过程吧.这次是做了个娱乐相关的微博,然后选了套比较合适的模版.添加了几个常用的工具,就开始干活了.刚开始没粉,用最古老也是最有效的方法去加粉,那就是QQ群和微群.一般如果是在微博网页里操作只能加100个就不能再加了,然后找到了几个关于如何破解100个限制的方法. 其一是在空间里添加微博这个应用.   其二是用QQ的操作面版.   其三是用手机玩微博.手机落伍了就不发图了. 第四种是用vpn

加密和解密ASP.NET配置文件(Web.config)

首先添加引用: using System.Web.Configuration; 加密操作如下: PRivate void ProtectSection(string sectionName, string provider)     {         Configuration config =             WebConfigurationManager.                 OpenWebConfiguration(Request.applicationPath);

第二届中国微博大会将于2012年5月18日召开

导语:2012年5月8日, 新传媒网将举办此次中国微博大会活动.届时将邀请微博运营商.知名微博运营团队.微博名人.企业微博管理者.草根等为大家精彩解读和剖析微博的运营,推广等方式,实现微博理论与实践的良好对接. &http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; 2012年5月18日,中国首家新媒体门户- 新传媒网将在北京国家会议中心举办第二届中国微博大会暨中国新媒体创新盛典,本次大会将邀请微博运营商.知名微博运营团

为支持亿级用户,短视频应用应该如何打造技术架构?

本文系美图架构师麦俊生,在Boss直聘主办的直聘学院「对话架构师」活动上的分享整理,介绍短视频社交"美拍"架构实践的总结. 麦俊生,Boss直聘「直聘学院」特邀分享嘉宾.美图架构平台深圳技术总监,曾担任新浪微博.奇虎360技术专家,从事高性能高可用架构设计开发工作,参与建设微博的feed和私信im系统.负责rpc框架motan.cache service. counter service.公用类库等基础建设,以及奇虎360存储服务和基础框架方面的建设.个人擅长性能调优.高可用中间件.分