后台服务标准化运营

版权声明:本文由廖念波原创文章,转载请注明出处: 
文章原文链接:https://www.qcloud.com/community/article/148

来源:腾云阁 https://www.qcloud.com/community

为什么要服务标准化

一套互联网后台服务的开发和运营涉及到非常多的细节:

  1. 访问其他服务模块,服务端IP如何管理?网络报文格式是怎样的?
  2. 有哪些配置文件? 用到哪些第三方的库?
  3. 业务逻辑和基础框架是如何分离的?
  4. 对外提供怎样的网络接口?怎么对外提供接口API和文档?
  5. 运营机器上的安装目录准备怎么安排? 有哪些运维脚本和工具?
  6. 应该监控哪些指标?应该记录哪些日志?
  7. 还有很多…

上面种种细节,每个程序员实现起来都有不同的做法。经验证明,如果后台各个模块没有标准化和规范化,可能导致:

  1. 同一个团队开发的服务,千差万别千奇百怪,负责运维的同事面对的多个模块“长”的都不一样,程序框架完全不一样,安装目录乱七八糟,无法规模化的高效运维
  2. 服务的质量完全依赖团队成员的技能和意识,有的成员可能会做得比较好,配置文件命名易懂、文档及时更新与代码保持一致、有对服务做细致的监控上报和日志记录,提供了运维脚本,但是也有的成员的工作让人抓狂
  3. 每当有团队成员离职和工作交接,交接本身就是工作量很大,交接时间长,交接质量不好,文档缺失,很多信息在交接过程中丢失,运营事故往往频发
  4. 经验难以得到传承,一块石头反复绊倒各个成员和业务模块,运营事故雷同、频出,团队挫折感倍增、服务可用性低下
  5. 也曾经有过做事比较规范的时候,但是这些规范通常靠耳提面命、人口相传,靠管理者运动式的整顿,有时候管理焦点没有持续跟进,或者随着人员更替,团队又把这些宝贵的经验丢弃了,变得无序

所以服务标准化是后台技术团队组建开始的第一要务。

几个误区

误区一:找几个开源的组件用起来就好了呗

通常的开源的组件,只是在某一方面上规范了服务,有的是规范了网络调用,有的是规范了如何监控,有的是规范了如何记录远程记录,其实这还远远不够,例如配置文件、接口定义、使用到的外部库、安装目录的结构等非常多的细节,必须统一管理、有唯一出处。

误区二:你说的我都懂,我们团队刚起步,业务需求多,时间紧,先野蛮生长,打破条条框框,后面再规范再改

一开始没有标准化,后面当代码和模块都多起来了,且都处于运营状态,再改再标准化,难度非常大,成本非常大,风险非常大;另外工欲善其事必先利其器,一开始就标准化好,其实可以让业务跑的更快

毫秒服务引擎(msec, 取英文名Mass Service Engine in Cluster的首字母组合)是腾讯一个开源框架,其创作冲动和构建经验,来自QQ后台团队超过10年的运营思考。服务标准化是毫秒服务引擎设计的重要考量点。

毫秒引擎怎么实现服务标准化?

首先,每个服务的配置都web化、集中管理起来,包括:

  1. 部署在哪些IP上?
  2. 有且只有一个配置文件
  3. Protocol buffer的接口定义文件
  4. 引用了哪些外部库?例如openssl
  5. 业务逻辑和基础框架分离,业务逻辑以插件形式提供

    然后,每个业务模块部署的目录结构都是确定的:

如上图所示,

  1. 业务部署的目录都是/msec/一级业务名/二级业务名
  2. 都包含bin etc log 等几个目录
  3. ein里面是启停脚本、业务插件msec.so和外部库(如果有)
  4. etc里面是配置文件config.ini
  5. log里面是本地的日志文件

另外,程序员不能随意打破上面的方式。例如临时的另外搞一个自己配置文件什么的,他如果这样做,那下次发布的时候目录会被覆盖,个性化的东西会被删除掉

结语

由于篇幅和时间的限制,这里不能展开阐述。详细的可以见腾讯云服务市场毫秒服务引擎官网,或者微信公众号:msec-engine

时间: 2024-07-29 21:33:37

后台服务标准化运营的相关文章

问题解决系列: 后台服务流量控制- 控制访问别的服务的速度

