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

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

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

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

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

如果有机会从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. 相比使用其他开源组件拼凑起来的解决方案,毫秒服务引擎更加的体系化,对团队的规范更加到位

 原文地址: https://www.qcloud.com/community/article/146


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/327580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 无线网卡驱动桥转发,引用和完美转发

# 右值引用 移动语意~~~右值引用解决了左值引用无法传递临时对象和常引用传递的对象只读的问题. 右值引用允许传递一个可变的临时对象引用.移动构造使用移动而非赋值语义完成构造过程, 主要用于解决函数返回值时的大量深拷贝开销.#include int main(void){int a 30;int &b…

虚拟机安装centeros7 无法连接网络 virsh命令找不到 删除多余的vir0 不然dubbo会有问题

进入linux ping www.baidu.com 无法访问 cd /etc/sysconfig/network-scripts vi ifcfg-ens33 修改这个文件 onbootyes 原来是on shutdown -h now 关机 然后重启虚拟机 再次ping ping www.baidu.com 就通了 https://www.zhihu.com/question/53708440 virsh命令找…

Java集合之EnumSet

转载自 Java集合之EnumSet EnumSet EnumSet 是一个专为枚举设计的集合类,EnumSet中的所有元素都必须是指定枚举类型的枚举值,该枚举类型在创建EnumSet时显式或隐式地指定。 EnumSet的集合元素也是有序的,EnumSet以枚举值在Enum类内的定义顺…

struts+hibernate+oracle+easyui实现lazyout组件的简单案例——OpSessionview实现

此过滤器的功能就是让Session始终保持着一个打开的状态: /** * Title: OpenSessionFilter.java * Package org.web * Description: TODO该方法的主要作用: * author A18ccms A18ccms_gmail_com * date 2017-4-19 下午6:51:37 * version V1.0 */ pa…

yaml配置文件整合Mybatis易错点

配置 mybatis:type-aliases-package: com.kuang.pojomapper-locations: classpath:mybatis/mapper/*.xml容易写成以下格式导致出错 mybatis:type-aliases-package: com.kuang.pojomapper-locations: classpath: mybatis/mapper/*.xml

Azure 部署 Asp.NET Core Web App

在云计算大行其道的时代,当你在部署一个网站时,第一选择肯定是各式各样的云端服务。那么究竟使用什么样的云端服务才能够以最快捷的方式部署一个 ASP.NET Core 的网站呢?Azure 的 Web App 服务是个很好的选择。 下面我们会通过 Visual Studio…

联想linux笔记本评测,联想(lenovo)G460AL-ITH Linux笔记本电脑CPU测试评测-ZOL中关村在线...

这颗英特尔最新的Core i5 430M双核心处理器基于32nm工艺,核心代号为Arrandate,主频为2.27GHz,共享的三级缓存为3MB。在开启睿频加速时,单核心的主频最高为2.53GHz,并且支持同步超线程技术。同时除了支持上一代处理器所…

SecureCRT连接Linux的操作步骤

https://www.cnblogs.com/Koma-vv/p/11100565.html SecureCRT连接Linux的操作步骤 虚拟机待机:Ctrlg进入 ipconfig是Windows里面的操作 ifconfig是Linux里面的操作 解决方法:右键: 打开终端是:在桌面上,鼠标右键才可…

聊聊并发(四)深入分析ConcurrentHashMap

转载自 聊聊并发(四)深入分析ConcurrentHashMap 术语定义 术语英文解释哈希算法hash algorithm是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。 哈希表hash table根据设定的哈希函数H(key)和处理冲突方法将一组…

struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Jsp页面

由于要导入好多js文件和cs文件,并且每个页面都需要导入,所以我把公共的导入js和css文件放在了一个jsp里面,在用到的里面直接导入即可, 此项目用到的js文件下载:这里 用到的css文件的下载:这里 公共的导…

整合MyBatis---SpringBoot

整合MyBatis 官方文档:http://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/ Maven仓库地址:https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter/2.1.1 整合测试 1、导入 MyBatis 所需…

c语言 葬礼分号,其实从C语言用分号结尾开始,就是一个悲剧了……

……我该说啥好呢,不懂 pascal 的是你http://www.freepascal.org/docs-html/ref/refsu46.html#x138-14800013.2.1http://www.freepascal.org/docs-html/ref/refsu48.html#x140-15000013.2.3http://www.dragonkiller.nl/Delphi/delphi2009.html#StatementListpascal …

IDEA 底部工具栏没有 Version Control 解决办法

IDEA 底部工具栏没有 Version Control 解决办法 百度了半天 都说VCS配置不对 但是默认IDEA是配置好的 根本不需要修改 忽然看到 工具栏的快捷键 于是 Alt 9 就出现了 完美

一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统

2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客。当然,我写博客也不是从2008年才开始的,在更早时候,也在CSDN和系统分析员协会(之后名为“希赛网”)个人空间发布过一些…

struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Action的实现类

主要的业务操作都在这个struts的Action里面,大家来看看: /** * Title: EmpAction.java * Package org.web * Description: TODO该方法的主要作用: * author A18ccms A18ccms_gmail_com * date 2017-4-19 下午8:37:00 * version V1.0 */…

聊聊并发-Java中的Copy-On-Write容器

转载自 聊聊并发-Java中的Copy-On-Write容器 Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后…

android 枚举类型比较大小写,Spring 3.0 MVC绑定枚举区分大小写

如果我有一个像这样的Spring控制器的RequestMapping ...RequestMapping(method RequestMethod.GET, value "{product}")public ModelAndView getPage(PathVariable Product product)产品是一个枚举。例如。 Product.Home当我请求该页面时,mysite.com/ho…

集成SpringSecurity---SpringBoot

集成SpringSecurity 安全简介 在 Web 开发中,安全一直是非常重要的一个方面。安全虽然属于应用的非功能性需求,但是应该在应用开发的初期就考虑进来。如果在应用开发的后期才考虑安全的问题,就可能陷入一个两难的境地:一方面&am…

OkHttp上传Json嵌套对象

public static DevInfoVo queryRCP() throws Exception {// 东八区时区Calendar cal Calendar.getInstance(TimeZone.getTimeZone("GMT8:00"));//JSONObject obj JSON.parseObject(JSON.toJSONString(pojo));JSONObject obj new JSONObject();obj.put("Autho…

大新闻!Magic Leap造假,HoloLens即将入华商用

昨天微软搞了大新闻,Terry和Alexi到了深圳,在WinHEC大会上宣布了2017上半年HoloLens正式入华商用。 而唯一竞争对手Magic Leap今天也被曝光其设备造假,各大科技媒体纷纷报道,部分相关报道如下: 【新浪科技】Magic Lea…