潍坊| 澧县| 汪清| 白朗| 临桂| 哈尔滨| 户县| 建始| 2manbetx官方网站 冠亚彩票 鄂州| 万博manbetx官方 托克逊| 西充| 耒阳| 冠亚br88 张家界| 三河| 丰台| manbetx 开封市| 铁山| BR88 博山| wwwdafa888casino w88.com 黄岛| 冠亚彩票 双江| 涡阳| 固原| 山阳| dafabet manbet 黄山市| 金沙| 贺州| fun88 吉木乃| 东西湖| 禄丰| 上思| 寿光| 辰溪| 万博官网 泗阳| 吉利| 手机寰宇浏览器官网 乐天堂fun88 科尔沁左翼中旗| 遂平| 惠阳| 正定| 江阴| 亚洲城兑换积分的网址 丽水| dafabet网页 张北| 公主岭| dafabet 宜君| www.3344444.com w88 江门| 合浦| 上虞| 邵阳市| 万博体育官网登录 玉屏| 普安| 88bf娱乐网 必威体育 金华| 阿拉善左旗| 兴安| 亚洲城ca88手机版注册 临淄| 雷州| 龙泉驿| 88bf娱乐 br88冠亚 崇礼| 元谋| 西宁| 尚义| ca888亚洲城唯一官方 万博2.0下载地址 六盘水| 宿迁| 钓鱼岛| 青海| 平凉| 勐海| 黑龙江| 民丰| 赞皇| 竹山| 阳朔| dafa888官网 大埔| 昭平| 双鸭山| 嵊州| 工布江达| 杜集| 方城| 巩义| 冠亚娱乐 成安| 狗万滚球App下载 佛山| betway必威 承德县| 梅里斯| 临县| 万博体育manbetx 庄河| 来安| 疏附| 3344222 多伦| 金华| 狗万体育官网 潞西| 海口| 灵川| 舟曲| betway88 www.3344222.com 西峡| bwin必赢 神农架林区| 错那| 克山| 武邑| 大奖888 兴义| 堆龙德庆| 枣庄| br88 峨眉山| 亚洲城网页版网址多少 溧阳| dafa888娱乐场网页版 安龙| dafa888casino 四子王旗| 中江| 静乐| 宜州| manbetx 龙游| 温泉| 湘阴| 万博app信任 武穴| 乳山| uedbet赫塔菲 遂平| 旌德| 伊宁市| 西峡| 石河子| 临颍| dafabet 3344666 左贡| 扎囊| manbetx官网 巴青| 微山| uedbet黑平台 乌鲁木齐| 黄冈| bwin网站 枝江| manbetx手机版 通河| 阿拉尔| 惠东| 长寿| 沁阳| 曾母暗沙| BR88 青田| 万博体育论坛 dafa888 dafa888bet 南皮| 章丘| 文山| 天水| 平湖| betway 高青| 鄢陵| 亚洲城ca888 花都| 化州| 必威体育 元谋| 百喜登录 betway必威 manbetx娱乐 遵义县| 湄潭| 四川| 3344666 新万博娱乐 天门| 淅川| 镇雄| 特克斯| 雅安| 乐天堂fun 皋兰| br官网 南皮| 优德888 3344333 新蔡| 宜州| 韦德1946 dafabet888 武陵源| br88冠亚 巩义| 岷县| 锦州| 定安| 屯昌| 888大奖娱乐 康马| 亚洲城 绥化| 鲅鱼圈| 尚义| 子洲| 顺平| 香格里拉| ag娱乐平台大骗局 亚洲城vip积分登陆 大奖 万博体育 冠亚娱乐 万博app苹果版下载 彭水| betway 吴江| 杭锦旗| 吴起| 临夏县| 石林| 绩溪| 万博体育网站 南汇| 浦北| 雅江| 渠县| 西丰| 狗万manbetx 米易| 万博manbetx官方 88bifa.bet 汉南| manbetx官网登陆 南江| 东方| 郴州| 溧阳| 西沙岛| 梁子湖| opebet官网 芜湖县| 冠亚娱乐 冠亚娱乐 峨眉山| 鹤山| 卓资| 德格| ca888亚洲城 尉犁| wofacai888手机版 星子| fun888 万博体育 冠亚娱乐 狗万滚球App下载 韩城| 顺义| 万博体育合并 dafabet手机版登陆 冠亚彩票 韦德1946 茶陵| 防城港| 狗万博app 阳东| manbetx 江夏|

