文档章节

理想的互联网服务后台框架的九个要点

互动互
 互动互
发布于 2017/04/01 17:44
字数 1474
阅读 7
收藏 0

理想的互联网服务后台框架的九个要点
对于互联网服务后台团队,开发框架的选择是非常关键的一个问题,多年的海量服务经验和教训使得我们团队深刻的认识到:

  • 要尽早规范团队的开发服务框架,避免到了后期,各种开发语言混杂、各类存储组件充斥、重复编码、每个模块形态不统一、文档缺失、监控瘫痪、人员离职造成大量信息丢失,最后积重难返、痛苦不堪。

  • 没有框架来规范,团队的随意性就太大,合作效率就大打折扣,甚至于内耗、反复的挖坑填坑,系统的成败过于依靠人的意识和水平。

  • 规范,不能靠文档、不能靠劳动纪律、不能靠苦口婆心、不能靠人员意识、不能靠运动式的整顿,要靠技术框架上切实的限制与贴心保护。

如果有机会从0开始定义一个理想的开发框架,需要考虑哪些点?我们觉得主要有如下9个方面:

  1. 【同步编码异步执行】兼顾运行效率和编码效率,希望代码写起来是同步和顺序的,而执行的时候是异步的

  2. 【IDL/RPC】支持IDL(接口描述语言)和RPC,减少网络协议相关的重复工作,协议有比较好的扩展性;远程调用友好且高效,做到覆盖主要的开发语言

  3. 【LB】对服务间的调用选路进行统一的管理,对单机故障和网络波动等常见情况有自动容错,我们简称load balance(LB)

  4. 【 存储服务化】这个其实和开发框架关系不太紧密,这里提一下,强调存储应该有统一的组件且由专业的团队运维,就像共有云一样

  5. 【过载保护】框架必须有成熟自带的过载保护机制,不需要业务开发人员关注或者关注很少

  6. 【基础的监控和告警】RPC调用、机器的cpu/网络活动、任务并发度、时延、进程监控和秒起等基础信息,要有上报、统计和告警,不需要业务开发人员关注。

  7. 【完整的业务流转呈现】统一日志,在一个地方能够清晰的呈现某次业务处理过程的流转详细情况:经过了哪些模块间调用,调用参数是怎样的,每个模块处理的重要分支和结果是怎样的,最好图形化呈现。支持染色和不同的日志详细级别

  8. 【中央总控】整个系统的配置和文档等重要信息,例如每个模块有哪些机器,分布在哪些机房、容量冗余情况、模块间调用关系、访问控制的配置动态管理甚至电子流,都希望能统一在一个地方web化的管理起来,并且与运营的系统是直接联系直接生效的

  9. 【云调度】容量的自动调度。例如要进行某个运营活动需要大量的扩容,只需要把设备放进去,就能自动的扩缩容。当某个城市机房故障,能够自动调度容量到其他城市

基于上面的总结,我们团队开源了一个服务开发运营框架,叫做毫秒服务引擎

毫秒服务引擎(msec, 取英文名Mass Service Engine in Cluster的首字母组合)是腾讯的一个开源框架,集RPC、名字发现服务、负载均衡、业务监控、灰度发布、容量管理、日志管理、key-value存储于一体,目的是提高开发与运营的效率和质量。

毫秒服务引擎的创作冲动和构建经验,来自QQ后台团队超过10年的运营思考。它是一整套解决方案,但也可以拆分的来使用其中的监控、key-value存储单品。

详细可见官网,或在腾讯云服务市场联系我们

典型用户群体

使用毫秒服务引擎,用户可以快速拥有一套具备监控、名字发现服务、负载均衡、灰度发布、配置管理、日志、kv存储等功能的系统化的开发与运营框架,特别适合互联网初创公司。

毫秒服务引擎非常容易搭建和上手,使用它,初学者从零开始开发一个分布式后台demo并运行起来,只需要2个小时。基本上是一个小时完成框架搭建,一个小时完成开发上线。

