微服务还没完全理解,宏服务又要来了?我太难了

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 当Uber公司某支团队宣布从微服务转向宏服务时,脑子瞬时飘来几个字“某种马”。微服务还没吃透呢,宏服务又来了,听到宏服务这个名字,脑海中好像是听说过,但是完全不了解。于是各种搜索,各种网站的信息翻了一遍。今天的主要目的是介绍为什么要使用宏服务

一、先从微服务说起


因为不是专门介绍微服务,因此我们直接给出微服务的定义。 James Lewis与Martin Fowler是这样定义微服务架构风格的:


单个应用可以作为一系列小型服务的套件组合,其中每个小型服务都运行在自己的进程中,并且通过轻量级的机制实现彼此间的通信,这通常是 HTTP 和RPC。这些服务是围绕着业务功能构建的,并且可以自动化独立部署。每一种服务都可以通过不同的编程语言进行编写,并且可以使用不同的数据存储技术。


意思已经够简单明了了,假设是一个电商网站,注册登录就可以作为不同的微服务,他们相辅相成,又各自独立,共同为整个系统服务。这样来看微服务的优点不言而喻:

v2-15cc127584464b095b3dc0fb9f5f656d_1440w.jpg

(1)每个服务都很简单,只关注于一个业务功能。


(2)每个微服务可以由不同的团队独立开发。


(3)微服务是松散耦合的。


(4)微服务可以通过不同的编程语言与工具进行开发。


这么明显的优点,不知道哪一个丛林深处的团队还未拥抱它。但是从github上的数据显示已经很明显了,基本上大多数公司不是已经用了微服务,就是还在使用微服务的路上。

不过凡事有利就有弊,微服务也不是十全十美的,这不就因为某些缺点,Uber就开始使用了宏服务。


v2-388205983b6d189feac04f78fc40e73e_1440w.jpg

下面我们再来看一下微服务有什么缺点:


(1)硬件成本高


五个微服务可能需要占据10个进程,如果要加入负载均衡和监控机制等等,需要的进程就更多了,这对于一些运维的硬件设施来说,成本真的太高了。


(2)需要DevOps


微服务的组织肯定需要DevOps ,毕竟微服务开发好了之后需要运维,这一下这么多进程,我们还要保证每个微服务都能流畅的运行,还要保证不能把空间消耗殆尽,也就是说运维起来要保证时间和空间效率。


(3)复杂性


多个微服务就意味着是一种分布式系统,既然是分布式系统就不可避免的带来复杂性和其他若干问题,比如说“网络延迟、容错性、消息序列化、不可靠的网络、异步、版本化、应用层中的负载变化等等”。


(4)测试成本高


无论是手工测试还是自动化测试,这么多微服务就需要都测试通过,而且微服务之间会进行通信,可能会带来更多的测试。


(5)代码重复


微服务中,可能有些功能是类似的,这也就意味着有些代码重复写了很多遍。

这里就先列出这么多,上面的这些缺点总结起来那就是一个系统拆分的微服务过多。各方面就开始麻烦起来。比如一个普通的电商网站,会拆分成几百个微服务。需要的人力、物力、财力都是很庞大的。正因为如此Uber的某个团队才舍弃了他。

v2-666dfa4476ee68ec8c1c2d833275e86c_1440w.jpg

既然微服务有这么多缺点,是不是说微服务今后就要被舍弃了,实时证明是Uber公司依然在使用大量的微服务,为此我还查看了他们的github。微服务的数量也一直在增多。但是我相信这是一个勇敢的尝试。


下面我们就开始今天的主题,介绍一下宏服务。


二、宏服务是个啥?


在创建新平台的时候,Uber 支付体验团队对新服务进行了更加深思熟虑的规划:不再只是完成一件事,而是使其服务于一项业务功能,由 5-10 个工程师负责维护。Gergely Orosz 把这样的服务规划称之为宏服务。


其实可以通俗地来讲,宏服务就是介于单体服务到微服务之间。宏服务关注的不再是某一个细节点,而是一个业务点。有一篇英文文献中这样描述宏服务:


宏服务应该定义为运行 2-20 个单独服务的应用程序体系结构,每个服务代表一个中等大小的代码库,可处理业务中定义明确的部分。宏服务的关键是拆分服务,最大程度地从拆分中获得收益,同时最大程度地降低运行多个服务的开销。


但是我觉得这篇文章有点问题,因为谁也不知道一个系统的业务点有多少个。因此宏服务的界限没有一个严格的定义。


宏服务既然是单体服务和微服务之间的折中,也就会带来很多的优点,比如运维成本会降低很多,既有了微服务的特点,又能在一定程度上解决了微服务的缺点。但是宏服务并非是比微服务更优的架构,只是架构演进中的不同选择。将来会不会出现这样一个宏服务框架,就由你或者他来设计吧!