2019年度党报党刊发行工作视频会议召开

2019-01-18 02:57 来源:有问必答

  2019年度党报党刊发行工作视频会议召开

  万博体育官网兰亭被称为天下第一是谁说的呢?是王的另一个脑残粉米芾封的,米芾名气大,后边的书法家也就这么跟着说了。●在南宁市武鸣区,举行2018年中国壮乡·武鸣“壮族三月三”歌圩暨骆越文化旅游节开幕式,《壮乡欢歌》文艺演出,“壮乡歌海”,千人武术、千人壮歌舞、千人竹竿舞展演,第十届广西歌王大赛——“灵水歌圩”对歌盛会,骆越祖母王祭祀大典,“三月糯米香昂昂在壮乡”活动等。

因此,吃完早饭至少过半小时再去锻炼。本期家居周刊,本报收集了众多业主入住后的一些装修建议:春季装修要遵循什么原则?木工、油工在春季施工要注意什么?如何防潮?准备装修的业主可仔细了解一下,绕开这些坑,装修尽量别犯错。

    不要急于进行户外活动:不少老人晚餐后习惯马上去小区或广场参加一些活动,比如跳广场舞、打拳。”无雕琢之痕的自然流露,行云流水般的抒发自如。

  去年,麻麻新村吸引近5万人次前来观光,村里几乎每家都开了餐馆或农家乐。”施岩建议:有心脑血管病危险因素的人应定期检测血糖,必要时测定糖化血红蛋白;糖尿病患者应首先控制饮食、加强体育锻炼,2—3个月血糖控制仍不满意者,应选用口服降糖药或使用胰岛素治疗。

最近,他的作品又进入国务院西山大院和中南海;其作品曾经两次刊登在《人民日报》上;今年全国“两会”期间,国家发展和改革委主管的《中国经济导报》更是专门约稿,用一个整版的篇幅刊登了其作品。

    2、多喝水,多运动,喝水能预防所有的结石,而运动则有助于排石。

  这对于外地购房者占比近八成的海南将意味着什么?此次限购是权宜之计还是长久策略?严格限购的背后发生了什么?在海南建省办经济特区30周年之际,中央宣布在海南全岛建设自由贸易试验区,支持海南逐步探索、稳步推进中国特色自由贸易港建设,这使得海南房地产的关注度急剧上升。“以减税促养老”也是国际上的成熟做法。

    倾听纳税人心声,提升服务质效。

  而据2017年市公安局治安管理总队发布的重庆市2016年新生儿入户用名的相关资料显示,男性新生儿入户用名前10位为:浩然、浩宇、俊杰、宇轩、俊豪、宇航、梓豪、皓轩、博文、子轩。证据:合同在附件里

    实施《辽宁省机构改革方案》需要制定、修改、废止省政府提案的地方性法规和省政府规章,或者需要由省政府作出相关决定的,省有关部门应当于今年11月底之前提出意见和建议,由省司法厅按规定起草草案后,依照法定程序报省政府审议。

  优德888  据了解,中国(大连)跨境电子商务综合试验区大窑湾保税港区园区一期主要由查验场所和集货中心两大功能区组成,其中跨境电商查验场所配有完善的海关监管设施和查验分拣线以及相关配套设施,跨境电商进口集货中心一期目前已入驻多家电商物流企业。

  二三线城市二手住宅销售价格分别上涨%和%,涨幅比去年同月分别扩大和个百分点;1-10月平均,同比均上涨%,其中二线城市涨幅比去年同期回落个百分点,三线城市与去年同期涨幅相同。  这种类型的家具企业,是很好的合作者,具有以用户为中心的思维,拥有一定的产品质量、品牌口碑,他们的产品售价多为目标消费者可接受的价格。

  必威体育 dafabet娱乐经典版 bifa88

  2019年度党报党刊发行工作视频会议召开

 
责编:
|
|
51CTO旗下网站
|
|
移动端

腾讯IT老兵:云端微服务架构下的运维思考

本文围绕微服务架构的特点与发展趋势,结合微信业务在微服务架构上的探索、应用、改进与提升,阐述运维如何应对业务在微服务架构环境下的各种挑战。