互联网的后台提倡大系统小做,微服务化.所以后台服务之间相互依赖,我依赖别人的,别人也依赖我的,这很正常. 但是后台服务讲稳定性.只有一切可控,才能谈稳定性. 为了不冲垮下游的服务,我们有两种做法:一种是下游服务做一个自我保护(具体实现方法下次再写),一种是上游保护下游. 比如A服务向B服务发送消息,B给A分配了每分钟3000条消息的访问量.那么A如何控制自己每分钟的访问量在3000次以内呢? 基本思路: 这是个分布式的问题,A服务可能包含了堕胎机器,所有的机器共享一个设定的配额 3000次/每分

highchart访问一次后台服务返回多张图表数据

本文承接上一篇,我们制作动态图表的时候,往往需要的不止一张图表,如果每张图表都与服务接口做一次交互的话未免太过频繁,这无论对前后还是后台都是一种压力,本文介绍一种一次访问返回多组数据的方式来减少前台与后台服务的交互,闲话少说,查看动态效果  →.→ 详细代码 ←.← 如上文所示,highchart 的 chart 属性可以添加 events 事件,上文中我们插入的事件为: events: { load: function () { var series = this.series[0]; var

android如何做到类似于微信那样后台服务不会被杀死?

问题描述 正在做一款锁屏应用. 做锁屏肯定用到了service,可是我发现每日手动点击自带的内存清理按钮的时候,我的那个service总是会被杀死. 而微信的后台服务却是一直正常的运行,不会被杀掉. 360的话也不会被杀死,但是360会重新启动.而且360的是两个后台服务,我猜有可能会相互作用的,杀死一个的时候另一个接收到广播把其重启. 尝试过用startForeground以及提高service优先级的方式,发现都不行,service都会被杀死. 反编译了一下微信的代码. 请大家帮忙想想办法吧

Android四大组件——Service后台服务、前台服务、IntentService、跨进程服务、无障碍服务、系统服务

Service后台服务.前台服务.IntentService.跨进程服务.无障碍服务.系统服务 本篇文章包括以下内容: 前言 Service的简介 后台服务 不可交互的后台服务 可交互的后台服务 混合性交互的后台服务 前台服务 IntentService AIDL跨进程服务 AccessibilityService无障碍服务 系统服务 部分源码下载 前言 作为四大组件之一的Service类,是面试和笔试的必备关卡,我把我所学到的东西总结了一遍,相信你看了之后你会对Service娓娓道来,在以后遇

你用什么作为app应用的后台服务?

?? 你用什么作为app应用的后台服务? Ruby on Rails还是PHP? PHP+Mysql作为Android app的后台:http://www.tutorialspoint.com/android/android_php_mysql.htm PHP+Mysql作为IOS app的web service后台: http://www.raywenderlich.com/2941/how-to-write-a-simple-phpmysql-web-service-for-an-ios-a

app后台服务

一个免费的后台服务 能够上传保存数据和获取后台数据,支持推送服务,相当于一个简单的后台.基本能够满足小型app的后端需求. https://www.parse.com/ 注册后就可以创建app. 添加parse库的方法: 1. 添加sdk库到工程 2.下述系统库 AudioToolbox.framework CFNetwork.framework CoreGraphics.framework CoreLocation.framework MobileCoreServices.framework

rysnc详解以及rysnc后台服务配置

rysnc是linux系统下数据备份工具之一.字面理解就是remote sync(远程同步).备份数据是多数系统管理员的必备日常工作.不仅仅要备份本地文件,还要对web服务器或者远端数据进行备份,这就需要我们熟练的掌握rysnc工具,rysnc不仅仅能对不同位置的文件和目录进行同步,还可以差异计算,压缩传输文件来最小化数据传输,和cp命令相比,rysnc的优势在于搞笑的差异算法.并且,rysnc还支持网络数据传输,在复制文件的同时,会把源端与目的端的文件进行比较,只有当文件不一样的时候在进行复制

xunsearch: 开启后台服务,索引……随笔记录

重启后台服务: cd $prefix ; bin/xs-ctl.sh restart 索引: # 导入 MySQL 数据库的 dbname.tbl_post 表到 demo 项目中,并且平滑重建 util/Indexer.php --rebuild --source=mysql://root:[email protected]/dbname --sql="SELECT * FROM tbl_post" --project=demo

Android Services (后台服务)

一.简介 服务是可以在后台执行长时间运行的应用程序组件,它不提供用户界面. 另一个应用程序组件可以启动一个服务,并且即使用户切换到另一个应用程序,它仍然在后台运行. 另外,组件可以绑定到一个服务来与它进行交互,甚至执行进程间通信(IPC). 例如,服务可以从后台处理网络交易,播放音乐,执行文件I / O或与内容提供商交互. 这些是三种不同类型的服务: Scheduled(计划的服务)--- Android 5.0后可用当在Android 5.0(API级别21)中引入的诸如JobSchedule