微服务经验总结

简介: 微服务架构是一种先进的架构模式,适用于大型、复杂的项目。它带来了很多好处,如降低开发难度和复杂度、提高系统的可扩展性和容错性等。但是,它也带来了一些挑战和复杂度,如服务划分难度、分布式复杂性、运维复杂度等。因此,在使用微服务架构时,需要仔细权衡其优缺点,并结合项目的实际情况进行选择。同时,需要不断学习和探索新的技术和方法,以应对微服务架构带来的挑战和复杂度。

一、为什么有微服务

解决单体应用的局限性

随着业务发展,业务逻辑复杂、关联方多,导致业务系统的代码臃肿、难于做迭代或者维护,导致很多的问题,如:bug多、难于维护修复、每次需要评估改动服务接口影响的范围,开发周期长等。为了解决这些问题,微服务架构应运而生,它将应用拆分成多个小服务,每个服务都是独立、可单独部署的,从而提高系统的可扩展性、可维护性和可靠性。

应对复杂业务场景

传统的单体应用架构已经无法满足快速变化的市场需求。微服务架构通过将业务拆分成多个小服务,每个服务专注于完成一个业务功能,从而降低了业务之间的耦合度,使得每个服务都可以独立进行开发、测试、部署和扩展。这种灵活性使得微服务架构能够更好地应对复杂业务场景,满足快速变化的市场需求。

技术发展的推动

随分布式系统、容器化技术、CI、CD的产生,让微服务的开发、管理变得方便而高效

二、现有哪些微服务技术

前存在多种微服务技术,以下是一些常见的微服务技术,特别是在企业级开发中常用的:

Spring Cloud

Spring Cloud是Java领域微服务架构的王者。它提供了一套完整的微服务解决方案,包括服务发现、配置管理、智能路由、服务网关、负载均衡、熔断器、分布式跟踪等。Spring Cloud与Spring Boot的结合使用,可以非常快速地搭建起微服务架构。

Dubbo

Dubbo是阿里巴巴开源的一款高性能、轻量级的Java RPC框架。它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。Dubbo可以很好地处理服务之间的通信和治理问题。

Kubernetes

Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署、规划、更新、维护的一种机制。

Nacos

Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它更适合于云原生架构中的服务治理、配置管理和服务注册与发现。

Service Fabric

Service Fabric是微软推出的一个微服务框架,用于构建和运行可伸缩且可靠的无服务器和容器化微服务。它提供了系统级的可靠性和性能,使开发人员能够专注于实现业务逻辑

三、微服务有哪些特点

独立性

每个微服务都是独立的,可以独立开发、测试、部署和扩展。

松耦合

微服务之间通过轻量级的通信机制(如API、消息队列等)进行交互,降低了服务之间的耦合度。

自治性

每个微服务都可以独立选择技术栈、数据库和部署方式。

容错性

由于服务之间的松耦合,某个微服务的故障不会影响其他服务的正常运行

相比原有的

关于松耦合特性,原有的传统服务的服务通信应该用到进程或者共享变量、如果需要很复杂的业务逻辑的情况下,这种就会造成资源的开销大、代码复杂性高的弊端;如果使用微服务的框架,例如RPC(HSF、Thrift)等,可以拆成简单的api调用,并且本身服务和服务之间的体量就会小很多,我们可以很容易的实现业务的交织的调用过程,e.g. 订单中心调用调度算法,调度算法调用地图的计算逻辑,实现订单的派单过程

上面的好处连带的优势就是开发新功能或者扩展已有的业务变得简单,不需要整体的在一个大服务内执行应用发布,只需要变更关联的api接口挂载的应用即可,减少了开发周期和成本,能够做到快速迭代

独立性的好处就是技术可以异构,不依赖于语言,前端的代码也是一个服务,后端的代码也是一个服务,借助现有的RPC框架,可以做到跨语言的调用,例如使用Thrift这个RPC框架

四、微服务的弊端

分布式复杂性:微服务架构是分布式系统,需要更多的测试和监控来确保服务之间的通信正常。一般会通过中间件消息队列实现服务的通信和共享资源的分享,这就带来了分布式领域下的数据同步和一致性的挑战

