与WildFly项目经理Jason Greene谈WildFly 8

Red Hat JBoss部门今天宣布WildFly 8 正式发布,其前身是JBoss Application Server,我们对此进行了报道。Jason Greene是Red Hat JBoss部门的WildFly项目经理和JBoss EAP平台架构师。InfoQ采访了Jason Greene,以了解这个新产品的更多信息。由于WildFly包含了一个全新的Web服务器(Undertow),这是个很重要的产品,我们的采访从这开始,为什么会有这样一个决定?

嗯,正如你所知,最近几年,Web应用取得了显著的发展,对Web服务器的需求远超以往。由于计算设备的增长,Web应用现在面对巨大数量的客户端,对富界面的需求已经导致更频繁的、更多面向数据的流量。使用WebSocket一类的技术进行全双工通讯已经成为普通应用。面对这些挑战,我们觉得最好的解决方案是重新设计一个高性能的服务器。

此外为了满足现代应用的需求,我们也希望解决一些通常使用替代原生Web服务器解决的基础服务问题。举例来说,通过Undertow,WildFly现在不需要Apache或者Nginx就能够扮演高效的非阻塞反射代理角色。

另一个因素是在云环境中减少端口数量的需求。在云环境中,一个系统可能运行了几百个甚至几千个WildFly实例。基于HTTP使用HTTP Upgrade可以升级成多种协议,Undertow提供了复用这些协议的能力。

最后,这也给了我们一个机会来构建一个超越Servlet规范、对开发人员非常友好的系统。最终产出的系统非常小,而且只有很少的依赖、很少的内存占用并且是可嵌入的。其易于使用的API同时支持非阻塞式和更传统的面向阻塞流的Web开发。

InfoQ:你能谈谈WildFly 8中审计日志的详细信息吗?

WildFly的审计日志功能之前是在EAP 6.2中增加的,后来我们把它引入到了上游产品中。如果启用RBAC,只有审计员或超级管理员角色能够修改审计日志配置。任何针对管理模型的操作都会被记录在日志中。由于像CLI的tab-completion(译注:按tab键自动完成填充)功能会导致大量的读操作,因此你可以配置只记录那些模型状态发生变化的操作。同时,在MBeanServer内部或者在核心控制器中,当我们的JMX门面调用核心管理模型时,我们记录所有的JMX访问。

我们支持日志写到本地文件或者写到系统日志服务。系统日志服务可以是本地的,也可以是远程的,我们支持通过UDP和TCP协议发送日志。同时还支持TLS(对rsyslog测试),包括可选的客户端授权认证。作为对我们社区和客户需求的回应,现在Syslog记录只以JSON格式输出,这样就可以更容易地增加日志字段。但是,按照它现在的写入方式,将来也可能增加其它输出格式。

日志记录的信息包括:
-该操作是否修改了管理模型
-该操作是否在服务完全启动后立即执行。
-认证的用户名
-操作的来源接口,也就是说它是来自Web接口、JMX接口还是原生接口
-调用者的地址
-操作是否成功
-操作本身
-域模式下的UUID,用于跟踪其从域控制器到主机控制器然后到管理服务器的操作。

示例记录

- - - - - - - - - - ----

  2014-01-23 10:30:16 - {
   "type" : "core”,                      
   "r/o" : false,
   "booting" : false,
   "version" : "8.0.0.Final-SNAPSHOT",
   "user" : "$local",
   "domainUUID" : null,
   "access" : "NATIVE",
   "remote-address" : "127.0.0.1/127.0.0.1",
   "success" : true,
   "ops" : [{
       "address" : [{
           "system-property" : "xxx"
       }],
       "operation" : "remove",
       "operation-headers" : {
           "caller-type" : "user",
           "access-mechanism" : "NATIVE"
       }
   }]
}

InfoQ:你能介绍一下补丁系统吗?它是否能向一个正在运行的系统打补丁?

补丁功能是我们最早为JBoss EAP用户开发的,但我们开源模型的一个关键元素是,我们为企业产品开发的所有主要功能,都要移植到上游产品中。因此JBoss EAP 6.2和WildFly 8都有这个功能。该功能包括一组新的管理操作和CLI中一个名为“patch”的新命令。你可以使用此命令将JBoss产品补丁更新到一个单独的本地或远程服务器实例中。你可以对运行中的系统执行该命令,但它只是补丁阶段,必须重新启动才能让补丁生效。如果发现有问题,你可以回滚补丁。只要你愿意,系统能够保存所有的补丁历史记录,因此你可以回到任意时间点。如果你对其内部感到好奇,补丁基础服务建立在WildFly加载的模块类之上,本质上是通过增加额外的模块文件夹,扩展或替换那些初始安装时包含的模块。

我们计划在将来的版本中,继续开发此功能,包括提供界面,以向导方式更新这些补丁。

InfoQ:哪些LDAP目录可以用于保存RBAC凭据?活动目录可以吗?

可以。我们对LDAP的支持非常灵活,你可以调整过滤器来匹配目录提供者的Schema。因此理论上它支持包括活动目录在内的任意LDAP服务器。举例来说,对于活动目录,你可以设置用户名过滤器指向sAMAccountName。

InfoQ:除了品牌的变化,使用WildFly与JBoss EAP有什么不同?EAP是否更加保守一些?

WildFly倾向于以小步快跑的方式交付最新的技术。我们的目标是每年至少发布一个大版本,在大版本之间频繁地发布里程碑版本。WildFly采用社区支持模型,开发者和用户在论坛中互相帮助,分享代码。但是他们关注的、感兴趣的,通常都是当前的产品和技术。

另一方面,EAP更加保守,它关注的是长期运行的分支,会维护7-10年并保持补丁更新。这些分支上的功能更新是渐近式的,且更易于使用。(我们从上游树反向移植功能到老版本,重点是保持兼容性。)EAP还有许多其它好处,除了订购中包含的分发外,还包括供应商认证和一致性、庞大的知识库和有保障的服务水平协议。

InfoQ:我们多久能看到满足Java EE 7规范的JBoss EAP?

我现在还不能确定具体的日期,但我确定下一个将要发布的大版本EAP 7准备提供Java EE 7的支持。因为最终的EAP是继承自WildFly,因此它会兼容WildFly 8(以及WildFly的后续版本)。

InfoQ:对于Oracle决定停止GlassFish的商业支持,你认为会对JBoss EAP更广泛的应用产生多大影响?

我不想推测最终会发生什么,但我们已经注意到从GlassFish转到WildFly和EAP的兴趣在增加。尽管选择什么样的应用服务器需要考虑很多因素,但我们觉得致力于开源和社区是一个重要的因素。而这些一直是Red Hat基因的组成部分,我们写的每一行代码都是100%开源的。

更多信息请访问WildFly网站。

原文英文链接:Interview with WildFly Lead Jason Greene on WildFly 8

你可能感兴趣的:(与WildFly项目经理Jason Greene谈WildFly 8)