前言
前 言
在传统的 Web 应用中,只用一台 Web 服务器响应各种各样的客户请求。熟悉 Java Web 开发技术的软件工程师阿云在这种 Web 服务器中开发了一个购物网站,如图 1 所示。该购物网站被应用发布到 Web 服务器中后,很多客户通过浏览器访问购物网站,浏览器与购物网站之间通过 HTTP(超文本传输协议)进行通信。
随着该购物网站的蓬勃发展,每日访问量由最初的数千人增加到数百万人。为了保证快速响应每个客户的请求,购物网站与时俱进地改进其软件和硬件,如优化访问数据库的性能,将购物网站发布到高性能的服务器中。
即便如此,在“双 11”时,该购物网站还是遇到了瓶颈,服务器马不停蹄地运转,还是应接不暇,无法及时响应每个客户的请求。
阿云:“服务器已经开足马力运行,还是来不及同时响应几十万名客户的并发请求,有什么解决办法突破瓶颈呢?”
答主:“在现实生活中,如果一个人无法及时完成一个任务,就把该任务划分成多个子任务,分派给多个人同时执行,这样就能及时完成任务了。解决购物网站并发访问的瓶颈,也可以采取 同样的思路,把购物网站的服务拆分成多个微服务,这些微服务分布在多台主机中,由多台主机 同时执行,就能及时响应更多客户的请求了。”
如图 2 所示,购物网站的服务被拆分成用户管理、订单管理、商品管理、库存管理等微服务模块,把这些微服务模块部署到多台主机上各自独立运行,就能同时为更多的客户提供服务,从而提高购物网站的并发性能和运行性能。
图 2 把购物网站的服务划分成多个微服务
阿云:“如图 3 所示,从一个网站的业务中拆分出多个微服务,就像把一个西瓜切成好多份,看起来很简单。”
图 3 拆分微服务就像切西瓜
答主:“切西瓜的比喻很形象。但在具体开发时,会遇到很多复杂的问题。例如,业务逻辑之间有着千丝万缕的联系,如何划分和开发微服务呢?此外,微服务需要部署到什么样的容器中, 客户端如何访问微服务,微服务之间又如何相互通信呢?”
阿云:“这倒也是,微服务分布在不同的主机中,它们的通信比独立的单体应用程序内部模块之间的通信要复杂很多。如果有现成的分布式微服务框架可以使用,就能大大提高开发效率。”
答主:“那就要请出本书的主角 Spring Cloud Alibaba 框架,本书将揭开使用该框架开发微服务的神秘面纱。”
阿云:“学习本书内容需要具备什么预备知识呢?”
答主:“需要熟悉 Java 语言、Java Web 开发、Spring 框架和 Spring Boot 技术。假如仅仅熟悉 Java 语言,也可以阅读本书,不过在动手实践时,还要自行学习相关的 Java Web 开发和 Spring 框架知识,才能熟练地开发和部署微服务。在我写的《精通 Spring :Java Web 开发技术详解》一书中,详细介绍了用 Spring 框架开发 Java Web 应用的技术。”
阿云:“我的一些同事熟悉其他编程语言,但是不熟悉 Java,他们也能看得懂本书吗?”
答主:“本书不仅介绍如何编写微服务的程序代码,还介绍了 Spring Cloud Alibaba 框架中各种组件的运行原理、作用和配置,这部分内容适用于所有希望学习微服务开发知识的读者。”
本书资源及服务
本书的学习资源包括本书关键知识点的讲解视频和源代码,读者可以使用手机扫描书中的二维码进行观看,也可以扫描以下资源链接二维码获取本书的代码资源。
作者为本书提供了技术支持网站,该网站提供了与本书相关的学习资源,以及书中提及的软件下载链接地址(分别以链接 1、链接 2、链接 3 等形式标明),请扫描以下技术支持二维码获取相关资源。
作者在写作过程中虽力求严谨细致,但由于时间与精力有限,书中疏漏之处在所难免。如果读者在阅读过程中有任何疑问,也请通过扫描以下技术支持二维码与我们取得联系。
资源链接二维码 技术支持二维码
本书能够顺利出版,是作者、编辑和所有审校人员共同努力的结果,在此表示深深的感谢。同时,祝福所有读者在职场中一帆风顺。
编 者2024 年 9 月