作者:熊普江来源:51CTO技术栈|2019-01-18 09:32

【51CTO.com原创稿件】互联网技术一直在快速演进当中,同时移动互联网与云时代的来临,让微服务架构应运而生。

2017 年 12 月 1 日-2 日,由 51CTO 主办的 WOTD 全球软件开发技术峰会在深圳中州万豪酒店隆重举行。

本次峰会以软件开发为主题,熊普江先生在“微服务与容器技术”专场与来宾分享了"云端微服务架构的运维思考"的主题演讲。

本文围绕微服务架构的特点与发展趋势,结合微信业务在微服务架构上的探索、应用、改进与提升,阐述运维如何应对业务在微服务架构环境下的各种挑战。

如今互联网技术呈现出两方面的发展趋势:云化的趋势和微服务。两者相结合则更富挑战性,本次我将以微信为例和大家一起探讨。

本次分享分为三个方面:

  • 微服务架构的演进
  • 微服务架构的特点与趋势
  • 微服务架构运维的解决之道

微服务架构的演进

智能手机在移动互联网中的快速普及,中国互联网中心的相关调查表明:通过手机上网的用户比例已经高达 93% 以上;而整个中国的互联网渗透比例也已超过六成。

因此,我们所处的移动互联网时代的开发呈现出如下的特征:

移动互联时代全面来临

虽然在工作时仍然离不开电脑,但是我们使用手机来连接互联网的场景更为频繁。

由于手机的运算能力有限,手机更多地被用于展示或显示内容。大量功能化的计算处理显然需要依赖于云端。所以我们实际上处于一个瘦客户端的时代。

随着我们停留在移动互联网上的时间剧增,大量的数据也随之产生,特别是相较于传统 PC 时代,增长了数十倍、乃至数百倍。

这些大量的数据同样也需要在云端进行处理,因此我们对于云服务的能力也会有一定的要求。

硬件技术发展迅速,服务器性能越来越大。如今硬件的处理能力(特别是 GPU)发展迅速,服务器的处理能力也得到了迅速提升。

这都导致了单个应用或者单个功能模块很难消耗掉整台服务器的资源。为了提高多台服务器的资源利用率,我们需要将多个服务部署到同一台机器之上。

容器技术兴起,轻量协议支持成熟应用

在软件方面,新兴的技术包括:容器、Docker 和诸如 restful 之类的轻量协议,都加快了我们的开发与部署效率。

应用的云化逐渐普及

为了将服务放到云端,我们不再需要去买各种机器,而直接在云上运用各种资源来部署我们的服务。

该领域不仅是互联网企业的热点,其他传统企业,包括一些金融和医疗企业也都在往云端寻求探索方向。

开发模式转变

传统的单体式集中开发模式为:前端 Web→管理系统→数据库→操作系统→底层服务器。

这种从上到下的“纵切”方式势必导致了对于技术人才、硬件、网络、软件、以及技术的大量需求。

这些对于初创型企业来说,会存在全能人才难招、开发复杂、迁移与扩容难度大、无法快速的响应等困难。

因此我们需要在开发和运维方面转变思路,通过“横切”将底层资源和中间平台转包给 IaaS 和 PaaS 平台,仅集中精力在前端的业务应用上。

精细化运营转变

由于越来越多的服务都要经由云端处理,以通过各种容器来实现快速部署与扩展,因此我们必需使用精细运维,来实现对于资源的充分利用。

基于上述移动互联网时代的开发特征,一种适用于快速变化需求的微服务架构应运而生,同时它也催生了 DevOps 的概念。

它是一种敏捷的开发模式架构,能够让我们迅速地实现:编写规划→编写代码→构建测试→发布上线→部署应用。

近两年,微服务这个术语渐成热门词汇,但它不是一个全新架构,更不是一个包治百病的架构。

那么,微服务架构与单体式架构相比优势体现在哪?这些优势又给开发模式、运维带来哪些挑战?

微服务架构的特点与趋势

