为什么需要微服务

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,182元/月
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: 微服务这么火,是不是我们的业务一定要上微服务?

业务发展初期,业务流量很小,对业务迭代效率的要求很高,使用单体服务开发灵活,部署简单。随着业务的快速发展,业务复杂度越来越高,同时业务开发人员也急剧增加,单体服务逐渐暴露出来一些问题,主要问题如下:

一、传统单体问题
  • 开发效率低

业务逻辑都集中在单个服务中,所有的开发者都在一个项目里面进行修改,代码并入时经常会出现相互等待和代码并入冲突的现象,严重影响开发效率。另外,多人同时操作一份代码,出错的概率也会增加。

  • 可维护性差

业务逻辑都集中在一个服务里面,单个开发者不太可能完全掌控整个业务,因此业务修改和问题追查定位都非常困难。由于很少有人能够对业务非常熟悉,增加新功能或者修改原有功能时更多像是在打补丁,导致代码质量和可维护性越来越差,各种功能耦合在一起,新人接手的时候都不知道从何下手。

  • 架构扩展性差

不同模块可能有不同的架构要求,单体服务很难照顾到大家的差异化需求,如果想针对某个模块进行新架构和新语言的调整与支持,也比较困难。

  • 部署不灵活

任何一处很小的改动,都需要对整个服务进行编译、部署和上线,这可能会影响整个系统的稳定性,同时很难对某个特定的模块进行单独的容量规划和部署设计。

  • 健壮性差

单体服务的所有模块都在一起,某个模块出现严重问题,会导致整个业务不可用。当业务代码规模很庞大时,系统的故障点会很多,严重影响业务的健壮性和可用性。

二、什么是微服务

微服务就是为了解决单体服务的上述问题而生的,微服务架构是将单个服务拆分成一系列小服务,这些小服务都拥有独立的进程,通过HTTP RESTful API之类的轻量级通信方式进行通信,而作为独立的业务服务,则可采用一些自动化部署机制独立部署,每个服务可以使用不同的开发语言和数据存储技术,实现去中心化的服务管理。

微服务架构的核心诉求是支撑业务敏捷开发和部署,因此微服务架构的本质是如何优雅地支持微服务的“拆分”和“组合”,如何进行合理的架构拆分,如何最大限度地减少微服务之间沟通的成本,这是微服务架构的关键所在。

微服务不只是个技术问题,更多的是关于组织和团队的问题,系统架构和组织之间存在映射关系,如果组织结构不支持,则无法建立高效的系统架构,反之也是这样。

三、微服务的收益

互联网业务的两个显著特点是业务发展快和业务高并发,微服务在这两个方面均有很大的收益,通过有效支撑业务创新和高并发架构,微服务架构成为传统架构演进时的必然选择。

通过将单个服务拆分成多个微服务,多个微服务可以独立开发、独立测试、独立运维,不同团队可以并行开发,互不影响,可以有力地支撑业务的快速迭代,方便业务创新和试错。

互联网业务通过业务模式创新和运营模式创新,用户和流量变化很快,需要从架构层面支撑业务流量的伸缩变化。微服务架构将单个服务拆分为多个子服务,每个微服务均可以独立进行容量评估,非常灵活,可以很好地支撑业务的高并发需求。

相关文章
|
机器学习/深度学习 人工智能 自然语言处理
基于RTMP的智慧数字人|AI数字人传输技术方案探讨
随着智慧数字人、AI数字人的兴起,越来越多的公司着手构建全息、真实感数字角色等技术合成的数字仿真人虚拟形象,通过“虚拟形象+语音交互(T-T-S、ASR)+自然语言理解(NLU)+深度学习”,构建适用于数字客服、虚拟展厅讲解、 智慧城市、智慧医疗、智慧教育等场景,通过人机可视化语音交互,释放人员基础劳动力,降低运营成本,提升智慧交互体验。
246 0
|
Web App开发 资源调度 JavaScript
竟然可以在一个项目中混用 Vue 和 React?
竟然可以在一个项目中混用 Vue 和 React?
1144 0
|
8月前
|
UED 开发者
【HarmonyOS——ArkTS语言】计算器的实现【合集】
【ArkTS语言-HarmonyOS】计算器的实现【合集】组件,点击等号后计算函数高效解析表达式并给出准确结果,达成核心功能要求。错误提示不够详尽,难以助力用户快速定位输入错误;响应式设计不足,在不同屏幕规格下适配性差。总体而言,本次实验已成功构建起基本功能框架,后续将针对上述问题深入探究优化方案,不断打磨细节,在完善计算器功能与提升用户体验的道路上持续精进,进而提升自身编程与应用开发的综合能力水平。利用按钮组件顺利完成布局设计,数字、运算符及功能按钮排列有序,操作逻辑清晰直观。
345 8
|
10月前
|
IDE 架构师 测试技术
通义灵码体验反馈
作为一名系统架构师,我试用了通义灵码个人版,发现其显著提升了开发效率,整体提效达30%。具体流程包括在VSCode中安装插件、登录阿里云账号、使用灵码进行代码解释、注释、优化及单元测试等。灵码在代码生成速度、质量及解释方面表现出色,但在账号登录和默认注释语言方面仍有优化空间。
378 3
|
Kubernetes 监控 容器
kubectl 的作用
kubectl是Kubernetes命令行工具,用于与Kubernetes集群进行交互和管理。它提供了许多命令,用于管理集群、部署应用、监视资源状态、调试问题等。 以下是kubectl的主要功能: 1. 配置管理:kubectl可以用于查看、创建、修改和删除Kubernetes集群的配置信息,如节点、命名空间、服务账号、角色等。 2. 应用管理:kubectl可以用于管理应用程序的部署、扩容、缩放、更新和删除。通过kubectl,您可以创建和管理Pod、Service、Deployment、StatefulSet等资源对象。 3. 资源监控:kubectl可以获取和监视Kubernet
386 0
|
Kubernetes 虚拟化 网络架构
在K8S中,flannel和calico的区别?
在K8S中,flannel和calico的区别?
|
安全 网络安全 数据安全/隐私保护
HTTP的常见四种认证方式
【2月更文挑战第20天】
|
机器学习/深度学习 人工智能 算法
我们在阿里云上修复亚运「首金」
用 AI,让每一刻荣耀记忆「失而复得」。
|
存储 人工智能 自然语言处理
AI时代新宠,向量数据库
这篇文章介绍了向量数据库在生成式人工智能应用和大语言模型发展中的重要性,并介绍了几种主流的向量数据库产品,包括Milvus、Pipecone、Chroma、Weaviate、pgvector等。这篇文章详细介绍了向量数据库的概念和主流产品,对于了解向量数据库在人工智能领域的应用具有很好的参考价值。转载来自知乎:https://zhuanlan.zhihu.com/p/664747312,很好的科普文,自己收藏用。