重构单体应用为微服务

前言

Floyd Smith

近年来,微服务在应用开发和部署方面取得了显著的进步。将应用开发或者重构成微服务以分离服务,通过 API 以明确的方式来相互“对话”。例如,每个微服务都是自包含(self-contained),各自维护自己的数据存储(这非常有意义),可以独立更新其他服务。

使用基于微服务的方式使得应用程序开发变得更快更容易管理,它只需要较少的人力就能实现更多的功能,可以更快更容易地部署。把应用程序设计成一套微服务,更加容易在多台具有负载均衡的服务器上运行,使其能够轻松应对需求高峰、由于时间推移而平稳增长的需求和由于硬件或者软件问题导致的宕机事故。

微服务的最大进步在于改变了我们的工作方式。敏捷软件开发技术、应用迁移云端、DevOps 文化、持续集成与持续部署(CI/CD)和容器应用都使用了微服务来革新应用开发与交付。

无论是作为反向代理还是高性能的 web 服务器,NGINX 软件都与微服务和上述列出的所有技术有着紧密联系。NGINX 使得基于微服务的应用更加易于开发,确保了微服务解决方案能顺利运行。

随着 NGINX 与微服务之间的关系日渐紧密,我们已经在 NGINX 网站上运行了一个由 Chris Richardson 所编写的七部分系列微服务。他很早就参与了设计与实现,他的博文主要涵盖了微服务应用设计与开发方面的内容,包括了如何从单体应用迁移至微服务。博文提供了关于微服务问题的全面概述,非常受欢迎。

在本书中,我们已经将全篇博文转换成章节,并在每一章节添加了尾栏以展示 NGINX 实现微服务的相关内容。如果您认真听取建议,您将解决许多潜在的开发时甚至是在编写代码之前可能会遇到的问题。此书在关于 NGINX 微服务参考架构 方面也是一本非常不错的书籍,其实现了以下提出的大部分理论。

本书章节:

  1. 微服务简介 从被夸大的微服务概念到如何在创建和维护应用时部署微服务进行简单介绍。
  2. 使用 API 网关 API 网关是整个微服务应用的单入口,它为每一个微服务提供了 API。NGINX Plus 可以很好地应用于 API 网关,提供了负载均衡和静态文件缓存等功能。
  3. 微服务架构中的进程间通信 当把一个单体应用分解成几部分(微服务),他们就需要相互通信。事实上有许多进程间通信的方案可供您选择,包括表述性状态转义(REST)。本章将给出详细介绍。
  4. 微服务架构中的服务发现 当服务运行在一个动态环境中,想要找到他们并不是一件简单的事情。
  5. 微服务事件驱动数据管理 每个微服务维护着自己特有的数据展示与存储,而不是共享一个统一、跨越一个(或两个)单体应用的数据存储。虽然这能给予您很大的灵活性,但也可能导致变得复杂。本章可以帮助您理清这些问题。
  6. 选择微服务部署策略 在 DevOps 世界中,您怎样做与您最初要做的事一样重要。Chris 讲解了微服务部署的主要模式,以便您可以为您的应用作出合理的选择,
  7. 重构单体应用为微服务 在理想世界里,我们不会缺少时间与金钱,因此可以将核心软件转化为最新最好的技术、工具和方法。然而您可能会发现自己正在将一个单体应用转化为微服务,而且进展非常缓慢……。Chris 在本章将为您讲解明智的做法。

我们认为您将会发现本书的每一章都是值得阅读的,我们希望当您在开发自己的微服务应用时,能应用到本书的内容。

Floyd Smith,NGINX 公司

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

你真的了解微服务吗?

从一体化应用到微服务 首先为大家介绍一下微服务。在谈主题之前我们先回顾一下历史。一开始,使用的是一体化应用,也称为巨石应用,相信大家对于这个模型都非常地熟悉。然...

22600
来自专栏芋道源码1024

几个大型网站的Feeds(Timeline)设计简单对比

Facebook起源的NewsFeed,以及Twitter起源的Timeline,核心问题都是如何处理巨大的消息(活动,activity)分发。“推Push”和...

40210
来自专栏云技术

腾讯云TSF日调用量超万亿次背后的故事

腾讯云TSF是整合外部开源框架和腾讯内部历经多年锤炼的PaaS平台打造而成的企业级分布式应用服务开发与托管平台,本文重点对TSF中负责服务托管的PaaS平台进行...

1.1K220
来自专栏陈树义

如何通过组件化提高开发效率?

在软件开发过程中,大到业务模块的划分,小到技术组件的开发,都属于组件化的思考范畴内。很多时候我们到网上搜索「组件化」关键词,都只会看到关于前端组件化的资料,而对...

33340
来自专栏CSDN技术头条

Google的App引擎添加了对Node.js的支持

image.png JavaScript开发者现在可以使用Google的PaaS云服务来构建网页应用和移动端的服务了! Google宣布,将于Node.js的的...

23860
来自专栏WeTest质量开放平台团队的专栏

告别测试机!云真机的进阶之路

WeTest云真机自9月份全新改版上线以来,受到了广大开发者和测试人员的好评。与传统测试机相比,WeTest云真机不仅有更流畅的操作体验,更方便的测试选择,同时...

52720
来自专栏IT技术精选文摘

日调度5万亿次,腾讯云微服务架构体系TSF深度解读

写在前面 当前,传统企业的IT系统以单体架构为主,在面对互联网业务的冲击时,系统架构的性能瓶颈逐渐显现。云计算、Docker、DevOps、持续交付等概念的深入...

80170
来自专栏腾讯数据库技术

腾讯新一代企业级云数据库CynosDB(NewCDB)

NewCDB是在CDB十年技术和产品沉淀的基础上诞生的,腾讯云数据库产品在继承中不断完成突破。

7.7K60
来自专栏服务端技术杂谈

我的软件架构方法论

我们公司内部职级晋升中,当目标职级比较资深或者专家后,有一项考察内容是:有自己的方法论。

29120
来自专栏葡萄城控件技术团队

[经验总结] 关于单元测试

偶然想起@jeffz_cn在twitter上问:“私有方法真的不应该单元测试吗?为什么?我觉得有的组件只是逻辑复杂一些,因此会提取私有方法,并且测试这些私有方法...

19980

扫码关注云+社区

领取腾讯云代金券