微服务架构的特点与趋势如下:

  • 一种架构风格。微服务架构实际上并非一种新的技术或能力,而只是一种架构的风格。它大约出现在 2014 年,但是微信早在 2011 年就开始使用该架构风格和思路进行开发与运维了。
  • 强调服务的颗粒度、敏捷性和健壮性。微服务能够实现快速地开发、部署、和稳健地运行。
  • 单一、独立。微服务专注于解决单一问题,因此非常独立。该独立性体现在完成某个功能不依赖其他的服务,即如果该服务出错,并不会影响到其他服务。
  • 解耦,去中心化,组件化封装。既然相对独立,那么业务之间就是一种解耦的关系。纵观整个应用之中的各个服务,虽然重要程度有所区别,但是没有一个服务必须以微服务为中心,因此它具有去中心化的特点。

为了能在与其他的微服务打交道时使用统一的接口,微服务也会进行各种封装。

  • 多个微服务组合完成相对复杂的业务系统。我们能够快速地将各个微服务组合到一起,构建出一个能够达到特定需求且相对复杂的业务系统。
  • 高性能,高容错。由于每个服务都相对独立,就能够在保持系统稳定的前提下,极致地追求每个微服务的性能。在分布式的结构中,单个微服务的出错(比如硬件出现问题)不会影响到其他的微服务。

另外在多个微服务并存时,同一个服务会有多个正在运行当副本,因此具有高容错性。

微服务架构解析

微服务架构解析:

  • 适用于构建复杂的应用,通过运用微服务,可以将各种模块如搭积木一般组合成相对复杂的应用。
  • 分布式,由于各个微服务之间都遵守相同的协议,可以实现多个微服务的分布式部署。
  • 分别部署,由于每个微服务都具有单一且独立的功能,因此服务模块的数量显然是庞大的,光靠人工完全无法实现分开部署。随着微服务的数量呈几何基数增长,我们需要用一套自动化的工具来进行快速地部署。
  • 服务组件,微服务一般分为两种不同的类别:一是基础模块或称公共模块。如:用户登录、推送(Push)服务模块;另一是功能性模块,如:实现发消息或发朋友圈的模块。
  • 微服务的边界,虽然用的是同一种语言,但是可以进行独立地开发与测试,因此每个微服务在被发布的时候不会跟其他的微服务共享数据存储或内存空间。每个微服务都有自己的独立空间。
  • API 层,如上图所示,微服务与外界有一个接口层,它们遵守共同的协议进行通信,如 RPC 或 Restful 等,大家可以自由选择各种技术。
  • 微服务架构的扩展,为了应对未来可能对现有微服务的功能性增加,或是要增加其他业务场景,我们一般不在原有微服务上着手增加,而是新建另一个微服务,并独立部署。

微服务架构的优势

微服务架构有如下几个明显的优势:

  • 单个微服务更易理解,方便开发与维护。相比以往,只要定义好了一个微服务,我们在开发、维护和部署时就能方便地理解其功能意图。
  • 应用解耦、对应用整体应用交付而言,开发迭代更敏捷。我们可以单独对一个微服务进行升级,而不会影响其他微服务的功能。
  • 技术选择更加自由,微服务不再需要限定某个统一的技术实现。每个程序员都有自己的技术偏好,有人喜欢 Java,也有人喜欢 PHP 或是 C。
  • 以往大家不得不根据统一技术框架,遵循一致的开发语言。如今每个微服务都可以用不同的语言来实现。
  • 微服务独立部署,应用更稳定。由于每个微服务都不影响其他的微服务,因此单独部署会给整体应用带来更好的稳定性。
  • 架构扩展更容易、更快速。如右图所示,我们从三个维度进行架构设计。其中 X 轴表示可以放置多个副本;Y 轴是通过分层来扩容服务;而 Z 轴是对服务进行数据分区。
  • 这说明我们的微服务能从 X、Y、Z 三个方向去扩展整体架构。

微服务架构带来的挑战

下面是谈谈引入微服务架构时会碰到的各种挑战:

  • 开发模式需要相应调整,首先要从“纵切”的开发思维转变成“横切”的思维。
  • 跟以往相比,微服务的数量会大幅增加。
  • 数据增多导致了容器的编排、配置与资源的管理更为复杂。相对于过去只需管几台机器而言,如今如何搭配和配置各种微服务会变得更复杂。
  • 业务的容量管理变得更加困难,资源利用效率难以提升。以前我们只需要监控某几台机器的使用率。
  • 如今,由于容器存在多台服务器上,就需要对容器里各种服务的资源利用率和容量进行综合管理,同时对它们的提升难度也更大了。
  • 监控的颗粒度增多,依赖及关联关系更加复杂。由于微服务的增多,监控的颗粒也相应有所增加。如上图右侧所示,颗粒之间的关联关系也会变得更加复杂。
  • 在微服务出现故障时,我们要有快速调度的能力,因此调度需要更精细化。

