产品品经理必懂的技术那些事儿--5--后端技术
后端,也叫服务器端
对应客户端,服务端通常也叫服务器端,产品经理在设计产品时,虽然设计的更多的是客户端产品,但两个客户端之间的信息互动和数据传输却是通过服务端完成的。服务端祈祷了中间核心处理者的作用,它负责处理复杂的业务逻辑并对数据进行存储管理。
客户端与服务端借助网络进行数据传输,数据传输基于基本数据传输协议,定义数据传输的规则通常叫接口,每一个接口都处理一个功能逻辑。
例如,使用微信发送一条消息给对方时,这条消息首先从客户端A发出,通过数据接口访问服务端,服务器处理后将这条消息推送给客户端B,B接收到消息后再展示在界面上。服务端起到了对所有客户端进行协调处理的角色,每时每刻都有很多客户端访问服务端,如果产品用户量大而且活跃度高,服务端就会承受巨大的访问压力,像微信这样有着庞大用户体量和很高活跃度的产品,服务器的压力是非常大的,这就需要对服务器进行扩容和各种优化,以此来支撑这么庞大的用户量和访问量。
常用后端技术介绍
和客户端技术一样,服务端技术也分为多种类型,例如常用的服务端开发语言有PHP和Java等。另外,常用到Java语言的开发平台Java EE(Java Enterprise Edition)。PHP是一种脚本语言,可以用于网页开发。PHP有很多现成的框架可以使用,通过框架可以非常简单地实现很多功能。另外,现在使用比较多的Node.js也是一种服务端开发技术,使用JavaScript语言进行开发,Node.js能实现从网页前端到后端服务的全流程覆盖,是一种灵活性和扩展性都比较好的服务端技术。
除了以上几种服务端技术外,还有以Python语言为主的服务端技术和以C#语言为主的ASP.NET等多种服务端技术。
服务端通常被叫作云端,也就是我们所说的云服务器,云服务器指物理机房托管在第三方,而不用自建机房。在有云服务之前,所有的互联网服务都需要自己建立机房,服务器和所有的网络设备都放在机房里。每个机房都由应用服务器、数据库服务器、交换机、网络端口和外网光缆构成。根据机房规模的不同,不同的服务器机房配置和架构略有差异,但其基本结构类似,常用的服务端基本架构如图所示。
当然,这是一个简化版的服务器架构图,实际生产中的架构图会根据具体的业务形态和技术架构有不同的架构方式。首先是从互联网接入,互联网的另一头实际上就是客户端,客户端通过互联网请求访问服务器,请求进来后首先经过负载均衡服务器,负载均衡好比是一个交通指挥调度中心,在车流量比较大的时候,它负责指导和梳理交通,将车流量比较大的路口的车辆分流到车流量较小的路口,实现流量的动态平衡。
接下来,说说数据接口是指客户端与服务端进行数据传输和交互的数据协议,数据接口是一种数据交换的标准。
数据接口的构成通常是“key-value”的形式,也就是键值对,键(key)代表某一个数据字段所表达的意思,值(value)是这个数据字段的内容,例如,我们可以定义一个最简单的数据接口结构“{username:ryan,password:123}”,在这个数据接口结构里,我们定义了两个字段,分别是代表用户名的“username”和代表登录密码的“password”,对应这两个字段的值分别是“ryan”和“123”。
在实际应用中有两种常用的数据接口的结构,分别是JSON和XML,接下来我们就分别介绍这两种类型的数据接口结构。
JSON(JavaScript Object Notation)
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,也是一种用来表示数据接口结构的形式。一个简单的JSON结构如下。
{
"username":"ryan",
"password":"123"
}
JSON结构通常由一个大括号包括,一个大括号包括的JSON结构叫作一个JSON对象,在一个JSON对象里,通过“:”左右的内容构成一个键值对,左边的是键,右边的是值,键和值都由引号括起来,每个键值对之间用逗号分割。我们在讲数据结构时介绍了数组结构,同样在JSON里也可以表示数组结构,我们来看下面的例子。
{
"name":"张三",
"skill":["足球","篮球","羽毛球"]
}
在上面这个例子中,表达了张三具备三个球类运动的技能,所以在技能一项里,我们可以通过数组的形式表达,在“skill”后面我们通过中括号表示数组,数组里面的值通过逗号分开,数组的元素本身也可以是一个键值对或者是一个JSON对象。下面我们看一个结构稍微复杂的JSON结构。
{
"name":"中国",
"province":[{
"name":"黑龙江",
"cities":{
"city":["哈尔滨", "大庆"]
}
}, {
"name":"广东",
"cities":{
"city":["广州", "深圳", "珠海"]
}
}, {
"name":"湖南",
"cities":{
"city":["长沙", “株洲"]
}
}]
}
在上面这个稍微复杂的JSON结构里,我们表达了中国的三个省份及每个省份对应的城市。这是一个典型的JSON嵌套方式。首先,在这个JSON结构的第一层级,有两个键值对,分别是国家名称“name”和省份名称“province”,这时省份对应的值不再是一个单纯的内容值,而是一个数组,数组里的每一个元素又是一个JSON对象,数组里的JSON对象表达一个省份,这个对象里有省份和省份下面的城市的名字,省份城市对应的也是一个JSON对象,不过这个JSON对象只有一个键值对“city”,“city”对应的值是一个数组,数组里的元素是城市。从上面这个例子可以看出,通过JSON元素的嵌套和不同数据结构的表示,我们几乎可以把所有数据结构都通过JSON表达出来。
XML
XML(Extensible Markup Language)的全称是可扩展标记语言,与JSON一样,XML也是一种数据交换格式,也可以用来进行简单的结构化文本数据的存储。XML的结构可以进行自定义,XML的基本元素是由一个个标签构成的,每一个标签都由标签头和标签尾构成,内容放在标签头尾之间,例如“<name>ryan</name>”就是一个完整的标签体,尖括号内是标签的名字,标签尾用“/”加在标签名之前表示。另外,与JSON类似,XML的标签元素也可以进行相互嵌套,标签内的值也可以是标签体,下面我们来看用XML结构表示的省份和城市的例子。
<?xml version="1.0" encoding="utf-8"?>
<country>
<name>中国</name>
<province>
<name>黑龙江</name>
<cities>
<city>哈尔滨</city>
<city>大庆</city>
</cities>
</province>
<province>
<name>广东</name>
<cities>
<city>广州</city>
<city>深圳</city>
<city>珠海</city>
</cities>
</province>
<province>
<name>湖南</name>
<cities>
<city>长沙</city>
<city>株洲</city
cities>
</province>
</country>
在上面的XML结构中,第一行是XML结构的头,注明了版本号和编码格式,编码格式是指该XML结构里的内容会以何种方式解析,“utf-8”是一种统一转换编码格式,可以支持繁体中文、简体中文及英文、日文、韩文等的解析。接着往下是一个用“<country>”表示的代表国家的大标签体,在这个标签体里有一个“<name>”和三个“<province>”标签体,“<province>”里又细分为省份的名字和省份下面的城市,在XML里表示数组的方式就是在一个标签体内存放多个标签体,例如标签“<cities>”下的多个“<city>”标签。
在上面这个例子里,我们表达的数据结构与JSON结构表达的数据一致,但是可以看出,XML的结构体积比JSON大,而且阅读结构不如JSON清晰。所以,在生产开发中,使用JSON作为数据接口进行数据传输和交换的要多一些。XML的应用领域非常广泛,例如,在Android开发中,界面布局文件就是通过XML结构实现的,很多服务器配置文件也都是通过XML结构实现的,在有些系统实现中,也通过XML表示数据接口进行数据传输,但主流是使用JSON结构。
请求响应(Request-Response)模型
接下来我们通过图来了解服务端与客户端的交互模型。
这个模型叫作请求响应(Request-Response)模型,简单说就是一问一答,客户端问服务端,服务端接收后进行处理,并将处理结果回答给客户端。
传统互联网时代,如果要自己开发一个产品,服务器的部署通常都需要自建机房,然后将服务器放在自己的机房里,不过现在有了新的选择,就是云服务。我们可以租用云服务提供商的机房,然后将我们的服务端部署在云端,这样我们只需要按使用情况支付给云服务商一定的费用就可以正常使用了。
服务器部署完毕后,接下来就是长期的维护和调优过程,这个过程叫作运维,服务器运维工程师就是专门负责这一过程的。
使用第三方公司提供的服务器托管和维护服务来运行自己的产品,这种方式称为云服务器。
接下来我们要讲的是如何判断产品问题是否出自服务端。
当用户在产品上进行一次操作时,如果客户端报错提示“服务器异常”,那么问题肯定出在服务端。
还有一种情况,当客户端上显示不出数据时,问题也有可能出自服务端,具体原因可能是服务端在查询数据库时没有查询到信息,客户端通过网络请求获取数据时,接收到的数据集为空,所以在客户端产品中没有展示出数据。类似的情况还有很多,作为没有技术背景的产品经理,当遇到此类问题时,通过信息提示分析问题有助于快速定位和解决产品出现的问题。