腾讯微服务框架-MSEC(spp-rpc)

第一张:UML图

链接:https://www.processon.com/view/link/5852139ce4b05a02846e5c11

uml
(虚线表示基类)

不是我故意画得那么复杂,而是原本就那么复杂。

核心class介绍:

两个基类:

  • CFrame:框架公共类,主要包括框架日志对象、框架监控日志对象、框架统计对象;
  • CServerBase:服务器程序基础类,包含运行环境初始化、日志、统计、监控对象

三个进程,都继承以上两个基类:

  • controller进程:CDefaultCtrl类,主要负责controller,通过消息队列来监控proxy和worker的健康度
  • proxy进程:CDefaultProxy类,负责接受用户请求,讲请求数据写入到共享内存
  • worker进程: CDefaultWorker类,业务处理逻辑,从共享内存中读取请求数据,进行业务处理完成后,写回到共享内存。

其他核心class

  • CTCommu(通讯类抽象接口)
    • CTSockCommu(网络通信类):网络监听,接收网络请求,epoll操作
    • CShmCommu(共享内存操作类):共享内存相关操作类,和CTSockCommu都继承于CTCommu,也实现了poll方法,这里的poll只是从共享内存中获取数据,和unix底层的poll不同,比较容易误导.
  • CMQCommu(消息队列通讯类):controller进程通过消息队列**监控**proxy进程和worker进程.

启动后的进程:
启动后的进程

第二张: proxy接收客户端请求的流程是怎样的?

proxy
proxy

进程启动后,会生成有两个共享内存(shm),一个保存网络请求数据,另一个保存处理后的回包数据。
proxy进程主要的任务是两块:接收客户端请求 和 从共享内存取出处理完的数据回包给客户端:

(1)接收请求逻辑

proxy进程起来后,执行 CDefaultProxy 中的realrun方法, CDefaultProxy有两个核心成员变量:

CTCommu* ator_;//接受者
map

(2)回包逻辑

  1. 轮询shm。同样是在 CDefaultProxy 中的realrun方法中,it->second->poll(true)监听回包共享内存;
  2. 监听到有回包。CShmCommupoll方法,如果有mem_queue_pop_nm出来
  3. sendto回客户端。ctor_recvdata中CTSockCommu中的CTSockCommu

第三张: worker是如何处理业务请求的?

worker

如果理解了proxy的处理逻辑,那么再来看worker的逻辑就稍微简单了:
1. 从shm读取请求数据。
2. 调用执行业务代码。
3. 回写shm。
4. proxy从shm读取数据,响应给客户端。

转自: https://blog.csdn.net/qq_35440678/article/details/53749462

毫秒服务引擎(Mass Service Engine in Cluster)是一个开源框架,适用于在廉价机器组成的集群上开发和运营分布式后台服务。毫秒服务引擎集RPC、名字发现服务、负载均衡、业务监控、灰度发布、容量管理、日志管理、key-value存储于一体。         毫秒服务引擎的创作冲动和构建经验,来自QQ后台团队超过10年的运营思考。它是一整套解决方案,但也可以拆分的来使用其中的监控、key-value存储单品。  应用场景web console:整个系统的运营管理中心。 主要是:① LB是名字发现服务和负载均衡。② remote_shell是远程文件传输与远程命令执行服务。③ tomcat提供web管理界面,管理的数据保存在mysql里。业务运营服务器:部署开发框架和业务逻辑代码,处理业务请求。log服务器:提供业务log的存储和查询服务。Log存储在mysql表里。monitor服务器:提供业务上报信息的存储和查询服务。业务上报信息存储在内存里,推荐内存8G~16G。定时dump到磁盘的方式防止数据掉电丢失。key-value存储服务:相对整个框架比较独立,按需选用。典型用户群体使用毫秒服务引擎,用户可以快速拥有一套具备监控、名字发现服务、负载均衡、灰度发布、配置管理、日志、kv存储等功能的系统化的开发与运营框架,特别适合互联网初创公司。10年的海量服务开发运营经验和教训使得我们深刻的认识到:要尽早规范团队的开发服务框架,避免到了后期,各种开发语言混杂、各类存储组件充斥、重复编码、每个模块形态不统一、文档缺失、监控瘫痪、人员离职造成大量信息丢失,最后积重难返、痛苦不堪。没有框架来规范,团队的随意性就太大,合作效率就大打折扣,甚至于内耗、反复的挖坑填坑,系统的成败过于依靠人的意识和水平。规范,不能靠文档、不能靠劳动纪律、不能靠苦口婆心、不能靠人员意识、不能靠运动式的整顿,要靠技术框架上切实的限制与贴心保护。特点与优势模块间访问采用RPC的方式,开发者不用关注网络与报文格式,像写单机程序一样开发分布式服务。负载自动均衡与容错,对于单机故障、局部网络波动等状况自动应对,服务高可用性。支持C/C 与Java语言,后续还将继续丰富;如果选择C/C 语言,支持协程,兼具开发和运行效率。Web化的管理界面,在web界面完成配置、发布、监控、日志、Key-value存储集群管理等所有操作。需要复杂部署的服务器都采用Docker镜像的方式安装,使得部署与上手非常容易。相比使用其他开源组件拼凑起来的解决方案,毫秒服务引擎更加的体系化,对团队的规范更加到位。  标签:腾讯  msec
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值