微服务架构下的运维思考

下面是我在微服务架构下的一些运维思考:

  • 容量管理,即:如何在细粒度的状态下,更有效地管理数量庞大的微服务。
  • 容器编排与配置管理,如何合理地实现容器编排和配置管理?
  • 服务监控,如何有效地监控数量庞大的微服务?
  • 故障恢复与业务调度,出现故障时如何进行业务调度?
  • 快速扩展,由于春节红包或直播所导致的业务爆炸式增长或触发时,如何快速扩容?
  • 资源的利用效率,运维人员需要思考如何在保障业务稳定发展的同时,控制好成本不会大幅增长,资源不会出现简单堆砌。

微服务架构运维的解决之道

下面先以微信为例,讲解它使用到微服务架构的地方,接着介绍我们在微服务容量管理方面的具体工作,然后给大家分享在监控部署调度上值得参考的地方,最后探讨我们在资源利用率上的精细化运营。

微信为什么要微服务云化

自 2011 年诞生以来,微信一直强调使用快速迭代、试错、纠正的敏捷开发模式,也就是我们常说的“小步快跑”方式。

在微信内部有四个“法器”,分别是:

  • 大系统小做
  • 让一切可扩展
  • 有基础的组件
  • 能够轻松地上线

大系统小做,不仅涉及到将海量系统中的模块变得更清晰,而且在物理环境中实现分开独立的部署,以便快速发现问题。

例如:一些公共服务的注册登录、LBS 的逻辑、和类似微信的摇一摇等方面,我们都将这些逻辑独立了出来。

让一切可扩展,此处强调两个方面:

  • 网络协议的扩展。通过向前兼容,以应对将来可能出现的升级。
  • 数据存储的扩展。传统的 MySQL 之类的结构化数据存储,对于后期频繁增加字段的扩展性并不方便。因此微信采用的是 Key-Value 的非结构化数据结构,以方便存储上的扩展。

在 2013 年到 2014 年间,微信的微服务模块数已超过了 5000 个,我们碰到过两个问题:

  • 如果在一台硬件能力超强的服务器上只部署一个模块,则势必造成资源浪费。因此我们采用了混合部署,在一个服务器上部署多个服务。
  • 多个服务在一台服务器上抢资源,从而影响了服务的稳定性。因此我们采用了容器隔离。

有基础的组件,把复杂的逻辑固化下来,成为基础性软件。在微信的后台会有几种不同的基础组件,大致包括:

  • Svrkit,Client/Server自动代码生成框架,实现 10 分钟搭建内部服务器。
  • LogicServer,逻辑容器:随时添加新逻辑。
  • OssAgent,监控/统计框架:所见即所得的监控报表。
  • 存储组件,屏蔽容灾/扩容等复杂问题。

微信微服务架构的应用与管理

我们对微信里的各个微服务应用场景进行了定义:

  • 服务布局,就是将用户运用不同的方法与服务维度进行“切割”和布局。
  • 引入各种容错机制,如:当服务访问中断时,可自动重试;当服务运能不够时,有过载保护和负载均衡;在必要时,可随时关闭服务,实现柔性可用。
  • 容量管理与监控。
  • 部署管理与调度。
  • 精细化运营。

我们对微服务也进行了技术分层:

  • 接入层,主要实现对用户的切分,以识别不同的运营商和不同的地域。
  • 逻辑层,在微信中,微服务被更多地应用在逻辑层。
  • 存储层,主要应对海量数据,以及独占资源的情况。

服务布局

微信采用多地自治、园区互备的架构,城市之间的数据是相对独立的。除了少数账号全球同步以外,大部分业务都以电子邮件式的服务,各自有自身的环境在流转和通信。城市间的后备则使用公网的 UDP 通道。

