服务端(全面解析服务端的作用和技术原理)

服务端(全面解析服务端的作用和技术原理)

本篇将对服务端进行一个概要介绍,内容包括为什么需要服务端?用户端与服务端如何交互?服务端架构是怎样的?阅读完本篇之后,你或许能更深入的理解用户端与服务端的关系。关于服务端的更多细节,后续会通过连载的方式详细讲解。

为什么需要服务端?

一个手机App,在没有网络的情况下,仍然可以在手机上运行,并且可以使用部分功能,那是因为这些功能只使用了手机本地提供的能力。如果需要查看最新发布的新闻、购.买一个商品、电影票选座等,就必须通过网络与服务端交互。

当然,有少量的App提供的所有功能都不需要联网,不需要与服务端交互,就可以正常使用,就像以前电脑上的单机游戏一样。这样的App并不在本系列文章的讨论范围。本系列文章要讨论的是购物App、社交App、视频App这些强依赖网络和服务端才能正常使用的App。

现在,我们知道了,一个手机App的所有能力,要么是手机本地提供的,要么是服务端提供的。作为移动互联网时代的App,必须有配套的服务端系统,才能正常使用,否则就是一个“单机游戏”,提供不了太多的功能。

如何与服务端交互?

当一个新闻App需要获取最新的新闻时,一般会使用HTTP协议,向服务端发起请求,服务端会根据请求信息找到对应的数据返回给用户端App。对于交互协议,现在更多的会使用HTTPS协议,以保证通信的安全性,特别是购物交易类的App。

由于移动端设备所处网络环境一直在变化,网络环境复杂,网络质量不稳定,为了给用户提供更好的体验,有些公.司也会基于TCP自研应用层协议,或直接使用基于UDP的QUIC协议。

协议层面的优化虽然能够带来一些效果,但为了追求更好的体验,不少企业还会在用户端设备到服务端这段物理路径上做优化。这段物理路径,一方面因为物理距离较远,另一方面因为共享的公网,会导致网络质量较低。

关于物理距离较远的解决思路,就是将服务端的物理位置放置在距离用户更近的地方,这类解决方案最成熟的就是CDN(Content Delivery Network,内容分发网络)了。CDN可以将服务端的各类静态资源,如图片、JS、CSS等分发到全国各地,甚至全球各地的CDN节点上,当用户请求这些资源时,就可以从最近的一个CDN节点获取,大大提高响应速度。

关于公网质量较低的解决思路,就是将一段公网路径切换到高质量的专有线路上,这种解决方案较为成熟的就是DCDN(动态CDN)。使用DCDN后,用户端发出的请求,就近进入某个CDN节点,然后在CDN内部的高质量专有网络上找到最优的路径,将请求转发到服务端,响应数据仍然通过CDN专有网络返回。

上述关于物理距离较远的解决思路,解决的主要是静态资源的访问质量问题,对于动态资源请求也有类似思路的解决方案。动态请求之所以是动态请求,是因为响应请求需要在服务端做计算,这就需要执行服务端的代码,所以优化思路就是将这些代码部署在CDN边缘节点,直接对用户的动态请求进行响应,这就是当下热门的“边缘计算”。

用户端与服务端的交互模式和优化方法远不止上述描述的这些,我将在后续的文章中进一步讲解。

服务端架构是怎样的?

用户端是一个独立的应用,所有的功能都在一个进程内部运行(桌面客户端应用也有多进程架构)。而服务端是一个通过网络连接的分布式架构,服务端的能力被划分为多套系统,系统间通过网络协同,作为一个整体面向用户端提供服务。这套服务端的分布式架构,就是本系列文章的主要讲述的对象。接下来,我们先对这套分布式架构做一个粗粒度的划分,让你有一个整体的认识,后续文章我会详细介绍每个部分的细节。

我们可以将服务端架构分为以下4个部分:

  1. 接入层:用户端到运行业务服务的节点之间所有的组件服务,都可以划归到接入层。常见的接入层组件服务包括:DNS、GSLB、CDN、L4LB、L7LB、WAF、DDOS防护、边缘计算服务、全球就近接入网络、网络防火墙、双向通信服务(如MQTT、WebSocket等)、NAT网关等。
  2. 服务层:大型互联网平.台的服务层,主要是微服务体系。常见的服务层组件包括:微服务网关、熔断限流平.台、服务注册中心、服务配置中心、服务治理中心、服务间通信框架、分布式事务、分布式任务、服务网格等。
  3. PaaS层:基础平.台即服务,各类中间件、数据库都可以划归到这个部分。常见的PaaS组件包括:消息中间件(如Kafka、RocketMQ、Pulsar等)、键值数据库(Redis以及Tair等KV存储服务)、传统单机关系型数据库(MySQL、MariaDB、PostgreSQL)、分布式关系型数据库(OceanBase、TiDB、cockroachDB等)等等。
  4. IaaS层:基础设施即服务,主要包括计算、存储、网络等基础服务。常见的IaaS组件包括:KVM、Xen、Containerd、Kata Container、Kubernetes、分布式块存储服务、分布式文件系统、对象存储系统,当然也包括物理服务器、网络设备等。

除了上诉的4个部分,还包括旁路的CI/CD系统、可观测系统、可靠性保障系统、安全系统、大数据平.台、云原始体系、自动化系统等等。非旁路的部分还包括机器学xi平.台、多媒体服务等。这类系统中的一部分,我会在此头条号的其它合集中呈现,敬请期待。

总结

  1. 由于App的很多功能,都需要与服务端交互,所以基本每个App都需要一套对应的服务端系统。
  2. 用户端与服务端交互,一般会使用HTTP协议,为了提供更多的功能、更好的性能、更高的安全性,演进出了很多接入层技术。
  3. 服务端的架构可以划分为接入层、服务层、PaaS层和IaaS层4个部分,每个部分都有很多基础组件提供服务。
效率技巧

工作感悟(职场人士必备的10个工作技巧)

2024-2-5 10:29:03

效率技巧

放大镜的特点(使用方法、适用场景、选购指南)

2024-2-5 10:35:25

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
有新私信 私信列表
搜索