zoukankan      html  css  js  c++  java
  • 分布式有感

    最近有点疲于奔命的感觉,孤军作战不是好事阿。

    以前学分布式计算原理与应用,一直对老师和教材有不满。教材虽然写的中规中矩,可是对java的偏向性无疑是一个败笔。书中的Java代码起个helloworld的作用还可以,真要用起来总觉得生涩无比,整天就在流里面转来转去。实验方面,socket的相关代码没有c的清晰,要不是string类封装了一些应手的函数,真不知道有什么优点。RMI看上去很美好,只是这种美好是建立在实验的基础上的。要真的应用起来,单单异常处理就会要命,网络的不确定性太多了,不是随便架起一层就能抹平的。

    最讨厌的是老师整天在吹嘘servlet的高性能,喋喋不休简直是Java活脱脱的营销人员。servlet相对于cgi的优点,在于两点:一是持续运行,可以轻松维护session信息;二是可以拥有线程池,启动快速,不需频繁启动关闭进程,减少系统消耗。

    有时候真的很难理解他的思维,多个cgi进程就需要加载多份程序?Linux早就实现了多个副本共享一个代码段了。没有线程池方便?可以用进程池啊。而多进程抗崩溃的能力不是多线程能够轻易赶上的。fastcgi的出现,也使得cgi的持续运行成为了可能,维护session不再遥不可及。

    最重要的一点是,cgi模型非常清晰易懂。前端的服务器做一个dispatch的作用,将请求分发到不同程序,并可以应付一定的IO请求。cgi程序自身从环境变量读取请求信息(get)或从标准输入流读入(post方法),最后将结果输出到标准输出流,服务器轻松地将cgi的标准输出流重定向到自己身上,再返回给Browser端。      而fastcgi则采取了一种更为激进一点的方式,fastcgi具有daemon进程,服务器端与fastcgi端通过socket进行通讯。

    ajax的出现,使程序的行为变得更加灵活。原来的动态网页,流程一般是从Browser发起请求,服务器端接受请求转发给cgi,cgi程序与数据库交互,返回动态构造的网页,服务器再转发给Browser。而ajax则可以通过在Browser端运行的js,直接在客户端动态构建网页,切实减轻了服务器端的负载。

  • 相关阅读:
    Sum Root to Leaf Numbers 解答
    459. Repeated Substring Pattern
    71. Simplify Path
    89. Gray Code
    73. Set Matrix Zeroes
    297. Serialize and Deserialize Binary Tree
    449. Serialize and Deserialize BST
    451. Sort Characters By Frequency
    165. Compare Version Numbers
    447. Number of Boomerangs
  • 原文地址:https://www.cnblogs.com/Lifehacker/p/cgi_fastcgi_and_servlet.html
Copyright © 2011-2022 走看看