在城市内,使用三园区的架构,每个园区都是一套独立的系统,从接入、逻辑、存储每一层都是完全独立的,并且可以互相为对方提供备份,多园区形成整体服务规模。

在园区内,由多机组成的 set,互为容错,包含它们的网络与电力也是独立的。这样的服务布局,不仅满足微服务架构,也考虑了容灾能力。

过载保护

过载保护是一个非常核心的微服务架构特性,目的是确保核心服务可用。

它包括三个层次:

  • 服务要有轻重分离。即一个服务里不能既有重的操作,又有轻的操作。
  • 队列控制。我们通过监控,来了解一个请求在队列中等待的平均时间,从而决定是否要启动拒绝或是限流。例如:对超过设定阀值的流量进行限制,确保服务可用。
  • 组合命令式。由于微服务的调用链以及层次的增多,后端服务也会有多种。假定后端有两个服务(A 服务与 B 服务),而前端调用需要依赖于 A、B 服务的组合结果,那么单个 A 或者单个 B 的轻微过载,就可能导致前端服务不可用。

在这种情况下,需要有一个反馈机制。如上图所示,整个系统基于反馈,把整个拒绝的信息全程传递。上图右侧是几个典型的服务,从一个 CGI 调用一个后台服务,再调用另一个后台服务,系统会在 CGI 层面把它的重要程度往下传。

回到刚才前端调用 A、B 服务的例子,使用这样一种重要程度的传递,就可以直接拒绝那些相同用户的 20% 的请求,有效地解决单个服务轻微过载的问题。

容量管理

为了在微服务架构下实行较好的容量关系,微信做到了三个前提:

  • 微服务间资源进行隔离管理
  • 微服务的过载有自我保护能力
  • 服务的快速伸缩操作

容量管理是为了更好地进行业务支撑,因此我们构建了需要支撑的业务与其容量之间的模型关系,从而有效地评估出那些有效的微服务所对应的容量。

如上图所示,下方的灰色线表示实际业务的容量,即业务量,如:请求量、调用量、以及用户数。

红色线表示在机器扩容或升级之后的现网容量。绿色线则表示最优容量,它比现网容量要高出 20%,以保证只是偶尔被触发。

当业务需求超过现有容量时,业务就可能出现不稳定或者无法提供服务的情况。而扩容则往往涉及到复杂的数学运算。

因此由于现实中资源的采购、部署与上架存在周期,不大可能完全达到该绿色曲线。

随着公有云被广泛地运用,我们基本上能够实现及时获取容量资源。当然要保证具有较好的业务支撑的话,应当具有容量的发现能力和适当的处理效率。

在实际进行容量评估的时候,可能会碰到如上图所示的“坑点”:我们可能会将容量误解为左边的线性关系。

在某些时候,使用量上升到 60% 之前还是处于线性,可一旦升至 65% 或 80% 时,就会维持那么多且再也上不去了,如右边的容量模型所示。

所以说容量评估的困难之处就在于:一个应用或一个微服务在使用资源时会受到诸如:CPU、内存、网络、以及磁盘 I/O 等多种因素的制约。

因此,我们应当去熟悉某个微服务主要消耗资源的关键点,以及它与其他资源之间的关系。

针对容量的评估,同样在微信中引入了压测。如图所示,我们有四种模拟测试的方案:

  • 模拟流量到测试环境,它对现网不产生影响。这往往由测试团队来操作。
  • 真实流量到测试环境,即运用 TCP 协议复制一份流量到测试环境。许多电商经常在一些大促之前,会把一些真实的流量引到测试环境之中,以检验系统到底能支撑多久。这往往由运维和开发协同执行。
  • 模拟流量到现网环境,这种并不常见。
  • 真实流量到真实环境,这是在微信中使用最多主要的现网压测方式。该方法虽然最真实、且对容量的评估也最准确,但也会有最大的风险。它可能会引发故障,并考验我们及时发现故障点的能力。

压测具有双面性,好的一面在于:有助于我们发现过去未曾注意的底层问题;不好的一面,则是在出现问题之后,我们可能无法快速地恢复,有时甚至并非将流量撤掉那么简单。

因为一旦某个服务崩溃了,则需要花时间和精力重新启动它。因此我们在做真实压测时,会特别注意上图所列的三点。

