📜  微服务介绍

📅  最后修改于: 2020-02-12 14:20:58             🧑  作者: Mango

微服务是一种小型的,松散耦合的分布式服务。微服务架构是作为Monolith架构的可扩展性和创新挑战的一种解决方案而发展的(Monolith应用程序通常非常庞大:超过100.000行代码)。它使您可以处理大型应用程序,并分解或分解为职责范围狭窄的易于管理的小型组件。
使用微服务的原因:
在整体应用程序中,几乎没有挑战:

  1. 对于大型应用程序,很难理解其复杂性并难以快速正确地更改代码,有时很难管理代码。
  2. 应用程序需要大量的手动测试,以确保更改的影响。
  3. 对于较小的更改,需要构建和部署整个应用程序。
  4. 繁重的应用程序会减慢启动时间。

微服务的好处:

  1. 小型模块
    应用程序分为较小的模块,开发人员可以轻松地对其进行编码和维护。
  2. 简化流程调整
    通过使用微服务,新的技术和流程调整变得更加容易。您可以使用我们使用的更新的微服务尝试新技术。
  3. 独立缩放
    每个微服务都可以根据需要通过X轴缩放(克隆更多CPU或内存)和Z轴缩放(分片)进行独立缩放。
  4. 不受影响
    大型应用程序在很大程度上不受单个模块故障的影响。
  5. DURS 
    每个服务可以是独立的DURS(部署,更新,替换和扩展)。

微服务的限制:

  1. 配置管理
    变得细粒度,令人头疼的是配置服务和对其进行监视。您需要维护跨环境的数百个组件的配置。
  2. 调试
    跟踪服务故障是一项艰巨的工作。您可能需要研究不同组件之间的多种服务。集中式日志记录和仪表板对于轻松调试问题至关重要。
  3. 自动化–由于有许多较小的组件而不是整体组件,因此您需要使所有内容(包括构建,部署,监视等)自动化。
  4. 测试
    需要端到端测试,因为它需要所有相关服务才能启动并运行,因此需要付出更大的努力。

Java的微服务框架:您可以使用多种微服务框架来开发Java。其中一些是:

  1. Spring Boot 
    这可能是最好的Java微服务框架,可以在控制反转,面向方面的编程等语言的基础上工作。
  2. Dropwizard 
    Dropwizard将来自Java生态系统的稳定,成熟的库汇集到一个简单,轻巧的软件包中,使您可以专注于完成工作。
  3. Restlet 
    Restlet Framework帮助Java开发人员构建更好的遵循REST体系结构样式的Web API。
  4. Spark 
    一种微型框架,用于以最小的努力在Kotlin和Java 8中创建Web应用程序。

您可以考虑的其他工具包括:Ninja Web框架,Play框架,RestExpress和Restx框架。