服务划分难度:如何合理地将系统拆分成多个微服务是一个挑战。如果拆分的不对,会造成后续的很多反复、繁杂的工作挑战

运维复杂度:随着微服务数量的增加,运维的复杂度也会增加,拆分的越多越细,就需要一个人去维护更多的服务

渐进式的数据库一致性 由于微服务的替换传统服务不是一蹴而就的,很多时候偶都是同时存在新老系统的api和数据库,如何维持新老系统的一致性就成了问题,所以在探索微服务的过程中,要做到数据同步链路的保障,需要更多的维护成本

总结

微服务架构是一种先进的架构模式,适用于大型、复杂的项目。它带来了很多好处,如降低开发难度和复杂度、提高系统的可扩展性和容错性等。但是,它也带来了一些挑战和复杂度,如服务划分难度、分布式复杂性、运维复杂度等。因此,在使用微服务架构时,需要仔细权衡其优缺点,并结合项目的实际情况进行选择。同时,需要不断学习和探索新的技术和方法,以应对微服务架构带来的挑战和复杂度。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
1月前
|
消息中间件 监控 Java
微服务架构深入理解 | 技术栈
微服务架构深入理解 | 技术栈
160 0
|
XML JSON Dubbo
《微服务零基础入门教程》一步一步,带你走进微服务的世界(上)
最近几个月,我会从“0”到“1”持续更新 微服务 技术栈以及其相关的技术,希望小伙伴们跟着我的脚步,让我们一步一步的拿下微服务 学微服务之前,先让大家看一下首先要学习哪些技术
1113 1
《微服务零基础入门教程》一步一步,带你走进微服务的世界(上)
|
21小时前
|
监控 持续交付 开发者
探索后端开发中的微服务架构实践
在软件工程的广阔天地中,微服务架构以其独特的魅力和优势逐渐成为后端开发的新宠。本文将深入探讨微服务的核心概念、设计原则以及在实际项目中的实施策略和面临的挑战,旨在为后端开发者提供一套清晰的微服务实践指南。
|
9天前
|
负载均衡 搜索推荐 应用服务中间件
后端开发中的微服务架构设计与实践
传统的单一应用架构已经无法满足当今快速变化的业务需求,微服务架构因其灵活性和扩展性逐渐成为后端开发的主流选择。本文将探讨微服务架构设计与实践,包括微服务架构的概念、优势以及在后端开发中的应用。同时,将结合实际案例分析微服务架构的设计原则和最佳实践,以帮助开发者更好地理解和应用微服务架构。
|
25天前
|
负载均衡 监控 API
探索后端开发中的微服务架构设计与实践
在当今快速发展的互联网时代,后端开发领域的微服务架构设计和实践变得愈发重要。本文将从微服务架构的概念、优势,以及设计和实施过程中的关键问题等方面展开探讨,带您深入了解后端开发中微服务架构的精髓。
22 0
|
1月前
|
消息中间件 监控 安全
探讨后端开发中的微服务架构设计与实践
在当今快速发展的互联网时代,后端开发领域的微服务架构成为越来越多企业关注和采用的技术方案。本文将深入探讨微服务架构的设计原则、实践经验以及常见挑战,帮助读者更好地理解和应用微服务架构在后端开发中的作用。
|
1月前
|
开发框架 API 微服务
【从零开始学微服务】02.初识微服务
大家好,欢迎来到万猫学社,跟我一起学,你也能成为微服务专家。
57 1
【从零开始学微服务】02.初识微服务
|
1月前
|
Dubbo Java 应用服务中间件
【从零开始学微服务】07.微服务常用的开发框架
大家好,欢迎来到万猫学社,跟我一起学,你也能成为微服务专家。
67 1
|
1月前
|
Kubernetes Java 微服务
【从零开始学微服务】06.微服务架构的建设思路
大家好,欢迎来到万猫学社,跟我一起学,你也能成为微服务专家。
50 1
|
1月前
|
运维 中间件 测试技术
【从零开始学微服务】05.微服务的优势和不足
大家好,欢迎来到万猫学社,跟我一起学,你也能成为微服务专家。
62 1