精华内容
下载资源
问答
  • 传输层:常见的有TCP/UDP协议 应用层:HTTP协议,FTP协议 网络层:IP协议,ICMP协议,IGMP协议 网络接口层:ARP协议,RARP协议 3.典型协议的解释 TCP传输控制协议:一种面向连接的,可靠的,基于字节流的传输层通信...

    1.什么是协议?

    协议,即规则。网络通信中的协议,即数据传输和数据解释的规则。

    2.一些典型的协议

    传输层:常见的有TCP/UDP协议
    应用层:HTTP协议,FTP协议
    网络层:IP协议,ICMP协议,IGMP协议
    网络接口层:ARP协议,RARP协议

    3.典型协议的解释

    TCP传输控制协议:一种面向连接的,可靠的,基于字节流的传输层通信协议。
    UDP用户数据报协议:OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
    HTTP超文本传输协议:互联网应用最广泛的一种网络协议。
    FTP文件传输协议
    IP协议:因特网互联协议
    ICMP协议Internet控制报文协议:TCP/IP协议族的一个子协议,用于在IP主机,路由器之间传递控制信息。
    ARP协议正向地址解析协议:通过已知的IP,寻找对应主机的MAC地址。
    RARP协议反向地址转换协议:通过MAC地址确定IP地址。

    4.网络应用程序设计模式

    4.1 C/S模式

    传统的网络应用设计模式,客户机(client)/服务机(server)模式。需要在通讯两端各自部署客户机和服务器来完成数据通信。
    C/S模式的优点:1)协议选用灵活;2)缓存数据。缺点:1)对用户安全构成威胁;2)开发量大。

    4.2 B/S模式

    浏览器(browser)/服务器(server)模式。只需要在一端部署服务器,而在另外一端使用每台PC机都默认配置的浏览器即可完成数据的传输。
    B/S模式的优点:1)安全性高一些;2)开发工作量小;3)可以跨平台。缺点:1)必须完整支持http协议;2)不能数据缓存

    展开全文
  • 设计与开发服务器算是一个技术含量比较高领域,需要涉及到网络编程、IO、多线程、分布式、性能和可扩展性等较为复杂技术...其实服务器的设计与开发也是有模式可借鉴,只不过没有框架或是书籍来这么一些模式,...

    设计与开发服务器算是一个技术含量比较高的领域,需要涉及到网络编程、IO、多线程、分布式、性能和可扩展性等较为复杂的技术细节,比起JSP/servlet或SSH框架开发业务系统来说,开发服务器比较偏重于技术一些,许多开发人员会有些束手无措,但却无法避免,比如基于HTTP协议的服务不适用时,或需要提供某种协议的容器时。

    其实服务器的设计与开发也是有模式可借鉴,只不过没有框架或是书籍来这么一些模式,但通过学习一些优秀服务器的源码和架构我们可以找到一些感觉,我挑选了几个自己较为熟悉的服务器,通过它们的架构来找一些可以借鉴的模式:

    • Tomcat
    • Apache perfork
    • Amoeba
    • Mysql
    • 统一通信
    • Darkstar

    1)Tomcat

    Tomcat根据处理一个请求的不同阶段分为多个层次,所有层次通过pipeline-valve的结构连接起来,每个层次通过Valve处理相应维度的事情。

    2)Apache perfork

    此架构模式中存在一个主进程和多个子进程。每个子进程都会为所进行的请求侦听一个套接字。当接受到请求之后,子进程就会接受它并且提供响应。父进程会监控所有的子进程以确保总是可以使用最少数量的进程来处理请求,并且确保等候请求到达的闲置进程不能过少。如果没有足够的空闲进程来处理潜在的请求高峰,那么父进程就会启动新的子进程。如果存在过多的进程,那么父进程会每次终止一个空闲进程,直到服务器回到最大空闲子进程数量之下。通过保持一定数量的空闲子进程来接受所引入的请求,服务器就可以避免在接受到请求时再去启动新进程的开销。 父进程和子进程之间通过记分板进行通信。对于每一个产生的子进程,它的状态信息都写入到记分板中,父进程通过读取记分板可以了解子进程的状态。当需要关闭子进程的时候它将通过终止管道发送终止信息给子进程,另外的一种通知方法就是通过信号。

    3)Amoeba

    Amoeba是夹在client和DB之间的Proxy,并且复用了mysql connector的协议,因此它必须维持好它与client端和DB端的连接,保持高速的数据流转。另外,它为了能做到sql路由就必须得解析mysql connector的协议,只有掌握去来的数据才能做好路由和结果合并等工作

    4)Mysql

    Mysql是一个将SQL处理和存储引擎相分离的两层结构,把上图简化来看如下图所示:

    SQL Layer属于比较业务性的模块,也是根据SQL的种类和处理阶段的不同,分为多个层次和模块来逐层处理。Storage Engine Layer是一个数据存储的抽象层,它可以根据预定的标准和协议把不同结构和原理的存储引擎统一起来,并和SQL Layer无缝对接起来,如此设计能很好把其他在存储做得非常好的第三方给纳入进来,使得Mysql成为一个开放系统。

    5)统一通信

    融合通信的目的是要通过原生态的Socket协议把多种客户端和后端各服务连接起来,算是client端和服务提供方之间的Proxy。因此它为了提高它处理的吞吐量,把每次请求分成段,每段都通过独立的线程池来处理

    6)Darkstar

     

    Darkstar是个为了提供高可用的网络游戏框架,它把服务模块分为Tasking Service、Data Service、Channel与Session Service。其中Tasking Service是每次客户端请求的处理模块,Data Service用于持久化客户端的数据,Channel与Session Service用于保持客户端与服务端或客户端之间的通信和会话。网络游戏的性质决定了需要高并发、状态持久性和横向可扩展性,因此Tasking Service的特性是在任何机器和环境下都能独立运行,并且得到同样的结果,可以通过增加机器增强任务的处理能力,而Data Service和Channel Service保证了这一特性的可行性。

     

    通过以上几个开源服务器的架构,大致可以总结出一个服务器需要以下模块:

    • 连接模块
    • 配置模块
    • 线程管理模块
    • 数据解析和转化模块
    • 任务处理模块
    • 监控和管理模块

    并且都需关注一下问题:

    • 高速连接和数据通信
    • 可配置化的管理
    • 多线程的管理策略
    • 分布式和横向扩展策略
    • 不同阶段处理的分层结构

    因此通过对一些架构的解析,对如何构架一个服务器应该有些宏观性的把控,接下来就需要对这个框框里需要的各项技术的掌握,这也是一个从宏观到微观的过程

    展开全文
  • 设计与开发服务器算是一个技术含量比较高领域,需要涉及到网络编程、IO、多线程、分布式、性能和可扩展性等较为复杂技术细节,比...其实服务器的设计与开发也是有模式可借鉴,只不过没有框架或是书籍来这么一些模式

    设计与开发服务器算是一个技术含量比较高的领域,需要涉及到网络编程、IO、多线程、分布式、性能和可扩展性等较为复杂的技术细节,比起JSP/servlet或SSH框架开发业务系统来说,开发服务器比较偏重于技术一些,许多开发人员会有些束手无措,但却无法避免,比如基于HTTP协议的服务不适用时,或需要提供某种协议的容器时。

    其实服务器的设计与开发也是有模式可借鉴,只不过没有框架或是书籍来这么一些模式,但通过学习一些优秀服务器的源码和架构我们可以找到一些感觉,我挑选了几个自己较为熟悉的服务器,通过它们的架构来找一些可以借鉴的模式:

    • Tomcat
    • Apache perfork
    • Amoeba
    • Mysql
    • 统一通信
    • Darkstar

    1)Tomcat

    Tomcat根据处理一个请求的不同阶段分为多个层次,所有层次通过pipeline-valve的结构连接起来,每个层次通过Valve处理相应维度的事情。

    2)Apache perfork

    此架构模式中存在一个主进程和多个子进程。每个子进程都会为所进行的请求侦听一个套接字。当接受到请求之后,子进程就会接受它并且提供响应。父进程会监控所有的子进程以确保总是可以使用最少数量的进程来处理请求,并且确保等候请求到达的闲置进程不能过少。如果没有足够的空闲进程来处理潜在的请求高峰,那么父进程就会启动新的子进程。如果存在过多的进程,那么父进程会每次终止一个空闲进程,直到服务器回到最大空闲子进程数量之下。通过保持一定数量的空闲子进程来接受所引入的请求,服务器就可以避免在接受到请求时再去启动新进程的开销。 父进程和子进程之间通过记分板进行通信。对于每一个产生的子进程,它的状态信息都写入到记分板中,父进程通过读取记分板可以了解子进程的状态。当需要关闭子进程的时候它将通过终止管道发送终止信息给子进程,另外的一种通知方法就是通过信号。

    3)Amoeba

    Amoeba是夹在client和DB之间的Proxy,并且复用了mysql connector的协议,因此它必须维持好它与client端和DB端的连接,保持高速的数据流转。另外,它为了能做到sql路由就必须得解析mysql connector的协议,只有掌握去来的数据才能做好路由和结果合并等工作

    4)Mysql

    Mysql是一个将SQL处理和存储引擎相分离的两层结构,把上图简化来看如下图所示:

    SQL Layer属于比较业务性的模块,也是根据SQL的种类和处理阶段的不同,分为多个层次和模块来逐层处理。Storage Engine Layer是一个数据存储的抽象层,它可以根据预定的标准和协议把不同结构和原理的存储引擎统一起来,并和SQL Layer无缝对接起来,如此设计能很好把其他在存储做得非常好的第三方给纳入进来,使得Mysql成为一个开放系统。

    5)统一通信

    融合通信的目的是要通过原生态的Socket协议把多种客户端和后端各服务连接起来,算是client端和服务提供方之间的Proxy。因此它为了提高它处理的吞吐量,把每次请求分成段,每段都通过独立的线程池来处理

    6)Darkstar

     

    Darkstar是个为了提供高可用的网络游戏框架,它把服务模块分为Tasking Service、Data Service、Channel与Session Service。其中Tasking Service是每次客户端请求的处理模块,Data Service用于持久化客户端的数据,Channel与Session Service用于保持客户端与服务端或客户端之间的通信和会话。网络游戏的性质决定了需要高并发、状态持久性和横向可扩展性,因此Tasking Service的特性是在任何机器和环境下都能独立运行,并且得到同样的结果,可以通过增加机器增强任务的处理能力,而Data Service和Channel Service保证了这一特性的可行性。

     

    通过以上几个开源服务器的架构,大致可以总结出一个服务器需要以下模块:

    • 连接模块
    • 配置模块
    • 线程管理模块
    • 数据解析和转化模块
    • 任务处理模块
    • 监控和管理模块

    并且都需关注一下问题:

    • 高速连接和数据通信
    • 可配置化的管理
    • 多线程的管理策略
    • 分布式和横向扩展策略
    • 不同阶段处理的分层结构

    因此通过对一些架构的解析,对如何构架一个服务器应该有些宏观性的把控,接下来就需要对这个框框里需要的各项技术的掌握,这也是一个从宏观到微观的过程

    展开全文
  • 设计与开发服务器算是一个技术含量比较高领域,需要涉及到网络编程、IO、多线程、分布式、性能和可扩展性等较为复杂技术细节,比...其实服务器的设计与开发也是有模式可借鉴,只不过没有框架或是书籍来这么一些模式

    设计与开发服务器算是一个技术含量比较高的领域,需要涉及到网络编程、IO、多线程、分布式、性能和可扩展性等较为复杂的技术细节,比起JSP/servlet或SSH框架开发业务系统来说,开发服务器比较偏重于技术一些,许多开发人员会有些束手无措,但却无法避免,比如基于HTTP协议的服务不适用时,或需要提供某种协议的容器时。

    其实服务器的设计与开发也是有模式可借鉴,只不过没有框架或是书籍来这么一些模式,但通过学习一些优秀服务器的源码和架构我们可以找到一些感觉,我挑选了几个自己较为熟悉的服务器,通过它们的架构来找一些可以借鉴的模式:

    • Tomcat
    • Apache perfork
    • Amoeba
    • Mysql
    • 统一通信
    • Darkstar

    1)Tomcat

    Tomcat根据处理一个请求的不同阶段分为多个层次,所有层次通过pipeline-valve的结构连接起来,每个层次通过Valve处理相应维度的事情。

    2)Apache perfork

    此架构模式中存在一个主进程和多个子进程。每个子进程都会为所进行的请求侦听一个套接字。当接受到请求之后,子进程就会接受它并且提供响应。父进程会监控所有的子进程以确保总是可以使用最少数量的进程来处理请求,并且确保等候请求到达的闲置进程不能过少。如果没有足够的空闲进程来处理潜在的请求高峰,那么父进程就会启动新的子进程。如果存在过多的进程,那么父进程会每次终止一个空闲进程,直到服务器回到最大空闲子进程数量之下。通过保持一定数量的空闲子进程来接受所引入的请求,服务器就可以避免在接受到请求时再去启动新进程的开销。 父进程和子进程之间通过记分板进行通信。对于每一个产生的子进程,它的状态信息都写入到记分板中,父进程通过读取记分板可以了解子进程的状态。当需要关闭子进程的时候它将通过终止管道发送终止信息给子进程,另外的一种通知方法就是通过信号。

    3)Amoeba

    Amoeba是夹在client和DB之间的Proxy,并且复用了mysql connector的协议,因此它必须维持好它与client端和DB端的连接,保持高速的数据流转。另外,它为了能做到sql路由就必须得解析mysql connector的协议,只有掌握去来的数据才能做好路由和结果合并等工作

    4)Mysql

    Mysql是一个将SQL处理和存储引擎相分离的两层结构,把上图简化来看如下图所示:

    SQL Layer属于比较业务性的模块,也是根据SQL的种类和处理阶段的不同,分为多个层次和模块来逐层处理。Storage Engine Layer是一个数据存储的抽象层,它可以根据预定的标准和协议把不同结构和原理的存储引擎统一起来,并和SQL Layer无缝对接起来,如此设计能很好把其他在存储做得非常好的第三方给纳入进来,使得Mysql成为一个开放系统。

    5)统一通信

    融合通信的目的是要通过原生态的Socket协议把多种客户端和后端各服务连接起来,算是client端和服务提供方之间的Proxy。因此它为了提高它处理的吞吐量,把每次请求分成段,每段都通过独立的线程池来处理

    6)Darkstar

     

    Darkstar是个为了提供高可用的网络游戏框架,它把服务模块分为Tasking Service、Data Service、Channel与Session Service。其中Tasking Service是每次客户端请求的处理模块,Data Service用于持久化客户端的数据,Channel与Session Service用于保持客户端与服务端或客户端之间的通信和会话。网络游戏的性质决定了需要高并发、状态持久性和横向可扩展性,因此Tasking Service的特性是在任何机器和环境下都能独立运行,并且得到同样的结果,可以通过增加机器增强任务的处理能力,而Data Service和Channel Service保证了这一特性的可行性。

     

    通过以上几个开源服务器的架构,大致可以总结出一个服务器需要以下模块:

    • 连接模块
    • 配置模块
    • 线程管理模块
    • 数据解析和转化模块
    • 任务处理模块
    • 监控和管理模块

    并且都需关注一下问题:

    • 高速连接和数据通信
    • 可配置化的管理
    • 多线程的管理策略
    • 分布式和横向扩展策略
    • 不同阶段处理的分层结构

    因此通过对一些架构的解析,对如何构架一个服务器应该有些宏观性的把控,接下来就需要对这个框框里需要的各项技术的掌握,这也是一个从宏观到微观的过程。


    本文摘自:http://blog.csdn.net/cutesource/article/details/5783213

    展开全文
  • 10种常见的软件架构模式 没有想过要设计多大的企业规模系统?在主要的软件开发开始之前,我们必须选择一个合适的体系结构,它将为我们提供所需的功能和质量属性。因此,在将它们应用到我们的设计之前,我们应该...
  • 本书四位作者均为国际公认的软件开发专家,在模式、面向对象架构、面向对象的分布式系统、设计模式等领域具有丰富的实战经验。四位作者强强联手,撰写了各自擅长的模式部分,旨在为读者讲解常见的设计问题、驱动因素...
  • 二、图片预加载(最常见的虚拟代理应用场景) 图片预加载是一种常用技术,如果直接给某个img标签节点设置src属性,由于图片过大或者网络不佳,图片的位置往往段时间会空白。常见的做法事先用一张loading图片占位...
  • 我们在开发android应用时,模板方法模式在什么情况...但是当我们写功能模块时也会遇到需要使用模板方法的,最常见的情况就是我们的应用中会很多地方使用到网络请求,每个请求都会一定的共同的操作和不同操作,这
  • 设计模式学习(四)

    2017-12-19 15:15:47
    3.代理模式 代理模式的关键是,当客户不方便直接访问一个对象或者不...常见的做法是先用一张loading 图片占位,然后用异步的方式加载图片,等图片加载好了再把它填充到 img 节点里,这种场景就很适合使用虚拟代理。)
  • 应用进程之间的通信和协作通常采用一定的模式常见的有:客户/服务端模型,P2P模型 DNS域名系统 层次域名:www.google.com,国家顶级域名、国际顶级域名、通用顶级域名 DNS被设计成一个联机分布式的数据库系统,...
  • Steve具有五年多ACE使用经验和二十哆年软件开发经验,主要从事多种软硬件环境下的网络协议和C++网络应用程序的开发。 译者於春景软件工程师,1995年毕业于中南工业大学计算机科学系,近十年专业软件开发经验,...
  • 《面向模式的软件架构 卷5:模式模式语言》共分3部分,首先介绍了单个模式,详细阐述了过去累积关于如何描述和应用模式的诸多见解,接着探究了模式之间关系,从组织角度说明了各个模式的领域,最后介绍了...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 540
精华内容 216
关键字:

常见的网络应用设计模式有