1.微服务的定义
微服务是可以协同工作并可以自主/独立部署的小型企业服务。这些服务通过网络进行通信,并通过这种途径带来好处。最大的优点之一是它们可以独立部署。并且微服务提供了使用许多不同技术的机会。
微服务架构的风格是一种将单个应用程序开发为一组小服务的方法,每个服务都在自己的进程中运行,并与轻量级机制(通常是HTTP或gRPC API)通信。
这些服务围绕业务能力构建,并通过完全自动化的部署过程进行独立部署。这些服务的集中管理程度很低,可以用不同的编程语言编写,并可以使用不同的数据存储技术。
2.微服务的优缺点
优点:
-
可扩展性: 微服务架构采用了松散耦合的设计,单个服务之间相互独立,意味着更容易将它们分开并按需调整和扩展它们的功能。
-
可靠性: 称为单一点故障的问题,并且当出现问题时系统的影响仅限于受影响的服务。它也是在服务级别上管理问题。
-
简化开发流程: 微服务的分离意味着可以在集成之前独立开发和测试单个服务,这可以加快开发流程的速度,提高生产力。
-
技术多样性: 微服务架构中可以使用不同的技术堆栈开发不同的服务,使开发人员能够在开发过程中使用他们最喜欢的技术栈。
-
可管理性: 微服务架构中服务的独立性使得系统更容易管理。异常和问题可以在服务级别上进行监控和管理。
缺点:
-
系统复杂性: 拥有许多微服务会增加系统的复杂性,导致整体架构难以理解和维护。
-
数据一致性: 异步通信可能会导致数据不一致问题,因需要处理不同的服务之间的数据传输。
-
分布式系统问题: 微服务架构在处理分布式系统问题时必须考虑更多的难题,如复杂的部署、网络延迟和异步通信等。
-
有限的同时性: 微服务架构和分布式系统概念结合起来时,需要考虑Git问题,可能会增加复杂性并减慢开发流程。
-
成本: 需要付出更多的开发和部署成本和努力,需要协调多个服务同时,会增加工作量。
3.微服务组件
3.1 注册中心
Nacos Discovery - 服务发现与配置管理
作用: Nacos 提供了服务注册与发现的能力,使得微服务实例可以在一个中心化的注册表中注册自己,并且其他服务可以发现并调用这些注册的服务。此外,Nacos 还支持动态配置服务,允许开发者在微服务运行时更改配置,而无需重启服务。
3.2 服务配置管理
Nacos Config - 配置中心
作为配置管理工具,Nacos Config 支持集中管理和推送配置到各个微服务,有助于实现配置的统一管理和动态更新,提高运维效率。
3.3 负载均衡与远程调用
loadbalancer与OpenFeign
支持多种负载均衡算法,包括轮询、随机、加权轮询、加权随机等,根据预定义的算法选择合适的服务实例,并将请求分发到这些实例上。
3.4 网关
Gateway
主要用于实现请求的路由、过滤和监控等功能。其核心原理是基于一系列的过滤器来处理客户端的请求和响应,每个过滤器都负责执行特定的功能,例如:路由、鉴权、限流等。
3.6 服务保护
Sentinel
Sentinel 作为一个强大的流量控制组件,可以有效地对微服务间的流量进行控制和防护,防止服务雪崩,同时提供熔断降级能力,保障服务的稳定性。
3.7 分布式事务
Seata 用于解决微服务架构下的分布式事务问题,提供了一种灵活且易于使用的全局事务解决方案,支持 ACID 特性,确保数据一致性。
评论区