架构·Client-Server

1、目录

  • 概述
  • 两层架构
  • 三层架构
  • MVC 架构

2、概述

一个联网应用程序总是分布在两个或多个主机之间,这就衍生了我们该如何在多个主机之间划分功能的问题。

我们从两个方面关注该问题: 1、技术推理。 2、组织如何管理其网络计算基础架构和联网应用程序。

3、两层架构

有两个基本的替代方案如下图所示,C/S 架构P2P 架构

*C/S 架构 与 P2P 架构

3.1、 C/S 架构

C/S 应用程序 一部分是由 以与客户端或用户交互为基础的主机,另一部分主机则是专门用于管理大型数据存储库,处理应用特有的数据和逻辑的服务器。

这给 C/S 架构引入了不对称的功能性,客户端需要向服务端发起请求,而服务端需要满足(答复)客户端的请求。C/S 架构适合应用于在服务器上发布的信息管理应用程序。OLTP 应用则是传统的 C/S 架构中的良好示例。

3.2、P2P 架构

这是 C/S 架构的替代架构,P2P架构不设立服务端,只有客户端。这种架构对于一些去中心化的即时通信应用是有吸引力的。P2P 很适用于语音或视频会议的场景。P2P 的很明显的特征是功能的对称性。

一般来说,可以将C/S和P2P架构混合在一起。举例,许多直接即时通讯社交应用涉及信息管理和多用户交互方面。一个客户端主机可以同时作为 Client 或 Peer,这取决于该主机在应用程序的角色定义。

4、三层架构

二层结构无法识别包含关键数据库一类的特殊需求,典型的例子是 OLTP。希望将这些关键任务数据库集成到C / S应用程序中,而不会牺牲其期望的质量。

下面将展示三层的 C/S 架构:

  • 第一层:客户端(用户)。
  • 第二层:服务端(用于存放应用程序的逻辑)。
  • 第三层:数据库(不同的应用程序所需要的共享数据)。

三层的 C/S 架构

这种3层架构的动机包括:

  • 表现:专注于单个用户
  • 应用程序逻辑:支持多用户,通过添加多台服务器来支持更多用户的成本是较低的。
  • 关键共享数据:支持多个应用程序。

这三层的 C/S 架构字啊每层之间都是n…1的关系。显然三层架构比两层架构具备更高的扩展性,向客户端隐藏的异构数据库支持以及提供了不同的通信协议的更好支持。

5、MVC 架构

模型 - 视图 - 控制器(MVC)应用程序架构是用于分析分布式应用程序的功能的流行模型。这种抽象有助于将应用程序分解成逻辑组件,以实现更容易/更清晰的分布式实现。

MVC 划分在监视和处理数据中涉及的对象之间的功能,以便最小化这些对象之间的耦合度,并因此将这些对象映射在多层架构上。

最初 MVC 用户解耦:输入、数据处理、输出 UI 界面。但是,将此模型映射到多层网站或企业应用程序也很简单。

MVC

  • 模型(Model):操作数据。

当 Model 层数据变更时通知 View 。 它允许 Controller 访问 Model 封装的方法。

  • 视图(View):将 Model 提供的内容渲染出来。

它可以查询Model关于数据的模型并指定如何呈现它。

  • 控制器(Controller):定义应用程序的行为。

它将用户手势映射到要由Model执行的操作。在标准的 GUI 客户端,用户手势可以是按压按钮。在 Web 环境,它可以是发起一次 HTTP GET/POST 请求。通常一个Controller,表示一组相关的功能。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT技术精选文摘

将单体应用重构为微服务

微服务重构概述 将单体应用程序转换为微服务的过程是应用程序现代化的一种形式。这是几十年来开发人员一直在做的事情。因此,在将应用程序重构为微服务时,有一些方法可以...

2138
来自专栏云计算

异步数据存储声明

在过去的几年里,NoSQL数据存储的工作让我对应用程序的方向有了一些见解,因为NoSQL成为了主流的数据存储和检索方法,至少对网络和基于云的程序来说是这样的(企...

2009
来自专栏Python区块链

Python爬取100G级别,2000K以上数据量,用mysql还是mongodb?

这个问题我们可以从两个角度去解答。一个是100G的数据量用MySQL和MongoDB在存读取上有什么区别,另一个是数据本身的结构和你要进行的应用来考虑使用哪种数...

54015
来自专栏FreeBuf

逆向分析智能窗帘频射协议

近来我热衷于对家庭自动化设备的破解,然后将它们添加到我的Homekit集成包之中。这事情要从几个月前说起,当时我爸订购了大批量的RAEX 433MHz射频电动窗...

2715
来自专栏Java架构师历程

7、重构单体为微服务

本书主要介绍如何使用微服务构建应用程序,这是本书的第七章,也是最后一章。第一章介绍了微服务架构模式,讨论了使用微服务的优点与缺点。随后的章节讨论了微服务架构的方...

973
来自专栏美团技术团队

移动端性能监控方案Hertz

性能问题是造成App用户流失的罪魁祸首之一。App的性能问题包括崩溃、网络请求错误或超时、响应速度慢、列表滚动卡顿、流量大、耗电等等。而导致App性能低下的原因...

5493
来自专栏数据和云

Oracle Database 18c 的10大新特性一览

在 2017 Oracle OpenWorld大会上,关于 Oracle 18c 的一系列新特性已经被披露出来,借助分散在各个会场的公开分享主题和内容、OOW提...

39711
来自专栏斑斓

限界上下文的边界

边界通过限界上下文来确定,这在领域驱动设计中具有非凡的意义。对应于通用语言,限界上下文是语言的边界,对于领域模型,限界上下文是模型的边界,二者对应于问题空间(P...

3537
来自专栏张善友的专栏

Ocelot 集成Butterfly 实现分布式跟踪

微服务,通常都是用复杂的、大规模分布式集群来实现的。微服务构建在不同的软件模块上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布...

4228
来自专栏华章科技

巧用MapReduce+HDFS,海量数据去重的五大策略

重复数据删除往往是指消除冗余子文件。不同于压缩,重复数据删除对于数据本身并没有改变,只是消除了相同的数据占用的存储容量。重复数据删除在减少存储、降低网络带宽方面...

733

扫码关注云+社区