大家好,今天分享的主题是“web服务的相关知识“,这个是做为一个系列来的,今天着重说两个方面,有部分不知道理解的准确与否,请大家也提建议一起讨论。
分享导图image
主要分享内容导图
image

今天主要针对上面图里的web服务器和分布式发展两个方面介绍web服务的演进过程;

一、Web服务器

1.1 HOST主体

先说下时下一个web服务运行的host主体:

  1. 独立服务器: 机房里实实在在的物理服务器,也可以理解为高配版的pc机。
  2. vps (虚拟专用服务器): 独立服务器通过虚拟化技术虚拟出多个专用服务器。
  3. 云服务ECS(Elastic Compute Service) : 建立在服务器集群之上的,可以理解为,也是通过虚拟化技术整合多台独立服务器资源的弹性服务器。
  4. 虚拟主机:一个独立主机或者vps服务器上,可以运行多个站点的技术。

通俗的理解: 云服务可以看作是大酒店,独立服务器可以认为是酒店的房间,vps理解为房间的卧室,虚拟主机理解为卧室里一个床位。 你买了一个云服务,相当于你定了一个房间(这里只是比喻,这里并不一定是独立服务器),不够用随时加订,每一间卧室(vps)都可以睡觉,看电视,拉便便,但是虚拟主机就只能让你睡觉(部署站点用)。

1.2 应用场景

这些服务器应用场景,以下是个人的理解和总结:

服务器应用场景介绍

以上是主要的服务器类型,其实也是虚拟化,容器化技术的发展历史。

二、分布式的发展史

2.1 SOA阶段

分布式系统(确切地说,分布式计算机系统)已经从它开始的地方走了很长一段路。 一开始,一台计算机一次只能执行一项特定任务。如果我们需要并行完成多个任务,我们需要并行运行多台计算机。 但是并行运行它们不足以构建真正的分布式系统,因为它需要一种机制来在不同的计算机(或在这些计算机上运行的程序)之间进行通信。 这种跨多台计算机交换(共享)数据的要求触发了面向消息的通信的想法,其中两台计算机使用包装数据的消息共享数据。

如上所说,分布式系统实际指分布式计算系统,现在大数据的mapreduce以及流式计算其实都是分布式计算的一种。
最开始一个企业系统如下: image
然后是多任务操作系统和个人计算机的时代。使用Windows,Unix,Linux操作系统,可以在同一台计算机上运行多个任务。 这允许分布式系统开发人员在通过消息传递连接的一台或几台计算机内构建和运行整个分布式系统,这导致了面向服务的体系结构(SOA),其中每个分布式系统都可以构建为集成一组服务,这些服务在一台计算机或多台计算机上运行,服务接口通过WSDL(用于SOAP)或WADL(用于REST)正确定义,服务使用者使用这些接口进行客户端实现。
image

2.2 web service的发展阶段

随着计算能力和存储价格的降低,全世界的组织开始使用分布式系统和基于SOA的企业IT系统,一旦服务或系统的数量增加,这些服务的点对点连接就不再可扩展和可维护,这导致了集中式“服务总线”的概念,该服务总线通过集线器类型架构互连所有不同的系统,这个组件被称为ESB(企业服务总线),它充当语言翻译者或中间人,他们是一群谈论不同语言但又希望彼此交流的人,在企业中,语言类似于消息传递协议和消息传递格式,不同的系统用于它们的通信,该模型的主要优点是每个系统都可以构建服务器端和客户端实现,而无需担心连接系统的协议。为了方便不同系统的通信和扩展,加入了企业总线ESB。这个阶段实际就是web service的发展阶段,到现在仍然有很多企业在用。

image

2.3 restful service

