低成本服务解决方案

简介:

    做服务无非就那几步,启动端口监听、接收请求数据、分配资源受理,反馈应答数据,关闭释放资源。一个优秀的服务端实现要考虑并发处理和对共享资源控制还是要费点心思的。Linux下提供了一个基于xinetd服务的低成本小制作解决方案,用起来超方便,优缺点放最后总结欢迎点评。

0001:	/****************************************/
0002:	/*	Author:	gong_libin		*/
0003:	/*	Date:	2000_01_01		*/
0004:	/*	File:	GDeamon.c		*/
0005:	/****************************************/
0006:	
0007:	/**
0008:	 * /etc/xinetd.d/GDeamon
0009:	 * service GDeamon
0010:	 * {
0011:	 * 	flags		= REUSE
0012:	 * 	socket_type	= stream
0013:	 * 	wait		= no
0014:	 * 	user		= root
0015:	 * 	server		= /usr/bin/GDeamon
0016:	 * 	log_on_failure	+= USERID
0017:	 * 	disable		= no
0018:	 * }
0019:	 *
0020:	 * /etc/services
0021:	 * GDeamon	321/tcp	# The GDeamon Protocol
0022:	*/
0023:	
0024:	#include <stdio.h>
0025:	#include <stdlib.h>
0026:	#include <string.h>
0027:	#include <unistd.h>
0028:	#include <fcntl.h>
0029:	#include <time.h>
0030:	
0031:	#define	G_STDIN			stdin
0032:	#define	G_STDOUT		stdout
0033:	#define	G_STDERR		stderr
0034:	
0035:	#define	G_TIMOUT		10
0036:	#define	G_PACKET		1024
0037:	#define	G_RESULT		G_PACKET * G_PACKET
0038:	
0039:	int main(int argc, char* argv[])
0040:	{
0041:		FILE* pstPipe = NULL;
0042:		time_t ulTime = time(NULL);
0043:		char szPacket[G_PACKET] = {0};
0044:		char szResult[G_RESULT] = {0};
0045:		int iCount = 0, iTotal = 0, iLength = 0;
0046:	
0047:		close(fileno(G_STDERR));
0048:		fcntl(fileno(G_STDIN), F_SETFL, O_NONBLOCK);
0049:	
0050:		if (fread(&iLength, sizeof(int), 1, G_STDIN) > 0) {
0051:			while (iTotal < iLength) {
0052:				if (time(NULL) - ulTime > G_TIMOUT) {
0053:					printf("数据接收超时");
0054:					break;
0055:				}
0056:				if ((iCount = fread(&szPacket[iTotal], sizeof(char), G_PACKET - iTotal, G_STDIN)) > 0) {
0057:					iTotal += iCount;
0058:				}
0059:			}
0060:			if (iLength == strlen(szPacket)) {
0061:				if (NULL != (pstPipe = popen(szPacket, "r"))) {
0062:					if (NULL != fgets(szResult, G_PACKET, pstPipe)) {
0063:						printf("%s", szResult);
0064:					}
0065:					pclose(pstPipe);
0066:				}
0067:				else {
0068:					printf("命令执行失败");
0069:				}
0070:			}
0071:			else {
0072:				printf("数据长度错误");
0073:			}
0074:		}
0075:	
0076:		return 0;
0077:	}

    009-018定义配置文件/etc/xinetd.d/Gdeamon,通知系统允许端口复用、传输层是TCP协议、不等待进程终止、进程归属root用户、执行程序存放路径等信息。

    021行追加到/etc/services文件中,通知系统传输层协议类型和监听端口及服务名称。

    047行关闭错误输出免得添乱,48行设置标准输入为非阻塞模式。

    050行从标准输入读取一个整形,在这个用例中这个整形用于表示后面数据的长度。

    051-059行根据上面整形值循环读取数据直到读取完毕或超时为止。

    060行判断读取数据的完整性。

    061-069把用户发送过来的指令提交系统执行并通过管道获取执行结果。

    063行把执行结果通过标准输出返回。

    完事了就这么简单省心省力满足并发处理资源回收完全不操心,监听端口监听到连接的时候会fork子进程,同时把子连接的套接字传下去,并把读写操作重定向到标准输入输出上,真欣赏这种简单粗暴而又行之有效的做法。用例仅供参考,至于通信协议和异常机制没做过多处理,需要自己加吧。

    优点:开发便利快捷,重点可放在业务流的上,处理并发量不大逻辑不复杂的接口半天时间连调带测足够;不仅支持tcp协议也支持udp协议,可以节省大量服务框架代码的开发工作量;

    缺点:并发量一大力不从心,响应不够快速高效,在线调测不够方便;

    今晚有雨出门带伞~

