本次Build大会宣布的另一个更新,就是网站服务支持Java。熟悉Java的用户对于Cloudfoundry等PaaS技术一定不陌生,现在,Azure上也可以实现类似功能了。Azure的网站服务在架构上与Cloudfoundry十分类似,都是事先准备一大堆server,然后根据用户部署,为用户分配某几个server和负载均衡器,组成用户的一个虚拟集群。Azure网站服务底层是用Windows server+IIS组成集群。IIS+插件可以支持.NET, Python, PHP, Nodejs运行。不过IIS不能和Java Webserver(比如Tomcat)集成,因此,Azure网站服务在支持Java方面,与支持其他语言稍有不同,就是没有采用IIS,而是直接用Windows Server+Tomcat/Jetty


下图是Azure网站服务的简化架构图。主要有4个部分,分别是负载均衡器,Web集群,代码库,代码发布

Azure国际版及中国版功能更新:网站服务支持Java (以及网站服务架构简介)-LMLPHP

当用户部署网站时,Azure会为用户分配相应的资源,组成用户的集群,用户可以发布代码到网站代码库上,这部分代码会被映射给他的集群(就是把用户代码目录通过SMB方式挂载到用户的虚拟机上面)。不同用户的资源和代码都是相互隔离的。当用户访问自己的网站时,负载均衡器会根据URL转发请求道不同的集群上去。

Azure国际版及中国版功能更新:网站服务支持Java (以及网站服务架构简介)-LMLPHP

用户在部署Azure网站时,有几种不同模式,包括免费、共享、基本、标准。他们之间的差别,就在于资源的隔离性和配额上面。免费喝共享模式下,不同用户的网站可能运行在同样的虚拟机下,Azure通过进程隔离不同租户的网站。在后两种模式下,用户的网站是运行在独享的虚拟机上。


以Java为例,每个网站在每个虚拟机上对应一个Tomcat进程。Azure缺省提供了Tomcat 7和Jetty 9.1作为Java Web服务器。如果用户希望使用不同版本,可以自己上传Java Web运行时和JRE。采用这种方式自己上传时,一些“重量级”的server,比如Websphere和Weblogic可能就无法运行了


了解了架构以后,就可以简单测试下。首先,对于一个网站,我们可以在配置页启用Java

Azure国际版及中国版功能更新:网站服务支持Java (以及网站服务架构简介)-LMLPHP

保存后再次访问网站,会看到如下页面,代表网站已经顺利转为Java站点,相当于网站对外端口从IIS切换为Tomcat/Jetty了(此时该网站原有的.NET/PHP等应用就无法被访问了)

Azure国际版及中国版功能更新:网站服务支持Java (以及网站服务架构简介)-LMLPHP

下面就可以发布Java项目代码了。点击页面上的FTP或Git,可以进行发布。这里,我们采用之前介绍的网站扩展服务(点击打开链接),直接通过浏览器上传


在地址栏中,将网站名http://xxxx.azurewebsites.net/替换为http://xxxx.scm.azurewebsites.net/ (在域名中间增加scm),然后继续。浏览器要求输入账号和密码,这里的账号和密码跟FTP一致。输入后,即可进去Kudu页

Azure国际版及中国版功能更新:网站服务支持Java (以及网站服务架构简介)-LMLPHP

然后点击菜单栏上的Debug console,进入目录视图

Azure国际版及中国版功能更新:网站服务支持Java (以及网站服务架构简介)-LMLPHP

点击进入Site->wwwroot->webapps,然后拖动本地的WAR包到浏览器中

Azure国际版及中国版功能更新:网站服务支持Java (以及网站服务架构简介)-LMLPHP

上传完毕后,Azure会自动解压缩WAR包到该目录。比如这里Hello.war生成了Hello目录,里面就是WAR包中的class和jsp文件

Azure国际版及中国版功能更新:网站服务支持Java (以及网站服务架构简介)-LMLPHP


下面,我们可以试着访问下网站的URL,即http://xxxx.azurewebsites.net/Hello

Azure国际版及中国版功能更新:网站服务支持Java (以及网站服务架构简介)-LMLPHP

成功了!


Java网站服务与其他Azure网站服务一样,支持网站的各种功能,包括Git发布、自动伸缩等等。Java Web应用开发者,赶快来试试吧

09-18 17:32