微服务经验总结

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

一、为什么有微服务

解决单体应用的局限性

随着业务发展,业务逻辑复杂、关联方多,导致业务系统的代码臃肿、难于做迭代或者维护,导致很多的问题,如: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和数据库,如何维持新老系统的一致性就成了问题,所以在探索微服务的过程中,要做到数据同步链路的保障,需要更多的维护成本

总结

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

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
前端开发 测试技术
你发现一个bug,如何定位这个是前端还是后端缺陷?建议收藏
你发现一个bug,如何定位这个是前端还是后端缺陷?建议收藏
1195 0
|
5月前
|
机器学习/深度学习 自然语言处理 搜索推荐
数字人实时交互技术突破:集之互动实现0.8秒全链路响应
集之互动打造全链路自研数字人系统,实现0.8秒超低延迟实时交互。涵盖端侧推理、多模态理解、情感化生成与精准唇形同步四大核心技术,支持私有化部署与行业知识定制,已在医疗、零售、政务等场景落地,推动数字人从工具迈向情感化智能伙伴。
|
存储 人工智能 安全
【荣誉奖项】荣获2024数据治理优秀产品!瓴羊Dataphin联合DAMA发布数据管理技能认证
瓴羊Dataphin连续俩年获得DAMA年度优秀数据治理产品奖,本次与DAMA联合发布“DAMA x 瓴羊 数据管理技能认证”,助力提升全民数据素养。
726 0
【荣誉奖项】荣获2024数据治理优秀产品!瓴羊Dataphin联合DAMA发布数据管理技能认证
|
SQL 前端开发 Linux
如何定位前后端的BUG
如何定位前后端的BUG
814 2
唯一性约束:unique
唯一性约束:unique。
344 3
|
数据采集 Java Python
爬取小说资源的Python实践:从单线程到多线程的效率飞跃
本文介绍了一种使用Python从笔趣阁网站爬取小说内容的方法,并通过引入多线程技术大幅提高了下载效率。文章首先概述了环境准备,包括所需安装的库,然后详细描述了爬虫程序的设计与实现过程,包括发送HTTP请求、解析HTML文档、提取章节链接及多线程下载等步骤。最后,强调了性能优化的重要性,并提醒读者遵守相关法律法规。
550 0
|
边缘计算 人工智能 物联网
传统架构与RISC-V架构有什么区别?
计算机架构的发展经历了多个阶段,从最早的CISC(复杂指令集计算机)到后来的RISC(精简指令集计算机)。RISC-V作为一种新兴的RISC架构,以其开放性和模块化设计受到广泛关注。
518 2
|
JavaScript 数据可视化 前端开发
如何安装和配置 ECharts
如何安装和配置 ECharts
974 1
|
JSON 自然语言处理 安全
微调大型语言模型进行命名实体识别
大型语言模型的目标是理解和生成与人类语言类似的文本。它们经过大规模的训练,能够对输入的文本进行分析,并生成符合语法和语境的回复。这种模型可以用于各种任务,包括问答系统、对话机器人、文本生成、翻译等。
716 1
|
运维 监控 负载均衡
关于微服务的一些总结和经验之谈,来看看你都了解吗
关于微服务的一些总结和经验之谈,来看看你都了解吗
1281 0

热门文章

最新文章