服务端_服务端 客户端 - CSDN
  • 什么是服务端开发

    千次阅读 2014-10-16 10:07:25
    从事服务端开发已经有一些日子了,静下来可以想想和记录些服务端开发的想法了。 服务端开发,特别是Web开发,基本上全是处理HTTP请求的处理。根据具体用途分为两种:Web页面开发和API接口开发。Web页面开发也完全...

     一直不是很了解服务端开发做些什么具体工作,只是觉得服务的开发的都是大牛那种。今天看到下面的这篇文章才有所了解。

    从事服务端开发已经有一些日子了,静下来可以想想和记录些服务端开发的想法了。

    服务端开发,特别是Web开发,基本上全是处理HTTP请求的处理。根据具体用途分为两种:Web页面开发和API接口开发。Web页面开发也完全可以看成是API接口开发,只是它的两个主要部分,页面和ajax请求,一个是返回html,另外一个可以返回html,也可以返回其他格式的而已。API接口开发是针对有客户端产品而言的。可能是移动设备,可能是PC应用等。

    应用框架

    应用框架一般使用的是LNMP或者LAMP,基本的框架就是前端N台Web服务机 + cgi访问PHP + php访问mysql。

    PHP可以看成是C写的一个大型的Web框架,它的优势在于解释型,即时修改即时更新。所以线上代码更新维护成本极低,加之其为web开发几乎是专门定制的一些函数,所以适合用于web开发。相较于java开发web服务,动不动就需要重新编译的痛苦就很知足了。

    web服务器现在nginx是越来越多使用,nginx比较apache的优势就在于轻便和静态页面的高并发性能。一般拿到设备先需要考虑下单机可承受的qps大概多少,方法大致就是先只考虑内存,计算同时能开启多少个php-cgi,比如一个4G内存的机器,每个php-fpm大概占用20M内存,所以差不多能开启200个php-cgi进程(一般会留些空余的),每个进程同一个时间只能跑一个php程序,所以假设每个php程序跑0.1s,1s就能处理10个请求,所以单机qps大概会是2000。当然,一般不会开启到这么极致的程度,有几个原因:

    1 需要考虑到其他进程使用内存的情况

    2 考虑到如果一旦全部内存都使用完了,是否启用swap,如果没有的话,那机器是否就立即当机

    3 还需要考虑到CPU和带宽的使用情况。CPU对一些比如加解密,视频转码等操作比较耗时,这个时候如果没有使用队列,那么每个请求的时间就会加长。

    文件服务器

    一般会要求文件服务器和web服务器分开,分开的意思就是使用不同的域名进行拆分。当然web服务器也是可以当做文件服务器的,但是由于文件服务器需要上传文件,而上传文件是一个非常耗时的工作,即php的一个程序需要停留的时间很长,所以需要将它们分开。一则可以为以后扩展文件服务器提供便利,二则不会导致文件服务影响了正常的web服务。

    从文件服务器拆分的理由上看,在运营过程中一些比较占用资源或者特别频繁调用的接口是可以或者应该考虑拆分到不同机器上的。

    Web前端机始终要访问持久化的数据的,mysql的使用是最为频繁的。其实所有的web服务说到底都是对数据库进行增删改查的操作。说到性能,数据库的增删改查操作的性能其实就决定了一切。所以对数据库的建表,索引的使用对一个网站来说尤为重要。觉得最有用的几个mysql的技巧有:

    1 覆盖索引。就是想办法让查询操作只查索引而不去查表的索引建立方法。建立合适的索引和能只在索引就能找到数据的查询能提高效率。

    2 InnoDB表最好能使用自增键,提高插入操作的效率。

    3 string类型的变量的存储格式,是使用varchar还是char比较好,曾经有个项目表设计从char到varchar之后的数据库大小差别达到70G和20G的大小…

    4 建表的时候需要考虑下以后的分库分表,如果是使用分表,什么是分表键?是否需要反向查询表?

    5 甚至当考虑到数据库和Web机器的机房分布,这个设计就更麻烦了…

    mysql的建表环节和需求有很大关系。没有明确的需求,表设计一定是不正确的。

    数据库支持有可能还是不足够的,那么首先想到的可能就是缓存了。缓存是使用全局缓存?放在web前端机?需要用什么hash算法?用什么缓存?memcache?redis?mysql也有自带缓存,如何查询才能更好命中这个缓存?当数据更新的时候,缓存中的数据是否是脏数据?如何更新数据?

    Web页面开发

    当需要做一个网站的时候,首先要考虑的是用户量有多少?做一个SNS网站和做一个运营后台网站完全是两个不同的概念。

    首先是在页面压力上,SNS网站的qps可能几千上万,而运营后台压力几乎完全可以不用计算。这个就意味着后端的数据库支持不同了。SNS网站可能最常调用的会是好友关系和个人信息的接口,这样的接口是不是需要独立出来处理?这样的请求会很多是重复的,是不是考虑使用中间件或者缓存来减轻对数据库的直接压力呢?运营数据一般使用单表就可以解决的。个人觉得运营中统计的需求是最难做的。首先统计并不是任意的统计要求都可以满足,这个需要和产品讨论需求。其次,统计一般需要使用些访问日志之类的,可能涉及到许多shell脚本。

    API开发

    其实相对于Web开发,API开发是属于被动的。意思就是,由于客户端可能是手机产品,可能是PC产品。往往都是有发布和版本的。这个意味着API接口没法像Web那样为所欲为随时更新代码。它更多需要考虑到各个版本之间的兼容问题。兼容问题在很大程度上会变为加法,永远不会是减法。个人感觉,如果毫无节制地满足需求,随着版本越来越多,你的代码中会越来越多if else,到最后,你的代码就根本无法维护了。然后就会是别人来接手你的工作,踩坑,边骂边重构….API开发是最需要依赖测试的。往往只有测试人员才对各个版本的小改动,小特性如数家珍。

    再考虑到非功能配套:

    你可能需要对API调用时间进行统计,这样你才明白你的接口表现如何。

    你的代码可能还会用到其他机器上的服务,比如curl一个其他服务,这样的情况,最好考虑下错误处理和日志记录。

    对于有金钱交易的接口服务,日志处理更是必不可少。

    对于一些内部错误,最好不需要直接抛出显示给用户,所以需要使用的最好是白名单错误机制。

    接口的加密方式,一般最少是需要有个签名机制的,考虑到加密方法,大致有几种:对称加密和非对称加密。加密的时候就需要考虑到一些情况了,比如手机客户端的用电量等。

    如果是给手机开发接口,需要考虑流量问题,图片的规格问题。

    框架永远是会变的,不说需求的变化,单就用户量的变化,20w用户和1000w用户的框架一定是不一样的。刚开始的时候你不可能根据1000w的用户量来设计框架来给20w人用。所以一个好的服务端框架一定是随着用户量变化会进行几次大的变化的。

    后记

    这篇是想到哪写到哪,写到这里发现写不下去了…总之,web服务开发的技巧和小东西还是很多的。有的坑是需要自己踩过才知道痛的。可爱的是,我还在继续踩坑中…

    补充下,接口重构几乎是每个服务端开发人员必须经历过的。相较于开发一个新系统,接口重构的难度可以说是翻翻,当然这里的难度也可以理解为难受程度…也会是很锻炼人的一个活。对于重构来说,测试尤为重要,如何有个很好的测试集来保证你的重构的正确性是个难度。

    展开全文
  • 客户端与服务端的区别

    千次阅读 2018-11-01 11:26:09
    服务端:顾名思义是服务的,客户端发送的请求交给服务器端处理,是以response对象存在,服务器端处理完毕后反馈给客户端。 一般我们访问网站,都是客户端(浏览器、app)发出请求,然后对方服务器端(sina,sohu)响应,结果...

    客户端:在web中是以request对象存在的,发送请求给服务器端处理.

    服务端:顾名思义是服务的,客户端发送的请求交给服务器端处理,是以response对象存在,服务器端处理完毕后反馈给客户端。
    一般我们访问网站,都是客户端(浏览器、app)发出请求,然后对方服务器端(sina,sohu)响应,结果就是返回了页面路径给我们,我们再根据路径看到了网页。

    又叫主从式架构,简称C/S结构,是一种网络架构,它把客户端 (Client) (通常是一个采用图形用户界面的程序)与服务器 (Server) 区分开来。每一个客户端软件的实例都可以向一个服务器或应用程序服务器发出请求。有很多不同类型的服务器,例如文件服务器、终端服务器和邮件服务器等。虽然它们的存在的目的不一样,但基本构架是一样的。
    展开全文
  • 准备好武魂服务端!这个就是服务端了! 下面来看一下架设: 1.用查询分析器执行 EXEC sp_addlinkedserver @server='BILLING', @srvproduct='', @provider='SQLOLEDB', @datasrc='bpwl' 注意! 这里我说一下 我的机器...
  • 关于服务器端和客户端的区别

    千次阅读 2018-07-18 17:34:41
    服务端服务端是为客户端服务的,服务的内容诸如向客户端提供资源,保存客户端数据。是实现游戏特色化的重要途径,也是最直接可以通过游戏表现出来的技术,比如你要修改某个NPC的参数,重加载后,在游戏内立刻体现...

    首先

    百度百科解释:

    服务端:服务端是为客户端服务的,服务的内容诸如向客户端提供资源,保存客户端数据。是实现游戏特色化的重要途径,也是最直接可以通过游戏表现出来的技术,比如你要修改某个NPC的参数,重加载后,在游戏内立刻体现出来。

    客户端:客户端(Client)或称为用户端,是指与服务器相对应,为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外,一般安装在普通的客户机上,需要与服务端互相配合运行。因特网发展以后,较常用的用户端包括了如万维网使用的网页浏览器,收寄电子邮件时的电子邮件客户端,以及即时通讯的客户端软件等。对于这一类应用程序,需要网络中有相应的服务器和服务程序来提供相应的服务,如数据库服务,电子邮件服务等等,这样在客户机和服务器端,需要建立特定的通信连接,来保证应用程序的正常运行。

    其次

    自己理解:

    客户端:在web中是以request对象存在的,发送请求给服务器端处理,具体的使用方法可以查找javaee的servletrequest以及其子类。
    服务端:顾名思义是服务的,客户端发送的请求交给服务器端处理,是以response对象存在,服务器端处理完毕后反馈给客户端。
    一般我们访问网站,都是客户端(浏览器、app)发出请求,然后对方服务器端(sina,sohu)响应,结果就是返回了页面路径给我们,我们再根据路径看到了网页。

    对应网站来说

    你的网站存放的位置就是服务端,访客看到的就是客户端(比如浏览器)。

    展开全文
  • xxx服务端.zip

    2020-04-16 23:33:39
    VS2019,服务端程序。定义一个套接字用于监听客户端发来的信息 包含3个参数(IP4寻址协议,流式连接,TCP协议)。
  • 命运WYD服务端

    2020-07-30 23:31:51
    版本己测试,IP也己改好的端,没有什么问题,建议单机使用,如需开区,概不负责
  • 互联网服务端测试是个啥(入门科普)

    万次阅读 多人点赞 2018-08-22 15:00:48
    互联网服务端测试是个啥(入门科普) 微博:论路痴的自我修养 啥是服务端?  一般所说的服务端是指为用户在APP或PC使用的互联网功能提供数据服务的背后的一切(你没看错,是一切)。  移动互联网时代,...

                                    互联网服务端测试是个啥(入门科普)

    微博:论路痴的自我修养

    啥是服务端?

            一般所说的服务端是指为用户在APP或PC使用的互联网功能提供数据服务的背后的一切(你没看错,是一切)。

          移动互联网时代,服务端的概念更加清晰、明确。在PC时代,大家都是浏览器浏览各种Web页,前后端分离的概念相对模糊,反正除了浏览器,其它的都像后端。而在移动互联时代,APP承载了UI界面和交互的实现,数据处理交给大后方——服务端就好了。例如你想发一条文字微博,打开微博APP,点➕号,再点“文字”,出来个发布器,你写“今天天气真不错呀~”,截止到此时还没有任何服务端的事呢,直到你点击【发送】,这时候微博APP才会以调用接口API的形式告诉微博的服务器,有一个天使A要发一条微博,发送的内容是XXX,服务端收到之后赶紧在数据库天使A的微博列表里边新加上一条数据,然后告诉APP说:嗯,发完了。APP就提示你“已发送”。

     

    接口API又是啥?

          先说什么是接口API(application programming interface)。提供数据服务的服务端是个可大可小的机构,做的事大多不止一件,它做了这么多事,最终的目标还是要为人民服务,哦,不,是给APP或其它调用方使用,于是服务端就派出了几个代表,API1负责接待发微博的数据请求,API2负责接待发送评论的数据请求等等。并规定好跟API1通讯的接头暗号是param1,param2…,跟API2通讯的接头暗号是param3,param4…,而params就是接口参数,就是用来告诉服务端你要什么服务,具体的要求是什么(我要发一条微博,发送人是天使A,发送内容XXX等等)。

         综上,接口API呢,就是服务端对外提供数据服务最常用的信息交换方式。没错,并不是唯一的方式,对外提供服务共享的方式主要分为一下几种。

    • API调用之同步处理(实时、无需等待)
    • API调用之异步处理(队列任务,先到先得,适用于调用多、任务重的情况)
    • 定期的文件推送(数据量大且对数据实时性要求不高)
    • 共享数据存储
    • SDK(代码寄存,适用于跨语言、跨框架,使用频繁、服务更新却不频繁的情况)等

          另外说明一点,GET、POST方式是Http接口的参数级的传递方式差异,并不是接口层面的。尽管我们平时说Get接口、Post接口说的那么溜,是因为大多数的接口的所有参数都会才有统一的传递方式。不排除一些特殊情况,同一个接口里参数param1、param2是Get传递的,而param3、param4时Post传递的。除了常用的Http协议,接口的协议方式还有很多,有通用的,也有各公司自己内部定义的。

     

    服务端测试就是接口测试么?

           因为最常用的对外提供数据服务的方式是接口,所以服务端开发提测的内容往往就是一个个的接口,毕竟应用层的测试是最好入手的,面向使用者的部分也是最需要保障的。于是一提到服务端测试,大家首先想到的就是接口测试,简历里边能写服务端测试的很少,写有接口测试经验的倒很多。

           所以服务端既然不等同于接口,那么服务端测试就不仅仅是接口测试。一方面,如前面所述,服务端对外提供服务的方式不止API;另一方面,服务端所做的工作也不止应用层这一点。所以全方位的服务端测试,首先要保证对外提供的各种形式的服务(包括API)都符合要求,其次要在测试的技术深度和业务广度上都有良好的覆盖。

     

    如何进行接口测试?

           不是说服务端测试不只是接口测试么?别急。毕竟接口测试还是占服务端测试的大部分,所以我们讲讲怎么进行接口测试。

           面试官:请问你们接口测试怎么做的呢?

           候选人:参照接口文档,调用接口,看结果的返回是否跟文档说明一致。测试参数非法情况的处理。

           如果满分100的话,这个回答打多少分呢?勉强60。“不对呀,平时我们测试就是这样做的啊”“接口不就是输入输出么?”对对对,你们说的都对。但是稍稍有点本末倒置了。

          首先说非法参数,参数异常或没有传,这些检查虽然在测试用例范围内,但是论重要性来说应该跟UI测试中检查样式异常情况差不多,属于偏低优先级的那种。因为大多数的API还是属于内部调用的,接口文档相当于是双方的约定法则,非粗心的情况下,大家都会正常遵守,参数的可靠性来说比较高,至少比用户操作可控多了。

          其次参数只是我们跟服务端代码交流的入口,测试真正要重点关注的应该是数据逻辑,需要充分的了解这个API是干什么用的,什么样的数据逻辑,使用了哪些资源或服务,然后设计用例,转化为调用参数的组合,调用接口,检查执行结果。

           所以服务端测试不等同于接口测试,接口测试也不等同于参数调用。

           另外一个问题就是,这接口返回那么抽象,甚至就是一个code:100000和message,我怎么知道对不对呢?测完了心里也没底。

           还是那句话,不要停留在参数调用和程序给你返回的json串儿那点表象,要知道这个接口是干嘛的,用到哪儿,每次调用会发生什么,然后去检验改发生的有没有发生。此时就引入了一个检验深度的问题,最浅的检验就是相信程序给你返回的东西code:100000就成功了。说到底API操作的都是数据嘛,那么最深的检验就是到存储中去看看该发生的数据变化是不是真的发生了。当然,大多数情况我们没有DB等存储的访问权限(权限和风险是一对孪生兄弟),也不知道具体落到哪个数据表里了。方法就是“以不变验万变”,找到可信的数据来源或数据查询方式,验证不可信的被测对象。

          如果说接口测试参数异常不是测试重点,那么还有没有什么异常和兼容测试是测试的重点呢?有的,那就是上下游服务的容错。原则是“上游不可靠,下游要兼容”,如果被测的服务依赖了其它的服务B,那么服务B异常的时候被测服务是否有很好的容错就很重要,否则服务挂起或宕掉都是有可能的。另外作为服务提供方,要充分兼容不同的使用场景、或不同版本的调用方的使用,不能为了场景X或调用方Y做的需求,除了X、Y其它的服务使用者都用不了了。

          最后,全方位的服务端质量保证自然还要包含安全、性能、线上监控等等,除了专项的测试方法或工具知识外,还需要敏锐的嗅觉,能够及时察觉可能存在的安全、性能风险,做到防患于未然。

          要做一名合格的服务端测试人员,要十八般武艺样样精通。不好意思,开个玩笑。其实也差不多啦,要有足够的技术知识储备,要有框架意识,要有充分的质量保证理论做支撑,要有脚本、自动化能力,最好有一定的业务测试或端的测试经验,只有这样才能更好的理解服务链路,从产品的角度思考问题,而不是一头扎进技术里。归根结底,无论是服务端测试还是测试开发,终究都是测试,要立足根本才能做一个优秀的QA人员。

    展开全文
  • HTTP协议理解及服务端与客户端的设计实现

    万次阅读 多人点赞 2019-07-11 09:29:48
    本文主要帮助读者理解 HTTP 的协作原理、HTTP 相关的各层协议,在服务端和客户端的架构设计和一些优化的技巧,本文中主要讲述逻辑思想和协议远离,会使用部分 Java 代码,但会有详细的讲解,非开发应该也读的明白。...
  • 客户端和服务端的关系

    千次阅读 多人点赞 2018-01-09 19:47:10
    客户端和服务端的关系  很多人在学习编程的时候并不知道客户端和服务端的关系,今天就让我给你用一个打比方的方法为你解说一下客户端和服务端之间的秘密。  我在大学喜欢去清蒸餐厅吃饭,因为比较近,那我...
  • 服务端的简单配置

    2020-08-28 10:21:11
    “忽悠”一下服务端的配置。怎么说勒。我们开发一个系统,是分为客户端和服务端的。客户端是给客户看的,服务端是给自己家的工作人员用的。客户端和服务端有啥区别呢,就好比一道菜,你知道这是啥菜,但是你不知道这...
  • .NET开发WebSocket服务端

    2019-09-29 15:45:52
    服务端: 1、新建一个ASP.NET Core Web应用程序。 2、NuGet安装Microsoft.AspNetCore.WebSockets包。 3、在Startup类的Configue函数里输入以下代码: app.UseWebSockets(); app.Use(async (context, next) =>...
  • Dubbo服务端/客户端demo

    万次阅读 热门讨论 2018-03-09 17:41:48
    项目组采用分布式服务,线上有几十个应用,RPC调用完全... 一 服务端 服务端maven父工程 首先搭建一个maven父工程,引入dubbo和spring的依赖,dubbo可以和spring无缝集成。<properties> &lt...
  • 性能测试 - 游戏服务端框架

    万次阅读 2019-03-19 15:17:15
    服务端框架用于处理持续并发或瞬时并发的请求,同时有良好扩展性和稳定性,简单概括三点:并发性、稳定性、扩展性。 今天开始利用业余时间将自己经历过的多款上线游戏产品经验总结分享给童鞋们。从最基础的讲起,...
  • 本节我们将围绕“是什么”(服务端渲染的运行机制)、“为什么”(服务端渲染解决了什么性能问题 )、“怎么做”(服务端渲染的应用实例与使用场景)这三个点,对服务端渲染进行探索。 服务端渲染是一个相对的概念,...
  • QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载...
  • 继上一篇《PVE 天龙八部TLBB服务端搭建(一)--linux环境搭建》环境搭建好之后,开始服务端的运行。 服务端运行环境分为linux和windows,我这里从某宝花1块2买了一个一键端。 1、导出linux tlbb服务端 某宝上面的...
  • Netty即是服务端又是客户端,服务端和客户端相互对应。 具体功能细节是: 上游有一个服务,会主动发送消息给我中间件平台。中间件平台既有服务端也有客户端。通过下游客户端连接进来的客户端和中间件传下去的通道...
  • 要想对比服务端渲染和客户端渲染首先要知道它们的概念? 什么是服务端渲染? 我们用传统的servlet开发来举例:浏览器请求servlet,servlet在服务端生成html响应给浏览器,浏览器展示html 的内容,这个过程就是服务端...
  • 传奇私服服务端制作详细教程

    万次阅读 多人点赞 2011-12-01 13:52:35
    首先,必须下载一个传奇私服的服务端,或者完整的商业版 现在一般下载的都是数据不全的,说什么可以开区的也是些N手货,数据容易错误.(所以要版本的话可以找我,我这里版本不多但是都是正确无误的.)  起个名字叫...
  • websocket 服务端如何感知到客户端的断网

    万次阅读 热门讨论 2018-01-16 17:16:44
    最近在做一个用到websocket的项目,大体是这样:服务端用的是java开发的web服务,客户端是机床,机床端跑的是用C#技术编写的exe程序,在exe程序中,会有ws连接web服务端,从而web端能监控机床端的状态。(这里并没有...
1 2 3 4 5 ... 20
收藏数 823,884
精华内容 329,553
关键字:

服务端