随着万维网的普及和模型的简单性,基于REST的通信变得比基于SOAP的通信模型更受欢迎,这导致了基于应用程序编程接口(API)的REST模型通信的发展。由于REST模型的简单性,需要在标准REST API实现之上实现安全性(身份验证和授权),缓存,限制和监视类型功能等功能,不是单独在每个API上实现这些功能,而是需要有一个通用组件来在API之上应用这些功能,这一要求引领了API管理平台的发展,如今它已成为任何分布式系统的核心功能之一。
image

2.4 分布式系统

分布式系统的大爆炸时刻,基于互联网的公司如Facebook,谷歌,亚马逊,Netflix,LinkedIn,Twitter变得如此之大,以至于他们想要构建跨越多个地理位置和多个数据中心的分布式系统,这些类型的要求使技术重点转移到一切开始的地方,工程师们开始考虑单个计算机和单个程序的概念。 他们不考虑将一台计算机视为一台计算机,而是考虑在同一台计算机中创建多台虚拟计算机的方法。这导致了虚拟机的想法,其中同一台计算机可以充当多台计算机并且并行运行它们,虽然这是一个很好的想法,但它并不是主机资源利用率的最佳选择。 运行多个操作系统需要额外的资源,这些资源在同一操作系统中运行时不需要。 这导致了容器的概念,其中使用相同的主机操作系统内核(Linux)在单独的运行时上运行多个程序及其所需的依赖性,这个概念在Linux操作系统上已有一段时间了,随着基于容器的应用程序部署的引入,它变得越来越流行并得到了很大的改进。容器可以与虚拟机相同,而不会产生单独操作系统的开销。

2.5 微服务

2.5.1 微服务简介

这为Netflix,LinkedIn,Twitter等组织提供了基础框架,以构建他们要求苛刻的多区域,多数据中心应用平台; 然而,这并非没有复杂性。基于容器的部署的微型特性带来了跨多个容器的平台维护和编排的复杂性,随着微服务架构(MSA)的发明,单片应用程序被划分为更小的微服务块,这些微服务能够执行整个服务的给定功能并部署在容器中(在大多数情况下),这为分布式系统生态系统带来了一系列不同的要求,使系统最终保持一致并相互通信而没有太多复杂性。
image

2.5.2 微服务和单体应用的区别

有了docker这种容器技术,自然也就产生了容器管理,编排的需求; 这些要求最终帮助工程师构建了一个容器编排系统,可用于维护较大的基于容器的部署的一致性。 毫不奇怪,这个领域的突出技术来自谷歌,因为它的规模,他们构建了名为“Kubernetes”(a.k.a k8s)的容器编排平台,它成为大规模容器编排要求的事实标准,K8S允许工程师: 在大型集群中运行容器,将数据中心视为一台计算机, 服务之间的通信(在容器上运行), 自动扩展,在多个服务之间进行负载平衡Kubernetes和docker使应用程序员的生活更轻松,他们不再想让自己的心思考虑它在不同环境中的表现(操作系统,DEV,TEST,PROD等),因为他构建的容器图像在所有环境中运行几乎相同,因为所有依赖关系都被打包到其中。

2.5.3 K8S简介

对于容器和编排框架,应该有一个管理这些服务器的团队,这意味着需要使用docker,kubernetes等技术来管理数据中心,以确保它对应用程序来说就像一台计算机一样。 而不是你这样做,其他人如何为你管理那部分,这正是无服务器架构所带来的,其中您的服务器将由亚马逊(Lambda),微软(Azure功能)或谷歌(云功能)等第三方云提供商进行管理。 现在,分布式系统将由应用程序员编程,而底层基础架构管理将由云提供商完成;

image

杂谈:

三、名词释义


本文档来自支付产品技术交流群的聊天记录整理,由志愿者整理并发布到本网站。如需要及时收到来自支付产品技术交流群的最新消息,请扫码关注“凤凰牌老熊”的微信公众号。 本群面向支付行业的有经验(2年以上)的产品经理、软件工程师、架构师等,提供交流平台。如想加入本群,请在本文评论中留言(不公开),说明所在的公司、负责的工作、入群分享的主题和时间。