阿里云轻量应用服务器功能很少吗
如果你想放两个以上的网站程序,就别买轻量服务器。我根目录下只放了一个dedecms程序1核1G内存20硬盘中的内存就0.9了。
如果在轻量应用服务器上升级还不如直接多花点钱购买ECS服务器。
刚去社区看了介绍,轻量应用服务器相比ECS:
-多了些简单操作,比如装好环境,不用自己动手
-社区上有性能测试,性能上和ECS一样,但CPU不让持续高负载,例如小网站小博客之类的,用起来没区别了。持续的渲染、转码、机器学习之类的高负载就不行了
-似乎硬盘不让加,而且不能升级为ECS,如果觉得不好用,在期限内申请退款再选ECS。
也就是有傻瓜化操作、减一半硬盘、CPU不让持续高负载的ECS。
ECS准备到期,当时首购买的1核1G内存1M带宽40G高效云盘330一年,现在续费需要836(这个价格差~),放个网站用不了多少硬盘。图片视频之类的静态大文件,可以放云盘。也只有在用编译的时候高占用CPU,这样子用轻量型的比较划算。很多人买了ECS,硬盘和CPU的占用都不高,轻量型的目的也是这个原因。
但我还没买,600还是贵啊。
阿里云轻量应用服务器功能很少吗?-功能和ECS一样的,要是会用ECS,把它当成一个低端ECS来用,不就行了。可以
什么是轻量级应用服务器?
Apache主要采用的是基于进程的Prefork模式(还有基于线程的Worker模式),也就是,对于每个请求会用一个进程去进行服务,进程非常占资源 ,当并发量大的时候,就需要等额的进程,导致的是高内存占用和CPU占用 ,这就是所谓的“重量级”。
而Lighty和Nginx则是基于Reactor模式(可以查阅相关论文)的服务器,其原理是当链接的状态发生改变的时候,呼叫事件分发器来处理链接变化;由于http请求大部分时间都是在等待,所以只需要一个进程就可以同时处理大量链接。这就是所谓的“轻量级”服务器 tomcat
重量级 weblogic比如 tomcat使用struts+hibernate+spring框架的java ee
Oracle更新应用服务器与之前有什么不同
至于前端开发,Oracle已建立各种组件来方便给它的Java开发工具----Jdeveloper10g第三版----编写AJAX网络应用程序。AJAX(异步JavaScript与XML)让开发者建立交互式的,可从网络服务器自动更新数据的网页。
通过设计实验,采用两种方式分别完成数据初始化、数据读取、数据更新等工作,通过对比两种方式的代码量及运行速度来分析两种方式的特点,并最终总结出两种方式各自的优缺点与适用范围。关键词:ADO,OCI,Oracle开发,VisualC++开发引言Oracle以其优越的稳定性和卓越的性能在众多领域里有着广泛的应用,其高性能是Oracle优于其他数据库的关键因素。
使用ADO编写的应用程序可以通过OLEDB提供者访问和操作数据库服务器中的数据。ADO最主要的优点是易于使用、可以访问多种数据库及可以在多种语言中开发。由于ADO建立在自动化(Automation)的基础上,所以ADO的应用场合非常广泛,不仅可在VisualBasic这样的高级语言开发环境中使用,还可以在一些脚本语言中使用,这对于开发Web应用和在ASP(ActiveServerPage,动态服务器主页)的脚本代码中访问数据库提供了操作应用的捷径。
Farrell说,Oracle公司已经将AJAX用在其协作应用套装软件(CollaborationSuiteofapplications)之中了,Oracle公司的企业客户们也越来越多地考虑用AJAX来增强他们的商业应用软件。
这些语言环境各有其优势,C++无疑是追求极致速度的首选。在C++中我们也可以有多种接口方式,可以使用ADO通用接口,可以使用OCI/OCCI,还可以使用ODBC、OO4O及OLEDB等方式。
Oracle首席构架师与副主席TedFarrell称:在新版本中,Oracle致力于用面向服务的构架,建立模块式的应用软件。他还说:应用服务器可与Oracle收购Collaxa所获得的商业进程服务器进行良好的整合,并且还增加了一个称为规则引擎(rulesengine)的软件,以自动运行复杂的多步骤应用程序。
ADO访问数据库的模型示意参见图1。图1ADO模型示意图从上图可以看出ADO是以OLEDB为基础,它对OLEDB进行了封装,所以ADO其实是OLEDB的应用层接口,是介于OLEDB与应用程序之间的中间层。
OCI能够最大程度地控制程序的运行,执行Oracle服务器所允许的多有数据库操作,可以访问Oracle数据库服务器里的所有数据类型,包括标量值、集合和所有对象类型的实例,可以以引用的方式访问对象及其元数据,可以动态获取、修改对象的属性值。
摘要:本文将介绍在VisualC++6。0中开发Oracle应用程序的最常用的两种方式:ADO(ActiveXDataObjects,ActiveX数据对象)与OCI(OracleCallInterface,Oracle调用接口)。通过设计实验,采用两种方式分别完成数据初始化、数据读取、数据更新等工作,通过对比两种方式的代码量及运行速度来分析两种方式的特点,并最终总结出两种方式各自的优缺点与适用范围。关键词:ADO,OCI,Oracle开发,VisualC++开发引言Oracle以其优越的稳定性和卓越的性能在众多领域里有着广泛的应用,其高性能是Oracl...
然而影响终端应用程序的性能不只是Oracle服务程序及硬件环境,应用程序的开发语言和开发方式也有着重要的影响。目前,可以在多种开发语言中开发Oracle应用程序,比如可以在VB、Delphi等高级开发语言中开发,可以以C++开发,也可以以Java语言开发,甚至可以通过ASP、JSP、Perl等脚本语言来访问Oracle。
”Farrell重申了Oracle公司的发展战略集中在JDeveloper和某些与Eclipse相关的软件上面。他说,Oracle公司现在并不打算支持NetBeans开发环境。应用服务器还包括许多其他功能并支持各种标准,比如企业JavaBeans3。
OCI还是其他Oracle开发接口的底层实现,如ADO、JDBC都是在OCI上层的封装,由于OCI是比较底层的接口,少了很多层的封装,可以提供应用程序与Oracle的直接连接,所以OCI可以提供最佳的性能。
正是基于此,Oracle自身的一些工具及许多著名的Oracle数据库工具也都是用OCI开发的,如大名鼎鼎的Toad。笔者的OraExplorer也是基于OCI接口开发。
摘要:本文将介绍在VisualC++6。0中开发Oracle应用程序的最常用的两种方式:ADO(ActiveXDataObjects,ActiveX数据对象)与OCI(OracleCallInterface,Oracle调用接口)。
这种结构为一致的数据访问接口提供了很好的扩展性,不再局限于特定的数据源,只要OLEDB支持的数据源,ADO都可以很好地支持。ADO的另一个特性是使用简单,它封装了OLEDB的复杂的接口,以Connection、Recordset、Command三个主体对象及Errors、Properties、Parameters和Fields四个集合对象搭建起了ADO对象模型,见下图:图2ADO对象模型通过这七个对象及它们的方法,我们就可以完成绝大多数的访问数据库的任务,来实现我们的应用目标。
OCI程序既具有SQL非过程性的优点,也具有第三代程序设计语言的过程性和灵活性,使开发的编程技术具有更强的数据处理能力。同时,OCI在所有运行Oracle的平台上具有良好的可移植性,程序无须太大修改即可运行在Unix/Linux/Windows甚至嵌入式环境下。
但由于C/C++的学习难度比较大,所以OCI的开发难度与ADO、JDBC等开发接口相比要大许多,OCI的每一个函数的参数都非常多,且比较难以理解,而国内关于OCI开发的学习资料非常少,所以使用OCI开发应用程序的程序员相对ADO的程序员要少得多。
Oracle公司已经实现了Java开发工具与其应用服务器的密切合作。它与许多其他的基础软件供应商一样,它免费对外提供开发工具,然后通过销售其服务器软件的许可证,或者“运行时间”来获利。
Farrell说:“我们工具开发组的工作任务是销售软件的运行时间。那是我们的最终目标。最终我们将建立起一个集成的开发环境(IDE),可与世界上的IntelliJs和Eclipses竞争。
在这些方式中,ADO与OCI是应用最为广泛的两种方式,本文将集中力量介绍在VisualC++6。0中这两种接口的开发方法及它们的特点对比。一ADO开发接口简介ADO(ActiveXDataObjects,ActiveX数据对象)是Microsoft为强大的数据访问接口OLEDB(对象链接和嵌入数据库)而设计的,是一个便于使用的应用层的编程接口。
0和如Struts之类的开源开发工具认证。Oracle应用服务器10g的售价为每个处理器5000美元。另外,预计惠普公司将在本周宣布它将提供有关Oracle公司中间件的各项咨询服务。
二OCI开发接口简介OCI(OracleCallInterface)是Oracle数据库调用接口,是由Oracle提供的用于开发前端应用程序及中间件的C/C++开发类库。通过OCI,可以控制所有类型的SQL语句的执行,包括DDL、控制语句(事务、会话、系统)、查询、DML、PL/SQL,以及嵌入式SQL。
应用服务器还可以提供什么服务?除了Serv
2。DemoServlet3。footmark。servlet。DemoServlet4。true5。对于使用Servlet3。0提供的@WebServlet和@WebFilter进行Servlet或过滤器配置的情况,这两个注解都提供了asyncSupported属性,默认该属性的取值为false,要启用异步处理支持,只需将该属性设置为true即可。
对此,在以前通常是采用私有解决方案来提前结束Servlet线程,并及时释放资源。Servlet3。0针对这个问题做了开创性的工作,现在通过使用Servlet3。0的异步处理支持,之前的Servlet处理流程可以调整为如下的过程:首先,Servlet接收到请求之后,可能首先需要对请求携带的数据进行一些预处理;接着,Servlet线程将请求转交给一个异步线程来执行业务处理,线程本身返回至容器,此时Servlet还没有生成响应数据,异步线程处理完业务以后,可以直接生成响应数据(异步线程拥有ServletRequest和ServletResponse对象的引用),或者将请求继续转发给其它Servlet。
异步处理支持:有了该特性,Servlet线程不再需要一直阻塞,直到业务处理完毕才能再输出响应,最后才结束该Servlet线程。在接收到请求之后,Servlet线程可以将耗时的操作委派给另一个线程来完成,自己在不生成响应的情况下返回至容器。
如此一来,Servlet线程不再是一直处于阻塞状态以等待业务逻辑的处理,而是启动异步线程之后可以立即返回。异步处理特性可以应用于Servlet和过滤器两种组件,由于异步处理的工作模式和普通工作模式在实现上有着本质的区别,因此默认情况下,Servlet和过滤器并没有开启异步处理特性,如果希望使用该特性,则必须按照如下的方式启用:对于使用传统的部署描述文件(web。
针对业务处理较耗时的情况,这将大大减少服务器资源的占用,并且提高并发处理速度。新增的注解支持:该版本新增了若干注解,用于简化Servlet、过滤器(Filter)和监听器(Listener)的声明,这使得web。
PrintWriterout=ctx。getResponse()。getWriter();36。out。println("业务处理完毕的时间:"+newDate()+"。");37。out。
flush();38。ctx。complete();39。}catch(Exceptione){40。e。printStackTrace();41。}42。}43。}除此之外,Servlet3。
");16。out。flush();17。18。//在子线程中执行业务调用,并由其负责输出响应,主线程退出19。AsyncContextctx=req。startAsync();20。
。。}一个简单的模拟异步处理的Servlet示例如下:8。@WebServlet(urlPatterns="/demo",asyncSupported=true)9。publicclassAsyncDemoServletextendsHttpServlet{10。
xml)配置Servlet和过滤器的情况,Servlet3。0为和标签增加了子标签,该标签的默认取值为false,要启用异步处理支持,则将其设为true即可。以Servlet为例,其配置方式如下所示:1。
@Override11。publicvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)12。throwsIOException,ServletException{13。
异步执行完毕时,调用AsyncListener的onComplete(AsyncEventevent)方法;。
其中第二步的业务处理通常是最耗时的,这主要体现在数据库操作,以及其它的跨网络调用等,在此过程中,Servlet线程一直处于阻塞状态,直到业务方法执行完毕。在处理业务的过程中,Servlet资源一直被占用而得不到释放,对于并发较大的应用,这有可能造成性能的瓶颈。
异步处理支持:有了该特性,Servlet线程不再需要一直阻塞,直到业务处理完毕才能再输出响应,最后才结束该Servlet线程。在接收到请求之后,Servlet线程可以将耗时的操作委派给另一个线程来完成,自己在不生成响应的情况下返回至容器。针对业务处理较耗时的情况,这将大大减少服务器资源的占用,并且提高并发处理速度。新增的注解支持:该版本新增了若干注解,用于简化Servlet、过滤器(Filter)和监听器(Listener)的声明,这使得web。xml部署描述文件从该版本开始不再是必选的了。可插性支持:熟悉Struts2的开发者一定会对其通过插件的方式与包括Spring在内的各...
resp。setContentType("text/html;charset=UTF-8");14。PrintWriterout=resp。getWriter();15。out。println("进入Servlet的时间:"+newDate()+"。
异步线程出错时,调用AsyncListener的onError(AsyncEventevent)方法;3。异步线程执行超时,则调用AsyncListener的onTimeout(AsyncEventevent)方法;4。
现在Servlet3。0提供了类似的特性,开发者可以通过插件的方式很方便的扩充已有Web应用的功能,而不需要修改原有的应用。下面我们将逐一讲解这些新特性,通过下面的学习,读者将能够明晰了解Servlet3。
newThread(newExecutor(ctx))。start();21。out。println("结束Servlet的时间:"+newDate()+"。");22。out。flush();23。
以@WebFilter为例,其配置方式如下所示:6。@WebFilter(urlPatterns="/demo",asyncSupported=true)7。publicclassDemoFilterimplementsFilter{。
0的变化,并能够顺利使用它进行日常的开发工作。异步处理支持Servlet3。0之前,一个普通Servlet的主要工作流程大致如下:首先,Servlet接收到请求之后,可能需要对请求携带的数据进行一些预处理;接着,调用业务接口的某些方法,以完成业务处理;最后,根据处理的结果提交响应,Servlet线程结束。
this。ctx=ctx;29。}30。31。publicvoidrun(){32。try{33。//等待十秒钟,以模拟业务方法的执行34。Thread。sleep(10000);35。
0还为异步处理提供了一个监听器,使用AsyncListener接口表示。它可以监控如下四种事件:1。异步线程开始时,调用AsyncListener的onStartAsync(AsyncEventevent)方法;2。
}24。}25。publicclassExecutorimplementsRunnable{26。privateAsyncContextctx=null;27。publicExecutor(AsyncContextctx){28。
xml部署描述文件从该版本开始不再是必选的了。可插性支持:熟悉Struts2的开发者一定会对其通过插件的方式与包括Spring在内的各种常用框架的整合特性记忆犹新。将相应的插件封装成JAR包并放在类路径下,Struts2运行时便能自动加载这些插件。
除了Servlet容器外,应用服务器还可能提供其他的JavaEE(EnterpriseEdition)组件,如EJB容器,JNDI服务器以及JMS服务器等