功能与优势

  1. 模块间访问采用RPC的方式,开发者不用关注网络与报文格式,像写单机程序一样开发分布式服务

  2. 负载自动均衡与容错,对于单机故障、局部网络波动等状况自动应对,服务高可用性

  3. 支持C/C++与java语言,后续还将继续丰富;如果选择C/C++语言,支持协程,兼具开发和运行效率

  4. Web化的管理界面,在web界面完成配置、发布、监控、日志、Key­-value存储集群管理等所有操作

  5. 需要复杂部署的服务器都采用docker镜像的方式安装,使得部署与上手非常容易

  6. 相比使用其他开源组件拼凑起来的解决方案,毫秒服务引擎更加的体系化,对团队的规范更加到位

  7. 给大家推荐一家做私有云并且还比较便宜的公司,cloudin云英,最近还在做活动,

    可以看一下试试https://www.cloudin.cn/

© 著作权归作者所有

互动互
粉丝 0
博文 7
码字总数 9032
作品 0
东城
运营/编辑
私信 提问
理想的互联网服务后台框架的九个要点

版权声明:本文由廖念波原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/146 来源:腾云阁 https://www.qcloud.com/community 理想的互联网服务后台框架...

偶素浅小浅
2016/11/06
23
0
[Android] 提升Android应用开发性能的十大要点

虽然Android智能手机和平板电脑的速度一天比一天快,但是开发者必须记住一点:他们开发的应用程序仍在一种资源紧张的环境下运行,这种环境主要依赖性能与最新的台式机或笔记本电脑无法比拟的...

android技术开发
2013/07/26
265
1
提升Android应用开发性能的十大要点

虽然Android智能手机和平板电脑的速度一天比一天快,但是开发者必须记住一点:他们开发的应用程序仍在一种资源紧张的环境下运行,这种环境主要依赖性能与最新的台式机或笔记本电脑无法比拟的...

带梦想一7飞
2012/08/24
850
0
开发者必知:提升Android应用开发性能的十大要点

随着任何一个移动平台不断发展、围绕它的应用程序不断改进,要想开发成功,质量变得至关重要。如今,用户们要求他们决定安装到自己设备上的Android应用程序反应迅即、性能合理。如果那些应用...

冯京宝
2012/07/05
128
0
redmine 3.2.1 邮件服务的配置要点

环境描述: 1、内网开发,不连接互联网; 2、人数低于100人,后台有windows服务器; 3、redmine 3.2.1; 4、邮件服务软件选择: 试了U-mail ,CMail,MDaemon,DreamServer;最终选择了Dream...

cmtoo
2016/11/16
951
1

没有更多内容

加载失败,请刷新页面

加载更多

Java FOR-EACH循环

FOR-EACH循环使得代码更加的简短,也让代码更加易懂,其实他并没有加入什么新的功能。他的功能完全可以用简单的FOR循环代替。 for-each的用法: int a[] = {1,2,3,4,5,6} for(int s:a){ Syst...

无名氏的程序员
24分钟前
3
0
使用HTML5的History API

本文转载于:专业的前端网站➣使用HTML5的History API   HTML5 History API提供了一种功能,能让开发人员在不刷新整个页面的情况下修改站点的URL。这个功能很有用,例如通过一段JavaScript代...

前端老手
26分钟前
4
0
JAVA 编写redisUtils工具类,防止高并发获取缓存出现并发问题

import lombok.extern.slf4j.Slf4j;import org.springframework.data.redis.core.BoundHashOperations;import org.springframework.data.redis.core.BoundValueOperations;import org.......

huangkejie
今天
7
0
JMM内存模型(一)&volatile关键字的可见性

在说这个之前,我想先说一下计算机的内存模型: CPU在执行的时候,肯定要有数据,而数据在内存中放着呢,这里的内存就是计算机的物理内存,刚开始还好,但是随着技术的发展,CPU处理的速度越...

走向人生巅峰的大路
今天
99
0
你对AJAX认知有多少(2)?

接着昨日内容,我们几天继续探讨ajax的相关知识点 提到ajax下面几个问题又是必须要了解的啦~~~ 8、在浏览器端如何得到服务器端响应的XML数据。 通过XMLHttpRequest对象的responseXMl属性 9、 ...

理性思考
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部