1.概述
互联网是20世纪最伟大的发明之一。1975年,美国布鲁克林的罗伯特·卡恩发明了TCP/IP协议;后来,美国国防部高研署(DARPA)将TCP/IP的软件提供给加利福尼亚大学Berkeley分校后,TCP/IP很快被集成到Unix中,同时出现了许多成熟的TCP/IP应用程序接口(API)。这个API称为Socket接口。TCP/IP协议和Socket套接字奠定了互联网的发展。
互联网的最伟大之处在于:把单一的世界通过一种叫做网络的方式连接在一起。凭这一点,信息可以互联,世界可以沟通;凭这一点,互联网足够伟大。
但互联网的发展有其逻辑,我个人把互联网发展的逻辑归结为两条:1)从单一服务到复杂服务,再到各自分治的服务;2)从低效的传输方式到高效的传输方式。我个人将在几篇博客中试着把这一切讲明白。
2.互联网与HTTP
互联网的发展,离不开TCP/IP协议族。即使OSI试图用七层协议来建立网络的标准,但用于TCP/IP协议成为了事实的标准。(OSI的七层协议和TCP/IP的四层协议的区分如下图所示)
互联网最开始的雏形是ARPANET,最初的ARPANET只有4 个节点,随后的ARPANET把很多节点连接了起来。
真正让全世界连接起来的互联网是万维网,即World Wide Web。万维网的主要思想是:1)网页服务器;2)网页浏览器;3)不同浏览器和服务器连接的协议。万维网连接的最著名或者最有意义的协议是HTTP,其他万维网协议均借鉴了HTTP。
因此,后来的互联网和HTTP发展息息相关。
3.最基本的架构:单一服务
互联网最基础的服务是:单一服务。
单一服务架构如图所示:
单一服务的特点是:
1)所有的功能集成在一个项目工程中并部署到服务器;
2)应用与数据库分开部署。
单一服务的优点在于:
1)服务简单;
2)管理简单;
但单一服务不适用于大型服务场景,不适用于多任务和跨语言开发的场景。
4.服务升级版:垂直服务
随着服务的进一步升级,互联网成立垂直服务。垂直服务如图所示:
垂直服务的特点是:
1)大型项目进行拆分;
2)服务之间耦合性较大。
垂直服务是对单一服务的升级版。
5.大型网络版:SOA
随着网络服务的大型化,SOA成为了服务发展的趋势。
SOA的结构图如图所示:
SOA的特点是:
1)基于 SOA 的架构思想将重复公用的功能抽取为组件,以服务的形式给各系统提供服务;
2)各项目(系统)与服务之间采用 WebService、RPC 等方式进行通信;
3)使用 ESB 企业服务总线作为项目与服务之间通信的桥梁。
SOA是进一步的功能拆分和细化。
6.最新的思想:微服务
最新的思想是:微服务。微服务的架构如下:
微服务的特点是:
1)将系统服务层完全独立出来,并将服务层抽取为一个一个的微服务;
2)微服务中每一个服务都对应唯一的业务能力,遵循单一原则;
3)微服务之间采用 RESTful 等轻量协议传输。
微服务是更高一级的拆分,微服务意味着每个服务都独立起来。但微服务也意味着管理的更高难度,意味着服务治理更不容易。
6.结论
从单一服务到微服务,是互联网发展的必然。因为,互联网承载的任务越来越多,其结构必然越来越复杂;结构的复杂性,也意味着其管理结构会采用更合理的方式。但把服务进行拆分,也意味着管理更加困难,这非常考验工程师的设计能力。
另一方面,微服务说是一种趋势,毋宁说是一种趋势。微服务听起来很高大上,但其实也仅仅是互联网上的一种组件化,这和谷歌的推广有关。微软的COM没有推广,但微服务却推广起来了,很大原因和企业的发展有关,和技术并没有必然联系。但这种模块化思想,值得研究和思考。