天下大势,分久必合,合久必分。三国演义开头的这句话是对Office 365整体架构的演变最生动的概括。
互联网业界的同行,对微软存在偏见甚至鄙视者大概不算少数,也许会觉得标题里的微服务(micro-services)貌似是个多少有点潮的概念,好像和微软的技术形象有点不符,更何况是Office 365这样历史悠久的庞然大物。但事实上,微软很多团队都是与时俱进的,而Office 365架构的分分合合某种程度上也能侧面反应这一点。
Office 365是一个多义词,本文讨论的Office 365是以Exchange Online为核心的一系列Office online services产品,从技术范畴上并不包括普通用户所熟悉的Office客户端产品,例如Word和Excel,当然也不是微软以每年授权的方式销售给个人用户的套装。
Office 365的前身是Exchange Server(以下简称Exchange),是一个非常典型的on-premise的企业电子邮件服务器,早些年和IBM Lotus Notes以及Novell GroupWise竞争。第一个正式的版本是在1996年,可以想象那个时候的软件基本是跑在单台服务器上的,邮件数据也是存在本地硬盘或者SAN。后来Active Directory分离出去成为Windows Server 2000的一部分以后,就有了分布式系统的架构,而且AD Domain Controller也可以是和Exchange独立的role。Exchange 2000可以支持8个节点的集群。这个时期的架构,已经可以称为scale out的一个例子,但每台服务器的角色都是等同的,所以是“合”的时期。
Exchange 2003开始支持通过internet的客户端,包括基于web的访问方式,于是有了Front End和Back End两种server role。Web界面的Outlook Web Access,Outlook客户端用的RpcHTTP,IMAP,POP等协议头被放在了Front End上,前面还有Network Load Balancer。这个时期已经开始了“分”的时期。到Exchange 2007和Exchange 2010时候,一共有了Mailbox, Client Access, Hub Transport,Edge Transport, Unified Messaging多个服务器角色。其中数据主要存放在Mailbox Server上,并且用软件实现了High Availability,包括replication和跨地域failover。之前的Front End变成了Client Access,通过MAPI RPC访问Mailbox Server上的数据,而邮件中转的处理交给了Transport服务器。这个版本的Exchange把“分”的模式又增近了一步,而这种架构作为on-premise软件来讲已经属于相当现代和成熟的模式。
(点击放大图像)
来源: http://www.infoq.com/cn/articles/office-365-arch-evolution-and-micro-service-practice