精华内容
下载资源
问答
  • 互联网应用系统(RIA)什么是RIA?RIA是Rich Internet Applications的缩写,翻译成中文为富因特网应用程序(Macromedia中文网站翻译为Rich Internet应用程序)传统网络程序的开发是基于页面的、服务器端数据传递的...
    
    
    什么是RIA?RIA是Rich Internet Applications的缩写,翻译成中文为富因特网应用程序(Macromedia中文网站翻译为Rich Internet应用程序)


    传统网络程序的开发是基于页面的、服务器端数据传递的模式,把网络程序的表示层建立于HTML页面之上,而HTML是适合于文本的,传统的基于页面的系统已经渐渐不能满足网络浏览者的更高的、全方位的体验要求了,这就是被Macromedia公司称之为的“体验问题”("Experience Matters"),而富因特网应用程序(Rich Internet Applications,缩写为RIA)的出现也就是为了解决这个问题。


    富因特网应用程序是下一代的将桌面应用程序的交互的用户体验与传统的Web应用的部署灵活性和成本分析结合起来的网络应用程序。富因特网应用程序中的富客户技术通过提供可承载已编译客户端应用程序(以文件形式,用HTTP传递)的运行环境,客户端应用程序使用异步客户/服务器架构连接现有的后端应用服务器,这是一种安全、可升级、具有良好适应性的新的面向服务模型,这种模型由采用的Web服务所驱动。结合了声音、视频和实时对话的综合通信技术使富因特网应用程序(RIA)具有前所未有的网上用户体验。

     

    “富”的概念包含两方面,分别是数据模型的丰富和用户界面的丰富。数据中的“富”意思是用户界面可以显示和操作更为复杂的嵌入在客户端的数据模型,它可以操作客户端的计算和非同步的发送接收数据。这种模式相对于传统的HTML页面的优点是程序运行于客户端并且程序更多的是和用户进行交互同时更少的和服务器进行交互。平衡客户端和服务器端的复杂的数据模型可以让你有更大的空间去创建更高效和更具有交互性的网络应用程序。“富”同样也描述了全面提升的用户界面,HTML只给用户提供了非常有限的界面控制元素,而富因特网应用程序(RIA)的用户界面提供了灵活多样的界面控制元素,这些控制元素可以很好的与数据模型相结合。传统的因特网模型使用线性的设计,提供给用户一些选择然后用户发送选择结果给服务器,这种单一的模式不符合应用程序的灵活交互的要求和用户的意愿。频繁的服务器请求和页面刷新有很多的缺点包括页面打开缓慢和降低网络带宽。如果采用富客户界面,可以从以前的服务器响应影响整个界面,转移到只有收到请求的应用程序部分才会做出相应的变化。这本质上意味着界面被分解成许多独立的模块,这些模块都会对收到的信息做出相应的反应,有些会和服务器端进行交互,有些是这些模块之间的通信。

     

    请关注那些超越正在失去生命力的HTML标准的技术

    在过去的大约两年中,人们的兴趣一直是想构建一个"富客户端":这是一个用户接口,它比用HTML能实现的接口更加健壮、反应更加灵敏和更具有令人感兴趣的可视化特性。RIA(Rich Internet Application,富互联网应用系统)技术允许我们在因特网上以一种象使用Web一样简单的方式来部署富客户端程序。无论将来RIA是否能够如人们所猜测的那样完全代替HTML应用系统,对于那些采用胖客户端技术运行复杂应用系统的机构来说,RIA确实提供了一种廉价的选择。

    在本专栏中,我将列举一些当前的RIA产品和技术,并且提供一些如何开始应用这些产品和技术的启示。在DevTrends站点和即将发行的近几期Oracle Magazine杂志上,我将详细探讨使用Oracle平台部署RIA的特定技术和策略。

    为什么用RIA?

    基于HTML的应用程序之所以变得流行是由于应用系统的部署成本低、结构简单,且HTML易于学习和使用。很多用户和开发人员都乐于放弃由桌面计算机带来的用户界面改进,来实现对新数据和应用系统的快速访问。与丧失一些重要的UI功能相比,基于Web的方式所带来的好处要更大得多。

    然而,某些应用系统并不完全适合采用HTML技术。复杂的应用系统可能要求多次提取网页来完成一项事务处理,在某些领域中,如医药和财务领域,这往往导致交互速度低得无法接受。让我考虑一个项目管理系统:我们可以将其实现为一个HTML应用系统,但是如果用户可以看到并且操作图表、进度表和各种层次结构,那么显然会工作得更好。

    此外,虽然HTML开始走向简单,但是即使简单的交互活动也仍然需要用很多的脚本来完成。即使一个输入窗体经过仔细的布置和全面的脚本设计,它从浏览器所能发送的也仅仅是简单的"名字/值"对。如果一个HTML窗体能够以XML文档形式发送和接收更复杂的数据结构,那就好多了。

    RIA利用相对健壮的客户端描述引擎,这个引擎能够提供内容密集、响应速度快和图形丰富的用户界面。除了提供一个具有各种控件(滑标、日期选择器、窗口、选项卡、微调控制器和标尺等)的界面之外,RIA一般还允许使用SVG(Scalable Vector Graphics,可伸缩向量图)或其他技术来随时构建图形。一些RIA技术甚至能够提供全活动的动画来对数据变化作出响应。

    RIA的另一个好处在于,数据能够被缓存在客户端,从而可以实现一个比基于HTML的响应速度更快且数据往返于服务器的次数更少的用户界面。对于无线设备和需要偶尔连接的设备来说,将来的趋势肯定是向富客户端的方向发展,并且会逐渐远离基于文本的Web客户端。那些运行在膝上设备上的应用系统,可以被设计成以离线方式工作,或者至少当连接丢失的时候能基本上以离线的方式工作。


    图1给出了一个典型的RIA体系结构。XML通常被用作数据传输的格式,有时也被用来描述窗体的布局。在很多的实例中,客户端可以保持与数据源的连接,这样服务器能够实时地对客户端数据进行更新。对一个Oracle数据的访问可以通过Web服务调用来完成。



    用于富客户端的技术

    下面是一些可用的RIA技术:

    Java:一些相当复杂的客户端应用程序(Oracle的JDeveloper,Eclipse)都是用Java编写的,这说明可以用Java来建立几乎任何一个能够想象得到的富客户端应用程序。到目前为止,Java已经出现几年了,并且完全支持创建基于窗体的用户界面。除了Java基础类(JFCng)中的用户界面组件之外,开发人员还可以使用来自于Eclipse Project的SWT工具箱和许多第三方工具箱进行开发。对于图形来说,可以采用Java 2D API--一个非常完整且非常复杂的图形API。Java还具有对XML和Web服务无人匹敌的支持能力。你可以通过一个Web浏览器使用Java插件软件,或使用Java运行时环境中较新的Java Web Start技术来部署应用程序。使用Java建立富客户端程序的主要缺陷是它的复杂性(即使对简单的窗体和图形也要求编写非常烦琐的代码)。它的优点在于Java对Web标准的全面支持,及该语言和类库的深刻内涵。

    XUL:XUL(念作"zool")是一个基于XML的用户界面语言,它来自于Mozilla的开放源码项目。它可用于建立窗体应用程序,这些应用程序不但可以在Mozilla浏览器上运行,而且也可以运行在其他描述引擎上,如Zulu(一个Flash MX组件)和Thinleys(一个Java实现)。XUL描述引擎都非常小(100K以下),它可以使用XML数据也可以生成XML数据。同Java的情况一样,XUL也有一个非常大的用户团体,这个团体有大量的开放源工具,如Theodore ThinletEditor(见“下一步”)——一个使你能够以图形化方式布局用户界面,且可以生成相应XUL的Java应用程序。XUL的一个主要缺点在于它目前还没有获得一个主要商业实体的支持。XUL最大的优点在于它与Gecko引擎的集成(打开了通向大量Web标准的大门),以及与大多数其他XML用户界面描述语言相比它是一种非常具有表达力和简洁的语言。

    Macromedia Flash和Flex:Flash是一个已经成熟的商业产品,它可以在Web网页中引入交互式的图形界面。最近经过升级后,新版本包含了建立窗体风格的应用程序的功能。尽管Flash作为一个在Web上最广泛部署的前端技术还有争议(取决于所选用的Flash Player版本),但据称已经有98%以上的桌面系统都支持Falsh。由于用来创建动画式图形的Flash工具其功能十分强大和是可视化的(与之相反其它技术要求进行低级的图形编码),所以图形设计人员使用起来十分得心应手。Flah采用的脚本语言是ActionScript--ECMAScript 1.5的一个变种,该脚本语言又被称为JavaScript。Flex产品对Flash增加了一个XML描述语言,使得可以编译用户界面,并且能够用Flash Player来随时进行描述。Flex使得传统的开发机构能更好地了解和使用Flash。Flex和Flash的最大缺点在于对XML和Web服务等标准的支持很有限,而且作为应用开发工具的环境还不大成熟。Flex和Flash的优点在于它可以很容易的用来创建复杂的动画式显示,以及可以使用第三方附件。

    Oracle Forms:Oracle Forms是用来构建以数据库为中心的互联网应用系统的一个成熟的商品化产品。通过Oracle Forms,你可以使用一个输出窗体模块文件的可视化设计器创建窗体。为了便于在该设计工具外部进一步进行处理,模块文件要么采用私有的FMT格式,要么采用XML格式。这些模块文件驱动一个描述窗体的Java运行时环境。除了所有窗体的标准窗口小部件之外,还可以通过集成附加的可插入的Java组件和一些定制的JavaBean来实现更多的功能性。Oracle Forms采用的脚本语言为PL/SQL,Oracle数据库也采用同样的脚本语言。Oracle Forms的一个非常有趣的特点就是,用来建立、编辑和编译窗体模块文件的Java API--开发人员可以通过创建脚本来生成众多的窗体应用程序,或者进行全局性的改动。Oracle Forms的主要缺点是,进行Web部署需要获得Oracle应用服务器的使用许可。它的优点是,它可以与Oracle数据库和Oracle平台的其他部分(如Single Sign-On(单一登录)和Enterprise Manager(企业管理器))紧密集成,对国际化的广泛支持,以及创建以数据为中心应用程序的极高效率。

    开始选择和使用RIA技术

    这里只讨论了可用于创建RIA的技术中的一些有代表性的例子,还有很多其他的技术。当选择一项RIA技术的时候,你需要权衡以下几个因素:

    开放源产品与商品化产品进行对比;
    成熟的功能与最新的特性进行对比;
    轻量级的功能特性范围与UI的丰富性进行对比;
    以媒体为中心的应用程序与以数据为中心的应用程序进行对比;

    无论你选用哪种技术,我都可以提供最好的创建RIA应用程序的实践经验:


    在后台线程获取数据。对于一个富客户应用程序所期望的性能是很高的,如果该应用程序在从一个Web服务收集数据的时候出现暂停,则将被看作是无反应的。
    保持客户端与远程数据的同步。由于不再经常刷新页面,所以如果有可能,将数据的变化以异步的方式推送到客户端是非常重要的。
    雇佣一个图形艺术家,或者至少一个好的UI设计人员。当然,伴随着创建具有可视化的有趣功能的UI的能力,它也带来了将事情搞混乱的机会。

    请给我发邮件,让我了解在你们的组织内部是如何计划使用RIA的,并且一定要经常查看devtrends.oracle.com 站点以获取补充的资源。

    论传统B/S之不足

    过程复杂性
    过程复杂性是由于需要表达一个多步骤或多选项任务或互动作用所引起的。在HTML里,一个多步骤的任务可以在单页内表达出来。但是由于HTML的互动性有限,便可能产生一份很长的页面,使用户感到混乱、笨拙而难以使用。为了避免这种难以忍受的用户体验,便需将任务在表面上看来“自然”的部分处区分成多个步骤,甚至需多个网页共同完成。这种以网页为主的用户界面通常需要反复翻转网页,以解决在顺序步骤中有牵连性的改变。其结果是缓慢、不自然、混乱而且令人感到懊恼的用户体验。

    配置复杂性
    许多Web应用程序允许用户配置自己所要的定制产品——可以是皮包或是计算机,甚至是汽车等产品。但是配置产品是一项很困难的过程,因为在向用户展示所有有效的产品选项组合时,应用程序必须能够表达出有关的复杂性,尤其是当用户可以从数十、数百或数千选项中定制出一个产品时。表达这些复杂性包括指出所需条件、有效和无效组合、一些导致问题的元素以及它们的适当解决方法;为每一项个人选择提供费用信息以及费用总计(一旦有所更改);还有最重要的是容许用户观看最后结果。这些是传统Web应用程序相当难以表现的。

    规模复杂性
    今天,网站内的搜索工具大多是文本性质,间中夹着一些锦上添花的图像。当用户输入他或她的数码照相机准则,有可能是价格、以像素等,网站便接着回复数页符合准则的产品,而大部分都是说明文本。反之,另一种方法则是使用视觉化来简化搜索空间(也就是提供立即和动态的视觉反馈)。在一个视觉化选择照相机的网站,其搜索过程可能如下:网站从一个包含所有照相机种类图像的单屏幕开始。当用户通过复选框、游标或数据输入域来选择筛选准则时,所有不符合准则的照相机图像将被删除,只余下符合准则的照相机可在屏幕上看到。因此,在把选择聚焦至符合准则的数部照相机的过程中,用户可经历一个截然不同,而且和现实生活中的购物经验更相似的体验。

    反馈复杂性
    高度互动性的应用程序如游戏,能使反馈变得复杂,也即是指用户行动和快速移动或情节不断改变的屏幕元素之间的反馈环路。传统的HTML页面一向来都可以说是无法表达这类复杂性。它所需要的是拥有高度互动性和局部智能型的客户端应用程序,以便可以在无需刷新全页或干扰与服务器之间的通信的情况下,响应用户的输入和改变它们的状态或界面。放弃如今依赖服务器的客户机将使用户体验更吸引,同时也解决了反馈复杂性的问题。Web应用程序必须拥有表达复杂性的能力,以容许用户视看复杂的数据、配置多选项的产品、搜索大型数据集以及容许用户与数据之间的互动交换。

    真正的RIA

    为了解决如今的问题,理想中的Web应用程序应该能够:
    1、 利用无处不在的客户机
    2、 在多种硬件平台上毫无更改的操作互联网
    3、 无论低或高带宽的连接都可毫无妨碍的执行
    4、 将处理能力复原给客户(而不仅是提供能力而已)
    5、 提供吸引人的高度互动的用户界面
    6、 表达过程、数据配置、规模和反馈复杂性
    7、 无缝的利用声音、视像、图像和文本
    8、 容许用户在线和离线工作以支持移动工作流程
    9、 容许客户自行决定要在何时存取何种内容和数据(异步内容检索)
    10、 存取多种中间层服务(.NET或Java)和后端数据存储
    11、 采用新崛起的标准如XML和SOAP,为演进中的Web Service为主的网络提供动态高效的前端应用
    12、 与遗旧的应用程序和系统集成
    13、 容许在现有Web应用程序和环境内逐步添加新功能以充分利用现有网络应用投资


    结 构
    RIA本身有能力提供这类Web应用解决方案。如上图,RIA将桌面型计算机软件应用的最佳用户界面功能性与Web应用程序的普遍采纳和低成本部署以及互动多媒体通信的长处集于一体,终于成就了一种可以提供更直观、响应性和有效的用户体验应用程序。它所具备的桌面型计算机长处包括了在确认和格式编排方面提供互动用户界面;在无刷新页面之下提供快捷的界面响应时间;提供通用的用户界面特性如拖放式(drag and drop)以及在线和离线操作能力。Web网的长处如立即部署、跨越平台可用性、采用逐步下载来检索内容和数据、拥有杂志式布局的网页以及充分利用被广泛采纳的互联网标准。通信的长处则包括双向互动声音和图像。

    客户机在RIA内的作用不仅是展示页面,它可以在幕后与用户请求异步地进行计算、递送和检索数据、重新画出屏幕的一部分和密切综合使用声音和图像,这一切都可以在不依靠客户机连接的服务器或后端的情况下进行。

    RIA提供一个强劲的技术平台,使客户机的能力复原到差不多与桌面型计算机软件应用或传统的C/S系统中的客户机能力相似。它适合传统的N层开发过程,同时也能够和遗旧的环境集成以延展现有的应用程序而无需进行修改。它也可以作为基础网络服务的互动表现层,允许用户在线和离线工作。RIA有能力解决各种复杂性,使需要复杂性的应用得以开发并且减少开发成本,同时在很多时候这类应用之所以能够成形主要是拜RIA所赐。

    RIA方案—基于Flash的Flex

    Flex简介
    Macromedia公司被公认为新兴的RIA市场的领导者。今天98%的浏览器上都使用Macromedia Flash客户端软件,因此几乎每个人都可以使用基于Flash的RIA。Macromedia Flex是Macromedia的新服务器产品,它使企业应用程序开发人员能够全面访问RIA的功能。Flex具有基于标准的架构,与当前企业开发人员的工具、方法和设计模式互补。

    Flex应用程序与传统的HTML应用程序的主要区别在于Flex应用程序处理最适合在客户端运行,如字段校验、数据格式、分类、过滤、工具提示、合成视频、行为及效果等。Flex 可使开发人员更好地交付应用程序,这种应用程序使用户可以迅速反应、在不同状态与显示间流畅过渡,并提供毫无中断的连续的工作流。


    Flex 应用程序框架
    如上图所示,Flex应用程序框架由MXML、ActionScript 2.0及Flex类库构成。开发人员利用 MXML及ActionScript 2.0编写Flex应用程序。利用MXML定义应用程序用户界面元素,利用ActionScript 2.0定义客户逻辑与程序控制。Flex类库中包括Flex组件、管理器及行为等。利用基于Flex 组件的开发模型,开发人员可在程序中加入预建的组件、创建新组件或是将预建的组件加入复合组件中。

    这里重点介绍一下MXML。与HTML一样,都是标记语言,它描述了反映内容与功能的用户界面。与HTML不同的是,MXML 可对表示层逻辑与用户界面和服务器端数据绑定提供声明抽象。MXML可将表示与业务逻辑的问题彻底分开,以实现最大程度地提高开发人员的生产率及应用程序的重复使用率。

    Flex的不足
    目前Macromedia最新推出了Flex 1.0 Updater,但它代号为“Brady”的IDE还没有正式推出,目前还在进行Beta 3测试。抛开IDE不说,笔者认为Flex目前还很不成熟,还不利于在实际项目中使用。

    例如,Flex自带的ZipCodeValidator,里面只提供了美国和加拿大的邮编规则,没有其他选择,也无法个性化它。看来只有自己来定义Validator了,但这样一来,和在JS中写正则表达式有什么区别(代码量和JS差不多)?用户需要的是国际化的ZipCodeValidator,这样才能提高工作效率。

    一句话概括
    现在的Flex才是1.0版本,很多地方都不完善,只好自定义才能完成特定的要求。期待着Brady以及Flex后续版本的推出!

    RIA方案—基于JS的Bindows

    Bindows简介
    “Bindows把java script发挥到了第九层!”——网友这样评价Bindows。



    运行中的Bindows

    的确如此,Erik等编写这个框架已经将java script的OOP和基于IE6的DHTML发挥到极点!Bindows 0.93发布的时候已经将IE内置的功能开发得淋漓尽致了,包括Filter、XMLHTTP、Web Service、VML。java script用于客户端界面的显示和处理,XMLHTTP用于客户端与服务器的信息传输。java script在客户端的表现力不容置疑,看看www.bindows.net所表示出来的能力,利用java script几乎可以实现Windows应用程序所能干的大部分事情,XMLHTTP一直以来常被用于实现“无刷新”的Web页面,它和java script配合,可以完成数据从服务器和客户端的传输。

    Bindows的不足
    Erik喜欢那种一次全部载入的方式来实现脚本库,使用过Bindows会发现,在窗口的加载期,需要一个漫长的等待过程,甚至浏览器的进程会产生无响应的情况。按照V0.93,脚本文件的大小是600多K,在一个普通的Web应用中,我们更多时候不会用到Bindows的全部功能,这点Bindows根本没有遵循“用多少去多少”的准则。另外,过多的JS会使CPU占用率陡然增加,产生潜在问题。

    内部大量利用了IE6的技术,没有考虑到非微软平台的浏览器,限制了Bindows的流行。在图表方面,大量采用了VML技术,在IE5,IE5.5这两个版本,VML引擎不是那么的成熟,很多地方的显示不够流畅,会受到带宽和硬件的限制,过分绚丽的图形最终会给用户带来崩溃。“图形方面我是采用VML的,当初太偏执,如果使用SVG来实现可能好许多的,也就是那段日子,我花了非常多的时间去折腾web方面开发。”——有网友这样说。

    一句话概括
    在技术的角度上,从Bindows是可以学到不少东西的,但好像它的学术价值大于它的商业价值。

     

    转载自:http://www.cnblogs.com/ksuifeng/archive/2009/06/03/1495131.html

    展开全文
  • 随着现在技术的演进,分布式微服务几乎会出现在我们所见的任何大型互联网应用系统中,单体应用几乎再难以支撑我们现在的互联网流量压力。一个系统从单体应用逐渐发展成为集群架构,再慢慢的演变成分布式微服务架构,...

    开篇总得说点什么

    随着现在技术的演进,分布式微服务几乎会出现在我们所见的任何大型互联网应用系统中,单体应用几乎再难以支撑我们现在的互联网流量压力。一个系统从单体应用逐渐发展成为集群架构,再慢慢的演变成分布式微服务架构,技术上需要一系列的独立系统与组件支持其运维发展。我们今天只从技术应用领域谈一下一个大型的互联网应用系统在发展过程中涉及到的技术方案与手段。

    数据库

    一切的一切都是数据在说话,一个软件架构离不开数据库的支持。

    1. 关系型数据库:虽然最近NoSql很火,但是其一直替代不了关系型数据库的位置。其原因就是因为关系型数据库强大的关系支持与早已很稳定的数据库事务。代表作:Mysql、Oracle,并且一个应用系统建立之初肯定最先考虑关系数据库的支持,在现在的工作场景中,开发、运维甚至测试和产品对标准sql 的掌握基本已成为必备工作技能。
    2. 非关系型数据库和缓存数据库:缓存数据库算是一类特殊的非关系数据库,例如Redis,memcached以其强大的内存性能常用来作为系统提升的首选。Redis之于memcached算是后起之秀,redis具有更丰富的内容类型,并且每种类型都有自己的独有的计算方法,以计算偏向于数据的方式可以减轻客户端的压力,存储依然不够了怎么办,还有Redis-cluster。另一类Nosql数据库MongoDb我们常会用到类似于文档存储的场景。
    3. 分布式数据库:在单机mysql达到极限的时候,这时候我们会考虑分库分表以支持数据的扩张,这也是一种分布式的数据存储方案。市面上针对不同的场景也有很多分布式数据库产品会用到,例如HDFS、FastDFS等,有时为了处理HDFS与sql之间的差异转换问题,可能会用到hive等产品。
    4. 聚合数据库:当分库分表方案用尽了的时候,我们还能用什么?ES应该算是一种特殊的数据库,虽然他的出生主要是以聚合分析为主,通过倒排索引提高数据检索的速度,但是终究离不开数据的存储,所以也可以勉强把其归为数据库的一种。
      在这里插入图片描述

    消息中间件

    分布式系统中解决不同系统之间通讯少不了的就是消息中间件。可以分为无代理消息架构与有代理消息架构。目前我们基本常用到的是有代理消息架构,类似产品RocketMq、Kafka、ActiveMq等。

    分布式事务

    分布式中最难解决的可能就是分布式事务,最终可能通过一系列柔性事务去解决最终一致性问题,牺牲性能以获得数据的准确性。目前比较或的一些框架有阿里的seata、gts等,或是通过业务上的一些手段例如XA、TCC、多阶段提交来解决。

    分布式锁

    分布式锁的实现方式主要有几种,1、基于mysql实现 2、基于zk实现 3、基于Redis实现 4、基于etcd实现

    分布式ID

    作用不多说,常用到的例如snowflake,美团的leaf也是基于此基础来的。

    任务调度中心

    一个分布式系统中我们需要由对定时任务进行批量管理,手动停止、启动、详情等的管理调度中心。例如xxl-job

    配置中心

    都分布式集群了,零散的配置肯定不能项目自己管理了。配置中心这时候就可以很好的维护起配置文件的作用。常用的apollo,spring cloud config
    借来的图

    注册中心

    在微服务架构里注册中心主要起到了协调者的一个作用;例如zookeeper、eureka

    网关

    作为流量的入口,统一的处理和业务相关的请求,让请求更加安全、快速和准确的得到处理。例如kong,spring zuul

    服务监控

    微服务系统一旦请求出现异常,我们必须得知道是在哪个服务环节出了故障,这样我们就需要对每一个服务,以及各个指标都进行全面的监控。我们常用到的会有 Prometheus,在这之前我们还用过zabbix、openfalcon等。

    全链路跟踪

    在微服务架构中,一个服务链路调用起来特别长,可能会涉及到多个服务,这时候查找问题需要全链路跟踪的出现了,我们叫他 APM系统。有Twitter开源的ZipKin,国内skywalking等都是优秀的组件。
    跟踪抓小偷

    熔断、降级、限流

    熔断、降级、限流三个似乎总是一起出现,但是他们三个又都各司其职。熔断参考的生活中短路保护器的原理,当下游发生故障时,及时算开链路防止造成更大的影响,当它监控到调用下游的服务异常会根据策略进行适当的保护下游,采用防护下游系统的方式来间接保护自己被hang住太多超时的请求,他的策略有三种状态,全开、全断、半开状态。降级可以在熔断之后为服务自动触发降级以保护系统,同时我们也可以采用手动降级的方式,防止在服务熔断时再采取措施,这个方法很好用,大家记住。限流指的是限制达到系统的并发数量,限流的算法你至少应该知道 :窗口、漏斗、令牌桶等等。

    负载均衡

    将流量转发到多个服务器来提高系统的可用性。可以分为三类,1、地域上的负载 DNS;2、硬件的负载 例如F5,做的是集群与集群间的负载;3、软件层面的负载,常用到的有nginx 和 lvs 分别工作在应用层 和 传输层 。

    总觉得还有什么没说到

    在一个大型的分布式系统中,我们还会用到 CDN 作为缓存动静分离使用,在lvs内部我们也应该知道VIP(虚拟IP技术)的原理和应用,同时我们还会考虑到Keepalived 和Haproxy作为系统高可用和负载的技术方案。

    最后的最后

    似乎总有用不完的手段,在整个水平扩展的架构再无新鲜之处外,正在逐渐火热的响应式异步编程正在慢慢燃起。我们可以使用Reactor编程模型去重构我们的系统,基于Reactive目前主要有几大框架,我们可以使用RxJava,Webflux等。目前springboot2.0之后主推的是webflux,受限于现在的JDBC等同步连接,我们可以使用netty进行一些改造,相信我们的系统单体性能可以提高几个数量级了。

    似乎还有最后

    技术一直在发展, 社会一直在进步,我们需要一直努力。总有人在创造,也总有人在生产,一堆堆的技术和方案其实都是为了解决现实问题而生。技术似乎不会有最后,总感觉还是有什么没有想到,希望和您一起聊下去。。。

    展开全文
  • 依我个人的理解,RIA(Rich Internet Application,富互联网应用系统)即一个充分强大的用户端浏览器,这个浏览器可以是 IE(XAML)、Mozilla FireFox(XUL)、Flash(Flex) 等等,说穿了,也就是一个 HTML 的升级而已,...

    依我个人的理解,RIARich Internet Application,富互联网应用系统)即一个充分强大的用户端浏览器,这个浏览器可以是 IE(XAML)Mozilla FireFox(XUL)Flash(Flex) 等等,说穿了,也就是一个 HTML 的升级而已,和 ASPJSP 产生HTML 供客户端浏览一样,你也可能需要各种各样的工具去产生静态的或动态的这些浏览器可以使用的脚本。不管怎么说,这是一个迫切的、必要的趋势!

    <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

     

    以下文章来自 Oracle 的杂志 作者:Cameron O'Rourke

    1.         什么是用RIA

    RIARich Internet Application,富互联网应用系统)技术允许我们在因特网上以一种象使用Web一样简单的方式来部署富客户端程序。这是一个用户接口,它比用HTML能实现的接口更加健壮、反应更加灵敏和更具有令人感兴趣的可视化特性。无论将来RIA是否能够如人们所猜测的那样完全代替HTML应用系统,对于那些采用胖客户端技术运行复杂应用系统的机构来说,RIA确实提供了一种廉价的选择。

    2.         为什么用RIA

    基于HTML的应用程序之所以变得流行是由于应用系统的部署成本低、结构简单,且HTML易于学习和使用。很多用户和开发人员都乐于放弃由桌面计算机带来的用户界面改进,来实现对新数据和应用系统的快速访问。与丧失一些重要的UI功能相比,基于Web的方式所带来的好处要更大得多。

    然而,某些应用系统并不完全适合采用HTML技术。复杂的应用系统可能要求多次提取网页来完成一项事务处理,在某些领域中,如医药和财务领域,这往往导致交互速度低得无法接受。让我考虑一个项目管理系统:我们可以将其实现为一个HTML应用系统,但是如果用户可以看到并且操作图表、进度表和各种层次结构,那么显然会工作得更好。

    此外,虽然HTML开始走向简单,但是即使简单的交互活动也仍然需要用很多的脚本来完成。即使一个输入窗体经过仔细的布置和全面的脚本设计,它从浏览器所能发送的也仅仅是简单的"名字/"对。如果一个HTML窗体能够以XML文档形式发送和接收更复杂的数据结构,那就好多了。

    RIA利用相对健壮的客户端描述引擎,这个引擎能够提供内容密集、响应速度快和图形丰富的用户界面。除了提供一个具有各种控件(滑标、日期选择器、窗口、选项卡、微调控制器和标尺等)的界面之外,RIA一般还允许使用SVGScalable Vector Graphics,可伸缩向量图)或其他技术来随时构建图形。一些RIA技术甚至能够提供全活动的动画来对数据变化作出响应。

    RIA的另一个好处在于,数据能够被缓存在客户端,从而可以实现一个比基于HTML的响应速度更快且数据往返于服务器的次数更少的用户界面。对于无线设备和需要偶尔连接的设备来说,将来的趋势肯定是向富客户端的方向发展,并且会逐渐远离基于文本的Web客户端。那些运行在膝上设备上的应用系统,可以被设计成以离线方式工作,或者至少当连接丢失的时候能基本上以离线的方式工作。

    1给出了一个典型的RIA体系结构。XML通常被用作数据传输的格式,有时也被用来描述窗体的布局。在很多的实例中,客户端可以保持与数据源的连接,这样服务器能够实时地对客户端数据进行更新。对一个Oracle数据的访问可以通过Web服务调用来完成。

     

    o_RIA.gif500)this.style.width=500;" align=baseline border=0>

    1 典型的RIA体系结构

    3.         用于富客户端的技术

    Java

    一些相当复杂的客户端应用程序(Eclipse)都是用Java编写的,这说明可以用Java来建立几乎任何一个能够想象得到的富客户端应用程序。到目前为止,Java已经出现几年了,并且完全支持创建基于窗体的用户界面。除了Java基础类(JFC/Swing)中的用户界面组件之外,开发人员还可以使用来自于Eclipse ProjectSWT工具箱和许多第三方工具箱进行开发。对于图形来说,可以采用Java 2D API--一个非常完整且非常复杂的图形APIJava还具有对XMLWeb服务无人匹敌的支持能力。你可以通过一个Web浏览器使用Java插件软件,或使用Java运行时环境中较新的Java Web Start技术来部署应用程序。使用Java建立富客户端程序的主要缺陷是它的复杂性(即使对简单的窗体和图形也要求编写非常烦琐的代码)。它的优点在于JavaWeb标准的全面支持,及该语言和类库的深刻内涵。

     

    XUL

    XUL(念作"zool")是一个基于XML的用户界面语言,它来自于Mozilla的开放源码项目。它可用于建立窗体应用程序,这些应用程序不但可以在Mozilla浏览器上运行,而且也可以运行在其他描述引擎上,如Zulu(一个Flash MX组件)和Thinleys(一个Java实现)。XUL描述引擎都非常小(100K以下),它可以使用XML数据也可以生成XML数据。同Java的情况一样,XUL也有一个非常大的用户团体,这个团体有大量的开放源工具,如Theodore ThinletEditor——一个使你能够以图形化方式布局用户界面,且可以生成相应XULJava应用程序。XUL的一个主要缺点在于它目前还没有获得一个主要商业实体的支持。XUL最大的优点在于它与Gecko引擎的集成(打开了通向大量Web标准的大门),以及与大多数其他XML用户界面描述语言相比它是一种非常具有表达力和简洁的语言。

     

    Macromedia FlashFlex

    Flash是一个已经成熟的商业产品,它可以在Web网页中引入交互式的图形界面。最近经过升级后,新版本包含了建立窗体风格的应用程序的功能。尽管Flash作为一个在Web上最广泛部署的前端技术还有争议(取决于所选用的Flash Player版本),但据称已经有98%以上的桌面系统都支持Falsh。由于用来创建动画式图形的Flash工具其功能十分强大和是可视化的(与之相反其它技术要求进行低级的图形编码),所以图形设计人员使用起来十分得心应手。Flah采用的脚本语言是ActionScript--ECMAScript 1.5的一个变种,该脚本语言又被称为JavaScriptFlex产品对Flash增加了一个XML描述语言,使得可以编译用户界面,并且能够用Flash Player来随时进行描述。Flex使得传统的开发机构能更好地了解和使用FlashFlexFlash的最大缺点在于对XMLWeb服务等标准的支持很有限,而且作为应用开发工具的环境还不大成熟。FlexFlash的优点在于它可以很容易的用来创建复杂的动画式显示,以及可以使用第三方附件。

     

    Oracle Forms

    Oracle Forms是用来构建以数据库为中心的互联网应用系统的一个成熟的商品化产品。通过Oracle Forms,你可以使用一个输出窗体模块文件的可视化设计器创建窗体。为了便于在该设计工具外部进一步进行处理,模块文件要么采用私有的FMT格式,要么采用XML格式。这些模块文件驱动一个描述窗体的Java运行时环境。除了所有窗体的标准窗口小部件之外,还可以通过集成附加的可插入的Java组件和一些定制的JavaBean来实现更多的功能性。Oracle Forms采用的脚本语言为PL/SQLOracle数据库也采用同样的脚本语言。Oracle Forms的一个非常有趣的特点就是,用来建立、编辑和编译窗体模块文件的Java API--开发人员可以通过创建脚本来生成众多的窗体应用程序,或者进行全局性的改动。Oracle Forms的主要缺点是,进行Web部署需要获得Oracle应用服务器的使用许可。它的优点是,它可以与Oracle数据库和Oracle平台的其他部分(如Single Sign-On(单一登录)和Enterprise Manager(企业管理器))紧密集成,对国际化的广泛支持,以及创建以数据为中心应用程序的极高效率。

    展开全文
  • 大多数运行在互联网上的系统,在用户浏览器和服务器数据交互过程中,对传输的敏感数据通过加密通道(如https)或者对数据进行加密编码后发送给服务器,这种处理保证了数据的安全性,但是给性能测试增加了难度。...

           大多数运行在互联网上的系统,在用户浏览器和服务器数据交互过程中,对传输的敏感数据通过加密通道(如https)或者对数据进行加密编码后发送给服务器,这种处理保证了数据的安全性,但是给性能测试增加了难度。因为一般测试工具是通过录制生成测试脚本的,录制过程中拦截到的请求数据是浏览器已经加密编码过的,对测试人员来说是不可识别和加工的,那么就无法模拟更真实的压力测试。

            解决办法是在录制过程中判断数据是否加密编码,如果有,根据事先约定的标记对数据进行解密,生成可识别的测试脚本,执行测试脚本时根据标记进行加密编码,然后发送给服务器。

    Base64和压缩传输是性能较高而且较通用的加密编码传输方式之一,HyperPacer支持对这种方式的数据传输自动进行解码和编码处理,其它的方式也可以通过定制开发提供支持。

    展开全文
  • 流量互联网应用系统架构设计 上所遵循的基本原 则。 <br />  原则一:假设故障总会发生(design with failure in mind)  在设计和实现大型互联网在线应用时,架构师必须考虑到系统各模块、各应用...
  • 互联网应用系统(RIA)一览

    千次阅读 2005-02-18 15:56:00
    请关注那些超越正在失去生命力的HTML标准...RIA(Rich Internet Application,富互联网应用系统)技术允许我们在因特网上以一种象使用Web一样简单的方式来部署富客户端程序。无论将来RIA是否能够如人们所猜测的那样完
  • 文/沈羽   大型互联网应用的突出特点是应用本身规模大,结构复杂,用户访问量大。设计良好的日志系统,有助于分析流量趋势,帮助管理网络应用;有助于在应用出现问题时,快速查找问题,保证网络...
  • 本课程主要讲解当前网络环境下互联网应用架构设计,课程针对阿里云平台所提供的分步式系统架构支持来分层说明如何搭建一个高可用的应用架构。 讲师介绍: 石立勇,阿里云生态体系首席架构师,致力于阿里云生态体系...
  • 面向互联网公网的接口服务,如果不加防护会导致数据泄露和商业风险。对重要的业务数据,需要做数据访问权限控制,只为特定客户或特定渠道提供授权登陆的访问。访问控制分为用户认证(authentication)和用户授权...
  • 互联网应用软件系统 架构模式的确立作者:欧阳翔Email: ouyang.xiang@gmail.com课程目的. 分享个人心得,以此展开讨论,获得更进 一步的提升;. 统一团队设计思想,达成共识,更好的规 范开发... 普通应用系统架构基
  • 为规范公司线上系统、后台系统等业务系统的安全开发,使开发人员明确在开发过程中需要遵守的安全要求,保证最终开发完成的系统不存在明显的安全漏洞,尽可能地降低系统上线后由于代码层漏洞导致的安全风险,特制定本...
  • 如果单纯按他们的性能高低对他们进行选择,那将毫无意义,不但不会使你的应用加速,反而有可能给你带来灾难的后果,只有通过了解他们的实现方式,根据具体应用具体选择,才会使缓存系统发挥出最大的性能。...
  • 企业级的业务系统,它的特点是业务逻辑是比较复杂的,但用户一般不太大;互联网应用则相反,业务逻辑一般很简单,但面对的是海量用户。
  • 本课程主要讲解当前网络环境下互联网应用架构设计,课程针对阿里云平台所提供的分步式系统架构支持来分层说明如何搭建一个高可用的应用架构。 讲师介绍: 石立勇,阿里云生态体系首席架构师,致力于阿里云生态体系...
  • 海量数据实时计算系统在高并发互联网应用中的原理和实践 占超群(阿里巴巴) 2012-12-05 16:50 永泰大宴会厅C 演讲幻灯片:海量数据实时计算系统在高并发互联网应用中的原理和实践[PDF] 随着...
  • 关于12306——传统信息化系统面向互联网应用的挑战 大型信息化系统提供互联网应用越来越多,从移动电信的网上营业厅、银行网银,到现在的12306火车售票,可以说每一个系统的互联网服务都给大众生活带来非常大的变化...
  • 本课程主要讲解当前网络环境下互联网应用架构设计,课程针对阿里云平台所提供的分步式系统架构支持来分层说明如何搭建一个高可用的应用架构。 讲师介绍: 石立勇,阿里云生态体系首席架构师,致力于阿里云生态体系...
  • 知识点:计算机网络的分类、Windows系统快捷键、 1、Windows系统快捷操作 1.1 Windows键  Windows键,简称“Winkey”或“Win键”,是在计算机键盘左下角 Ctrl 和 Alt 键之间的按键,台式机全尺寸键盘的主键盘区...
  • Nginx服务器在互联网系统架构部署中的应用 nginx主要有三种应用: 1.互联网系统部署时做反向代理 正向代理是指:通过内网访问外网应用服务 反向代理是指:通过外网访问内网应用服务 nginx可以对内网服务进行...
  • 为牢牢把握互联网+战略转型的契机,创新企业采购模式,提高采购效率,近期,互联网电子采购系统在集团全面应用,将采购工作进行升级和转型。这是集团采购工作的一次历史性变革,我集团也是目前垦区首家应用网络电子...
  • <br />usb key,帮助实现安全的互联网应用系统应用。 <br />(一)将客户端登录时所需的认证信息,(如用户名,密码,QQ,邮箱,电话,身份证号等等)均可写入到usb key内,可以写入算法,也可写入代码...
  • 个性化推荐系统互联网中的应用

    千次阅读 2012-12-08 17:31:07
    1.个性化推荐系统定义: 个性化推荐是根据用户的兴趣特点和购买行为,向用户推荐用户感兴趣的信息和商品。随着电子商务规模的不断扩大,商品个数和种类快速增长,顾客需要花费大量的时间才能找到自己想买的商品。...
  • 立足互联网行业,架构通常指的是技术架构,更具体一点的说是系统架构、软件架构,或者是最常见的网站架构。本期我们共同探讨2017年互联网时代,实战型技术架构的演进过程及其优缺点等诸多方面。 京东分布式数据库...
  • 互联网应用与企业级应用的区别总结为一下3个方面: 1:企业级应用业务逻辑较为复杂,涉及大量的数据并且需要多人协同处理完成;互联网应用业务逻辑比较简单,不要太多人手处理,大部分是通过页面进行增删查改。 2...
  • 互联网及其应用

    2018-11-01 14:23:05
    互联网网络系统由网络硬件和网络软件组成。网络硬件包括:服务器,工作站,网卡,通信介质。网络软件包括:网络协议和协议软件、网络通信软件和网络操作系统 互联网的网络体系结构是一种高度结构化的设计方式,将一个...
  • 第三方视频应用系统开辟互联网营销蓝海文/王易见 目前的视频应用还仅仅局限于像视频分享、P2P视频平台这类,不过我认为网络视频会像普通门户、电子商务这样的行业一样逐渐普及。这不但是视频行业的需要,更是眼下...
  • 我理解的互联网应用和企业应用开发 博客分类: 互联网 IT技术 项目管理企业应用互联网电子商务 前段时间,我写过一篇该主题的博客,但写完了,我觉得还是没有谈到本质,这篇文章算是续篇。 互联网...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,538
精华内容 9,815
关键字:

互联网应用系统