什么是微服务,为什么要做微服务?

简介: 什么是微服务,为什么要做微服务?

Spring Boot 微服务


单体应用VS微服务应用


  • 单体应用


image.png


  • 微服务应用


image.png


单体架构演进


项目拆分多项目独立部署



image.png


ESB企业服务总线


image.png


区别


  • SOA架构主要针对企业级、采用ESB服务(ESB企业服务总线),非常重,需要序列化和反序列化,采用XML格式传输


  • 微服务架构主要是用于互联网,轻量级、小巧,独立运行,基于 HTTP + Rest + JSON 格式传输。


  • ESB也可以说是传统中间件与 XML、Web 服务等技术互相结合的产物


单体架构的缺点


  • 复杂性逐渐变高


  • 技术债逐渐上升


  • 部署速度逐渐变慢


  • 阻碍技术创新


  • 无法按需伸缩


微服务架构


微服务的定义


  • Martin Fowler: 简而言之,微服务架构风格这种开发方法,是以一组小型服务的方式来开发一个独立的应用系统。其中每个小型服务都运行在自己的进程中,并经常采用HTTP资源API这样轻量级的机制来互相通讯。这些服务围绕业务功能进行构建,并能通过全自动的部署机制来进行独立部署。这些微服务可以使用不同的语言来编写,并且可以使用不同的数据存储技术。这些微服务我们仅做最低限度的集中管理。


  • 微服务架构师一种架构模式,它提倡将单一应用程序划分成小的服务,服务之间相互协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务之间采用轻量级通讯机制互相沟通(通常是基于HTTPS的RESTful API)。每个服务,都围绕着具体业务进行构建。并且能够独立地部署到生产环境、类生产环境等。另外,尽量避免统一的、集中式的服务管理机制,堆具体的一个服务而言,应根据业务上下文,选择合适的语言,工具对其进行构建


  • 微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个服务可被独立部署,各个服务之间是松耦合的。每个微服务仅关注完成一件任务并能很好地完成任务。在所有情况下,每个任务代表着一个小的业务能力。


微服务特点


  • 服务组件化


  • 服务围绕业务


  • 产品开发模式


  • 轻量级通讯机制


  • 去中心化治理


  • 去中心化数据设计


  • 故障处理设计


  • 演进式设计


  • 基础设置自动化


微服务的优点和挑战


  • 优点


  • 开发简单
  • 技术栈灵活
  • 服务端丽
  • 按需拓展


  • 挑战


  • 运维复杂
  • 数据一致性问题
  • 集成测试复杂
  • 重复代码
  • 监控困难


微服务具备的特征


  • 每个微服务可以独立运行在自己的进程中


  • 一些列独立运行的微服务共同构建起了整个系统


  • 每个服务独立的业务开发,一个微服务一般完成某个特定的功能,比如:订单管理、用户管理等


  • 微服务之间通过一些轻量级的通讯机制进行通讯,例如:通过 Rest API或者RPC的方式进行通讯


微服务的优点


  • 易于开发和维护


  • 启动较快


  • 局部修改容易部署


  • 技术栈不受限制


  • 按需伸缩


  • DevOps


微服务带来的挑战


  • 运维成本较高


  • 分布式的复杂性


  • 接口调整成本高


  • 重复劳动


微服务的设计原则


  • 单一职责原则


  • 服务自治原则


  • 轻量级通信原则


  • 接口明确原则


参考资料



相关文章
|
应用服务中间件 数据库连接 Nacos
Seata常见问题之Seata事物卡住了如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
idea快捷键大全(纯干货版)
idea快捷键大全(纯干货版)
1502 1
|
Dubbo Java 应用服务中间件
Dubbo与Spring Cloud的区别?
总之,Dubbo和Spring Cloud都是分布式系统开发中的重要工具,根据项目需求和技术栈的选择,可以选择适合的框架来构建分布式微服务架构。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
1576 0
|
SQL 监控 数据库
如何解决 SQL Server 占用内存过多问题
SQL Server 占用过多内存会导致响应缓慢和查询性能低下。解决流程包括:1) 查看内存使用情况,2) 分析各数据库内存占用,3) 优化 SQL Server 配置(如限制最大内存),4) 优化查询(如创建索引),5) 持续监控效果。通过这些步骤可有效控制内存占用,提升系统性能。
1488 0
|
数据库管理 OceanBase
OceanBase社区版可以商用吗
OceanBase社区版可以商用吗
686 1
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker与Kubernetes入门
【9月更文挑战第30天】在云计算的浪潮中,云原生技术正以前所未有的速度重塑着软件开发和运维领域。本文将通过深入浅出的方式,带你了解云原生的核心组件——Docker容器和Kubernetes集群,并探索它们如何助力现代应用的构建、部署和管理。从Docker的基本命令到Kubernetes的资源调度,我们将一起开启云原生技术的奇妙之旅。
|
JavaScript
el-table 使用了 修改行使用了v-model双向绑定 如何记录修改前的数据
el-table 使用了 修改行使用了v-model双向绑定 如何记录修改前的数据
496 2
|
存储 设计模式 负载均衡
深入理解微服务架构中的API网关
在微服务架构的海洋中,API网关扮演着灯塔的角色,指引着服务的交互与集成。本文将探讨API网关的核心功能、设计考虑因素以及其在微服务生态系统中的重要性。通过具体案例分析,我们将揭示API网关如何优化服务发现、负载均衡和安全性等关键方面,并讨论其对系统性能的影响。
290 29
|
Cloud Native 数据管理 Docker
云原生之旅:Docker容器化实践入门
【8月更文挑战第27天】在数字化转型的浪潮中,云原生技术正成为推动企业创新和敏捷性的关键力量。本文将引导您了解云原生的基本概念,重点介绍Docker容器技术的实际应用,并通过代码示例加深理解。我们将一起探索如何通过Docker简化应用部署和管理,以及它如何助力现代软件开发流程。
|
存储
【Azure 应用服务】Storage Queue触发Azure Function时报错 The input is not a valid Base-64 string
【Azure 应用服务】Storage Queue触发Azure Function时报错 The input is not a valid Base-64 string
247 0