微服务介绍
微服务是一种小型、松散耦合的分布式服务。微服务架构演变为解决单体架构的可扩展性和创新挑战的解决方案(单体应用程序通常非常庞大——超过 100、000 行代码)。它允许您采用大型应用程序并将其分解或分解为易于管理的具有狭窄定义职责的小组件。
使用微服务的原因:
在单体应用中,几乎没有挑战:
- 对于大型应用程序,很难理解复杂性并快速正确地更改代码,有时会变得难以管理代码。
- 应用程序需要大量的手动测试以确保更改的影响。
- 对于小的更改,需要构建和部署整个应用程序。
- 繁重的应用程序会减慢启动时间。
微服务的好处:
- 小模块 –
应用程序被分解成更小的模块,便于开发人员编写和维护。 - 更容易的过程适应 -
通过使用微服务,新技术和流程适应变得更加容易。您可以使用我们使用的更新的微服务来尝试新技术。 - 独立缩放 –
每个微服务都可以根据需要通过 X 轴扩展(使用更多 CPU 或内存进行克隆)和 Z 轴扩展(分片)独立扩展。 - 不受影响——
大型应用程序在很大程度上不受单个模块故障的影响。 - 杜尔斯——
每个服务都可以是独立的 DURS(部署、更新、替换和扩展)。
微服务的限制:
- 配置管理 -
随着它变得细化,令人头疼的是配置服务和监控这些服务。您需要跨环境维护数百个组件的配置。 - 调试——
跟踪服务故障是一项艰苦的工作。您可能需要研究跨不同组件的多个服务。集中式日志记录和仪表板对于轻松调试问题至关重要。 - 自动化——因为有许多更小的组件而不是一个整体,你需要自动化一切——构建、部署、监控等。
- 测试——
需要付出更大的努力进行端到端测试,因为它需要所有相关服务都启动并运行。
Java微服务框架:
您可以使用多种微服务框架来进行Java开发。其中一些是:
- 弹簧靴——
这可能是最好的Java微服务框架,它适用于控制反转、面向方面编程等语言。 - 下拉向导——
Dropwizard 将来自Java生态系统的稳定、成熟的库整合到一个简单、轻量级的包中,让您专注于完成工作。 - 休息 –
Restlet Framework 帮助Java开发人员构建更好的遵循 REST 架构风格的 Web API。 - 火花——
用于在 Kotlin 和Java 8 中轻松创建 Web 应用程序的微框架。
您可以考虑的其他包括:Ninja Web 框架、Play 框架、RestExpress 和 Restx 框架。