Month: August 2011

收藏一本书: 《大规模Web服务开发技术》

http://product.china-pub.com/57048日本人写 目录回到顶部↑ 《大规模web服务开发技术》 第1章 大规模web服务的开发定位——掌握整体 2 第0课 本书的起源——本书讲述的范围 3 从事大规模web服务开发——面向大学生的hatena实习 3 本书讲述的内容 3 本书不讲述的内容 5 致今后从事大规模web服务的人 5 第1课 大规模服务和小规模服务 6 hatena的服务规模 6 hatena是大规模,google、facebook是超大规模 8 小规模服务和大规模服务的区别 9 应对大规模数据量 11 第2课 持续增长的服务和大规模化的障碍 13 web服务的困难 13 hatena的成长经历 13 系统增长战略——最小化开端、预见变化的管理和设计 17 第3课 服务开发现场 18 hatena的技术团队体制 18 hatena的沟通方式 19 服务开发的实际状况 19 .开发所用的工具 21 总结 23 第2章 大规模数据处理入门——内存和磁盘、web应用程序和负载 24 第4课 hatena …

收藏一本书: 《大规模Web服务开发技术》 Read More »

用mod_proxy连接一个Apache与两个Tomcat

[img][/img]这类文章在网上太多了,但我看到的都是乱糟糟的,要么没重点,要么只讲配置不讲道理。干脆我自己写一个 1.概述 这种设计可以称作“反向代理”,即把web server当作app server的代理. Apache的模块mod_proxy就是为此而生的 Proxy就是我们要配的第一个东西 proxy会导致一个问题。tomcat的host/port与apache的hostp/port肯定有所不同。那在tomcat中的webapp下执行servlet.getServerName()和getServerPort()时,拿到的主机名和端口是什么? 如果不作配置的话,就是tomcat自己的host/port;这显然不是我们想要的。我们要的是用户请求的host/port,即apache的host/port.  我们要配置的第二步就是来解决这个问题。 最后一个问题跟session stickiness相关. 由于我们有两个tomcat,怎么让同一个session下的所有请求都发到同一个tomcat上呢? Apache通过mod_proxy_balancer解决这个问题。这是我们要配的第三个东西。 下面就一个一个来配: 2.配置proxy #apache的httpd-vhosts.conf <VirtualHost *:80> … #先只配一个tomcat ProxyPass /tomcat/ http://tomcat:8080/ ProxyPassReverse /tomcat/ http://tomcat:8080/ #上面两句话会把 http://apache/tomcat下的所有请求转发给 http://tomcat:8080 … </VirtualHost> 3.解决proxy引发的request.getServerName()问题 <!–Tomcat的server.xml–> <Connector port=”8080″ protocol=”HTTP/1.1″ connectionTimeout=”20000″ redirectPort=”8443″ proxyName=”apache” proxyPort=”80″ /> <!–这样一来,拿到的getServerName()和getServerPort()就是用户真正请求的东西–> 4.1 – 把两个tomcat做成一个集群 <VirtualHost *:80> … #两个tomcat并作一个集群 <Proxy balancer://tomcat-cluster> BalancerMember http://tomcat:3535 BalancerMember http://tomcat:3636 </Proxy> #把proxy指向这个集群 …

用mod_proxy连接一个Apache与两个Tomcat Read More »

Apache的Virtual Host分两种

摘自 Apache Cookbook There are two primary forms of virtual hosts: IP-based virtual hosts, where each virtual host has its own unique IP address; and name-based virtual hosts, where more than one virtual host runs on the same IP address but with different names.

Tomcat/Jboss 中自定义 SESSION_COOKIE_NAME

即把session id的cookie名从默认的JSESSIONID改成其它的什么名字。解决办法是把这些名字以system property方式注入: Tomcat http://tomcat.apache.org/tomcat-6.0-doc/config/systemprops.html#Sessions org.apache.catalina.SESSION_COOKIE_NAME An alternative name for the session cookie. Defaults to JSESSIONID. Note that the Servlet specification requires this to be JSESSIONID. You should not rely on being able to change this. org.apache.catalina.SESSION_PARAMETER_NAME An alternative name for the session path parameter. Defaults to jsessionid. Note that the Servlet specification requires this …

Tomcat/Jboss 中自定义 SESSION_COOKIE_NAME Read More »

Cookie的默认path

服务端把cookie发给浏览器时,如果没有指定path,则path等于当前Request的URL的上一级路径 浏览器发出一个请求时,会把本地所有path处于“当前Request的URL的上一级路径”之上的cookie都发给服务器。 比如浏览器现有三个cookie, path分别为 "/", "/abc", "/abc/def" 则请求 "/abc/ghi/hi.do"时,第1个cookie和第2个cookie会被发给服务端,第三个不会