1.微服务是怎么提出来的
说起微服务,首先需要提起一个人叫martin fowler。进入他的首页:https://martinfowler.com/ 选择->All Sections,进入选择->microservices,我们可以看到这个人在2014年提出来的概念解释。
2.什么是微服务
简而言之,微服务架构风格是将单个应用程序开发为一套小型服务的方法,每个小型服务都在自己的流程中运行,并与轻量级机制(通常是HTTP资源API)进行通信。这些服务围绕业务功能构建, 可通过全自动部署机制独立部署。有一个集中管理的最低限度的这些服务,可以用不同的编程语言和使用不同的数据存储技术。
- 詹姆斯刘易斯和马丁福勒
3.微服务的特点
- 通过服务进行组件化
- 围绕业务能力进行组织
- 产品不是项目
- 智能端点和哑管
- 权力下放的治理
- 分散数据管理
- 基建自动化
- 设计失败
- 进化设计
4.微服务提供的好处
- 强大的模块边界:微服务增强了模块化结构,这对大型团队尤为重要。
- 独立部署:简单的服务更易于部署,并且由于它们是自治的,因此在出错时不太可能导致系统故障。
- 技术多样性:通过微服务,您可以混合使用多种语言,开发框架和数据存储技术。
5.需要付出代价
- 分布:分布式系统更难编程,因为远程调用很慢并且始终存在故障风险。
- 最终的一致性:对于分布式系统来说,保持强一致性非常困难,这意味着每个人都必须管理最终的一致性。
- 运营复杂性:您需要一个成熟的运营团队来管理大量服务,这些服务正在定期重新部署。
6.单体应用与微服务
6.1单体应用
单体应用是将所有的功能都放在一个应用里面,开发部署简单,横向扩展简单,但是也有自己的缺点就是可能会因为一点小bug会重新部署,牵一发而动全身,而且随着时间的推移,代码越越来越多,维护起来比较复杂。
6.2微服务
- 一个微服务架构是把每个微服务的功能节点放到一个独立的服务中
- 可以根据需要任意搭配,对于访问量较大的节点可以多部署,控制自由
- 对于大型分布式应用的部署是一个挑战,如果应用较多,将形成类似于一个神经网络的结构,这对运维要求很高,如果放在单体应用,就配置文件就会花很长的时间。
7.现代java的web应用解决方案
- 我们用一张图来解释
- Spring Boot旨在尽可能快地启动和运行,只需最少的Spring前端配置。Spring Boot对构建生产就绪应用程序持批评态度。
- Spring Cloud直接基于Spring Boot的创新企业Java方法,通过实施经过验证的模式简化分布式微服务式架构,为您的微服务带来弹性,可靠性和协调性。
- Spring Cloud Data Flow将企业连接到任何东西的互联网 - 移动设备,传感器,可穿戴设备,汽车等。Spring Cloud Data Flow为创建可组合数据微服务提供统一服务,这些服务可解决基于流和基于ETL的数据处理模式。
8.总结
- 单体应用:ALL IN ONE
- 微服务:每一个功能元素最终都是一个可独立替换和独立升级的软件单元