新闻动态
当前位置:   首页/开发运维 /初学服务器

初学服务器

发布日期:2019-09-12 17:08 | 文章来源:互联网

协议服务器

最近一哥们打算和我做个应用,我负责服务器。我一直搞前端的,服务器当真不太清楚,只是略知一二。接下来,就是到处看资料,学习服务器相关的知识,什么多线程,数据库,网络,日志,异常处理等,需要学的东西太多了。

数据库方面,本打算用mysql,研究了一段时间,最后选用了sqlserver。数据库与程序的交互,一般通过数据库提供商的接口,支持C++,C,java,PHP等很多种,也有支持ODBC,ADO的。关于ODBC和ADO,我的理解是对数据库接口的封装,对不同数据库,可以用标准的接口处理,而不依赖具体是哪儿数据库。我们选择了ADO,但是目前我对其使用掌握还不太好,之后进行研究。

服务器很重要的一个性能就是并发,主要是使用多线程和多进程,线程较为轻量,数据共享方便,但是编写难度较高。而多进程开销大些,数据独立,通信较麻烦。到底如何选择线程和进程,这个和程序的设计有关,也和CPU的核心数有关,目前还不能进行有效的分析。不过,我有这样的一点想法:对于单核CPU,使用多线程,除了网络部分,其实主要功能是区分模块,几乎是独立运行的模块。实际上,这些独立模块可以独立成进程,各自运行。放在多核心CPU上,这样的模式依然成立,只是无法充分利用CPU,所以,将任务比较繁重的逻辑模块(当然也可能有别的模块/进程)用多线程处理,线程数为核心数,这样可以充分利用CPU。这样一来,模块独立了,不互相干扰,同时CPU得到充分利用,效率也最大化。在我目前这样的水平看来确实是这样的,不知道以后会有什么样的想法。考虑到水平问题,时间问题,在这个项目中,采用的是单进程多线程的设计,作为第一次服务器开发的一个试验吧。

网络方面,我确实不是太清楚,也就知道一个TCP,http,socket,但是他们到底什么关系,完全两眼一抹黑。查阅了很多资料后,算是大概明白了:

IP网络层协议,个人理解就是标识网络中的地址。

TCP传输层协议,可靠传送数据的协议,传输数据流。

应用层协议,传输层之上,解析传输层数据,用于应用的协议,如HTTP,FTP,当然可以自己定协议。

而socket是用于实现TCP/IP协议的一个库,简单地说就是把协议转成代码。

关于第三方库,主要是实现HTTP的,他们还分了重量和轻量级,我现在也不清楚是怎么得出来的。

为了检验所学,同时练练手,我选择了使用socket写自己的基于TCP网络处理模块,自己实现粘包、分包,长连接或者短连接,自定设计简单的应用层协议,而不是选择使用http。可能之后要做的就是看看http协议,然后尝试自己实现一下吧。

说道这里,还要说的就是数据格式,在传输数据的时候,一般采用数据格式包括,json,xml,binary,protobuf。json用的更多一点,但是protobuf据说数据会压缩得很小,挺好用,之后会尝试。

还想说的一点就是服务器的架构问题,或者说是设计吧。做之前也就是大概想了一下有哪些模块,随便画了简图。真的做起来的时候,才发现这样做对开发的指导太少了。开发过程中会不停地修改,特别是前面没有想到的,或者是更细节一点的东西,代码写得很纠结,不流畅,完全不是想象中的一气呵成。我觉得吧,设计的时候,还是必须从大到小,各个模块都想清楚了,使用工具软件,建好模型,把整个框架搭好了,这样才能真正高效,并且一气呵成地完成开发工作,至少不会开发像是便秘一样。

就到此为止了,这个项目的有关情况,还是继续做记录~

Tags:协议服务器,初学服务器

版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。

相关文章

实时开通

自选配置、实时开通

免备案

全球线路精选!

全天候客户服务

7x24全年不间断在线

专属顾问服务

1对1客户咨询顾问

在线
客服

在线客服:7*24小时在线

客服
热线

400-630-3752
7*24小时客服服务热线

关注
微信

关注官方微信
顶部