相关文章
|
3月前
|
消息中间件 运维 关系型数据库
超低运维成本,构建自有高性能商业充电运营平台
奥升新能源技术服务平台,致力于高性能高费效比技术框架研发与实施,致力于为客户提供性价比最优的技术解决方案和运维服务。
|
6月前
|
存储 人工智能 运维
【云原生企业级数据湖:打破数据孤岛,优化存储成本】
【云原生企业级数据湖:打破数据孤岛,优化存储成本】 随着大数据时代的到来,企业对于数据的处理和存储需求日益增长。如何有效地存储和管理大量数据,同时降低运维成本,成为了企业面临的一大挑战。盛通教育的云原生企业级数据湖方案,正是为了解决这一问题而设计的。
208 1
|
11月前
|
存储 弹性计算 容灾
云端有什么优势
云端有什么优势
|
SQL 运维 Oracle
云上“升舱”,升级到速度更快,功能更全面,性价比更高的数仓平台
阿里云AnalyticDB“升舱”活动致力于帮助您将线下或自建的数仓全面迁移至云原生架构之上,享受全托管的使用体验;为企业构建数据平台带来速度更快,功能更全面,性价比更高的数据平台
云上“升舱”,升级到速度更快,功能更全面,性价比更高的数仓平台
|
存储 NoSQL Cloud Native
阿里云:加大NoSQL数据库软硬件一体化技术自研
8月25日,在天池平台与阿里云数据库事业部联合主办的阿里云NoSQL数据库峰会上,阿里云公布NoSQL数据库自研2.0计划,进一步加大软硬件一体化技术体系的自研力度,通过聚焦软硬协同、多模融合、云原生三大方向,提升云原生内存数据库Tair、云原生多模数据库Lindorm等NoSQL数据库产品核心竞争力。
706 0
阿里云:加大NoSQL数据库软硬件一体化技术自研
|
消息中间件 机器学习/深度学习 弹性计算
云上高弹性,低成本的解决方案|学习笔记
快速学习 云上高弹性,低成本的解决方案
247 0
云上高弹性,低成本的解决方案|学习笔记
|
存储 数据采集 人工智能
灵活架构与超高性价比,数据湖解决方案助力AI技术实现落地应用
阿里云针对AI行业的痛点,推出了AI行业的数据湖解决方案,该解决方案的核心是通过数据湖一体化的能力,轻松对接各种计算与处理引擎,直接在数据湖中对数据进行分析。
9701 0
灵活架构与超高性价比,数据湖解决方案助力AI技术实现落地应用
|
存储 分布式计算 安全
SaaS模式云数据仓库MaxCompute发布企业级新能力:兼顾成本与性能,持续保护云上数据及服务安全
2020年6月9日,阿里云MaxCompute全新发布企业级新能力,在成本、性能、安全方面,持续定义企业级SaaS模式云数据仓库,通过 “云数据仓库+” 的新模式,帮助企业实现数字经济新优势。
673 0
SaaS模式云数据仓库MaxCompute发布企业级新能力:兼顾成本与性能,持续保护云上数据及服务安全
|
存储 传感器 边缘计算
如何为智慧城市打造低成本的数据存储基础架构?
支撑智慧城市的数据存储网络的价格可能过高,但是自动化存储技术与合理的计划和设计相结合,可以帮助克服这一挑战。
|
数据采集 安全 网络安全
揭秘政企安全加速解决方案的架构与应用场景实践
5月20日,阿里云政企安全加速解决方案正式发布。该解决方案是阿里云CDN联合云安全, 一同打造的分发加速+安全一站式服务,旨在帮助政府、金融、传媒、传统企业顺利开展线上业务, 有效解决内容分发链路上安全和加速性能的问题。
1247 0