相关文章
|
12天前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
2月前
|
Cloud Native Java API
聊聊从单体到微服务架构服务演化过程
本文介绍了从单体应用到微服务再到云原生架构的演进过程。单体应用虽易于搭建和部署,但难以局部更新;面向服务架构(SOA)通过模块化和服务总线提升了组件复用性和分布式部署能力;微服务则进一步实现了服务的独立开发与部署,提高了灵活性;云原生架构则利用容器化、微服务和自动化工具,实现了应用在动态环境中的弹性扩展与高效管理。这一演进体现了软件架构向着更灵活、更高效的方向发展。
|
3月前
|
监控 负载均衡 安全
微服务(五)-服务网关zuul(一)
微服务(五)-服务网关zuul(一)
|
18天前
|
弹性计算 持续交付 API
构建高效后端服务:微服务架构的深度解析与实践
在当今快速发展的软件行业中,构建高效、可扩展且易于维护的后端服务是每个技术团队的追求。本文将深入探讨微服务架构的核心概念、设计原则及其在实际项目中的应用,通过具体案例分析,展示如何利用微服务架构解决传统单体应用面临的挑战,提升系统的灵活性和响应速度。我们将从微服务的拆分策略、通信机制、服务发现、配置管理、以及持续集成/持续部署(CI/CD)等方面进行全面剖析,旨在为读者提供一套实用的微服务实施指南。
|
14天前
|
弹性计算 Kubernetes API
构建高效后端服务:微服务架构的深度剖析与实践####
本文深入探讨了微服务架构的核心理念、设计原则及实现策略,旨在为开发者提供一套系统化的方法论,助力其构建灵活、可扩展且易于维护的后端服务体系。通过案例分析与实战经验分享,揭示了微服务在提升开发效率、优化资源利用及增强系统稳定性方面的关键作用。文章首先概述了微服务架构的基本概念,随后详细阐述了其在后端开发中的应用优势与面临的挑战,最后结合具体实例,展示了如何从零开始规划并实施一个基于微服务的后端项目。 ####
|
23天前
|
监控 持续交付 数据库
构建高效的后端服务:微服务架构的深度解析
在现代软件开发中,微服务架构已成为提升系统可扩展性、灵活性和维护性的关键。本文深入探讨了微服务架构的核心概念、设计原则和最佳实践,通过案例分析展示了如何在实际项目中有效地实施微服务策略,以及面临的挑战和解决方案。文章旨在为开发者提供一套完整的指导框架,帮助他们构建出更加高效、稳定的后端服务。
|
2月前
|
Kubernetes 负载均衡 Docker
构建高效后端服务:微服务架构的探索与实践
【10月更文挑战第20天】 在数字化时代,后端服务的构建对于任何在线业务的成功至关重要。本文将深入探讨微服务架构的概念、优势以及如何在实际项目中有效实施。我们将从微服务的基本理念出发,逐步解析其在提高系统可维护性、扩展性和敏捷性方面的作用。通过实际案例分析,揭示微服务架构在不同场景下的应用策略和最佳实践。无论你是后端开发新手还是经验丰富的工程师,本文都将为你提供宝贵的见解和实用的指导。
|
28天前
|
Kubernetes API Docker
构建高效后端服务:微服务架构的深度实践与优化####
本文深入探讨了微服务架构在现代后端开发中的应用,通过剖析其核心概念、设计原则及实施策略,结合具体案例分析,展示了如何有效提升系统的可扩展性、可靠性和维护性。文章还详细阐述了微服务拆分的方法论、服务间通信的最佳实践、以及容器化与编排工具(如Docker和Kubernetes)的应用技巧,为读者提供了一份全面的微服务架构落地指南。 ####
|
2月前
|
监控 API 持续交付
构建高效后端服务:微服务架构的深度探索
【10月更文挑战第20天】 在数字化时代,后端服务的构建对于支撑复杂的业务逻辑和海量数据处理至关重要。本文深入探讨了微服务架构的核心理念、实施策略以及面临的挑战,旨在为开发者提供一套构建高效、可扩展后端服务的方法论。通过案例分析,揭示微服务如何帮助企业应对快速变化的业务需求,同时保持系统的稳定性和灵活性。
47 9
|
2月前
|
监控 安全 Java
构建高效后端服务:微服务架构深度解析与最佳实践###
【10月更文挑战第19天】 在数字化转型加速的今天,企业对后端服务的响应速度、可扩展性和灵活性提出了更高要求。本文探讨了微服务架构作为解决方案,通过分析传统单体架构面临的挑战,深入剖析微服务的核心优势、关键组件及设计原则。我们将从实际案例入手,揭示成功实施微服务的策略与常见陷阱,为开发者和企业提供可操作的指导建议。本文目的是帮助读者理解如何利用微服务架构提升后端服务的整体效能,实现业务快速迭代与创新。 ###
67 2