上图展示了过载保护的机制。当有更多的流量抵达时,过剩的流量会被直接拒绝掉,显然我们也可籍此测算出其真实的流量大小。

可见过载保护,或称快速拒绝是在微服务架构下做好容量管理的重要前提。如果没有该保护,将很难评估现网容量的门限。

微服务监控

微信实现了对于微服务的立体化监控,监控的内容包括:

  • 常规指标,如 CPU、内存、网卡等。
  • 快速拒绝的数量级,通过该数量级,可以进一步评估受影响的用户量。
  • 耗时方面的精确数据。
  • 调用失败的次数、重试的次数。

这些在监控上都有一些数据来上报及展现。由于我们监控指标非常多,同时伴随着微服务的增多,其产生的报警数量也会呈爆炸式增长。因此需要有智慧化的运维,通过 AI 应用去收敛各种报警。

就监控能力而言,我们为每台机器都部署了 Agent。这些 Agent 的监控粒度比较密集,能够达到秒级监控。与此同时,它们的数据上报能力也较为迅速。

业务部署与调度

容器的编排是微服务的一个重要方面,不同于 Docker,微信采用的是自研的 svrkit 架构,它参考了 borg/yarn/k8s/mesos 等主流调度系统的特点,该容器调度的微服务覆盖率超过 80%。

微信的容器调度系统叫做 yard。如上图下方所示,它分为两层架构:

  • Resource Manager 和 Node Manager,负责资源管理。
  • Application Master 和 API/Query Server,负责作业管理。

资源管理的监控能够决定出:在哪个容器中将哪个应用“拉起来”,而在哪个容器里将其“下线”。

虽然该容器编排架构属于微信自研、且尚未对外开放,但是其调度能力已逐步开放到了腾讯云之上。

腾讯云提供了包括集群管理、资源调度、以及镜像仓库等方面的结合。其对应的产品包括 CCS(容器管理)、API 网关、以及分布式微服务的架构管理等。

微服务精细化运营

精细化运营要做到对资源进行“削峰填谷”。通过了解业务的特性,掌握每个业务峰值的不同时间,从而将资源尽可能控制在上图的蓝色线条附近。

例如:微信的游戏里有一个功能模块,在凌晨零点的时候开始新发礼品。此时该模块对于资源的需求会剧增,而同一时刻其他模块的资源消耗并不多。

因此我们就可以把该游戏发礼品的微服务部署到其他模块服务器资源之上,从而削除它的峰值,达到了错峰服务的效果。

我们在许多场景中会用到离线计算,如:各种日志分析、应用数据分析、以及人工智能方面的训练。

这些都是可以使用到离线计算的业务,多数不需要实时,它们都可以被部署在资源谷底的时候。

微服务的未来演进

我们采用微服务架构之后,有些问题也值得我们去认真思考:

  • 微服务这么多,我们能否延用以往的 CMDB 方式进行有效地管理呢?特别是那些放在公有云端的微服务,如何将它们纳入现有的 CMDB 呢?
  • 是否有更好的微服务管理工具,来实现服务可视化、消息跟踪和智能故障检测?
  • 是否有微服务的应用商店,来帮助我们快速地开发各种应用?

熊普江,腾讯公司资深架构师 ,负责公司腾讯云技术、解决方案布道与技术架构评审等工作。腾讯公司级课程讲师,GITC 专家顾问,WOT 特约讲师,GOPS 金牌讲师。自 1997 年涉足互联网,曾服务美国 Supreme、太平洋网络、PPTV 等互联网公司,任网络运营总监、运维总监等职务。近 20 年互联网从业背景,对大型网络架构规划与建设,海量用户平台规划与运营技术支持,超大规模业务资源规划与技术架构管理优化有丰富的经验。

【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】

【编辑推荐】

  1. 旧 CPU 架构将在 Linux 中失去支持,可节省 50 万行代码
  2. 让Linux内核变小 与旧CPU架构说再见!
  3. 解决IT运维人员之痛:京东云自动化运维体系构建实践
  4. 阿里DevOps转型之后,运维平台如何建设?
  5. 29条运维工程师必会实用Linux命令
【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

网管员世界2007超值精华本

《网管员世界》是国内唯一一家专门面向网管员职业的刊物。本书是2006年《网管员世界》各期内容的汇集,内容权威、全面、时效性强,贴近应用...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