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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 当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 个单独服务的应用程序体系结构,每个服务代表一个中等大小的代码库,可处理业务中定义明确的部分。宏服务的关键是拆分服务,最大程度地从拆分中获得收益,同时最大程度地降低运行多个服务的开销。


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


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

相关文章
|
1月前
|
消息中间件 监控 API
在Python中如何实现微服务架构,及相关的服务间通信方案?
Python微服务架构涉及服务划分、注册发现、通信协议选择(如HTTP、gRPC、消息队列)及服务间通信实现。每个服务应自治,有独立数据库和部署流程,并需考虑容错(如分布式事务、重试、熔断)和监控日志。API网关用于请求管理和路由。实际操作需根据需求和技术栈调整,并关注服务拆分和数据一致性。
61 5
|
1月前
|
Java API 微服务
【Spring Boot系列】通过OpenAPI规范构建微服务服务接口
【4月更文挑战第5天】通过OpenAPI接口构建Spring Boot服务RestAPI接口
125 0
|
4天前
|
监控 API 数据安全/隐私保护
构建高效后端服务:微服务架构的实践与挑战
【6月更文挑战第23天】在现代软件开发中,微服务架构已成为设计高性能、可扩展后端系统的首选模式。本文将深入探讨微服务的设计原则、实践方法及其面临的技术挑战,旨在为开发者提供一个全面的微服务实施指南。
18 3
|
16天前
|
消息中间件 运维 监控
微服务架构中的服务通信与数据一致性挑战
在微服务架构的海洋中,服务之间的通信和数据一致性问题犹如潜藏的暗礁和漩涡,随时可能威胁到整个应用的健康运行。本文将深入探讨微服务间通信机制的选择、数据一致性维护的策略,以及面对网络延迟和分区容忍性时如何保持系统的灵活性和健壮性。通过分析常见的模式和最佳实践,旨在为开发者提供一套应对这些挑战的航海图。
|
21天前
|
缓存 网络协议 算法
微服务架构之从类库到服务之服务发现
服务发现是分布式系统中的核心技术,其实现需要在可用性和一致性之间进行权衡。通过合理设计服务注册中心的架构,并采用有效的健康检查和缓存机制,可以提高系统的可靠性和可用性。不同的服务发现框架各有优缺点,选择适合的框架需要根据具体需求进行权衡和取舍。总之,服务发现的有效实现对于构建可靠的大型分布式系统至关重要。
16 3
|
1月前
|
缓存 微服务
01.【微服务架构】服务注册与发现:AP和CP,你选哪个? -- 客户端容错
【5月更文挑战第12天】客户端容错机制确保在服务端或注册中心故障时仍能正确发送请求。当服务端崩溃,由于延迟,客户端一段时间内仍会尝试发送请求。客户端应实施 failover 策略,即检测到调用失败后,切换到其他节点重试,并将故障节点从列表移除。延时通常等于服务端与注册中心心跳间隔加通知时间。若网络问题导致客户端无法访问服务端,客户端应发送心跳以检测服务端状态,成功则恢复,连续失败则视为崩溃。若客户端无法连接注册中心,它应使用本地缓存并考虑退出。
26 1
01.【微服务架构】服务注册与发现:AP和CP,你选哪个? -- 客户端容错
|
27天前
|
Kubernetes 负载均衡 开发者
构建高效后端服务:从微服务到容器化部署
【5月更文挑战第31天】本文深入探讨了现代后端开发中的关键概念,包括微服务的架构设计、容器化技术的运用以及它们如何共同提升应用的可扩展性、可靠性和性能。通过具体案例分析,我们将揭示这些技术是如何在实际开发中被实施的,并讨论它们对后端开发流程的影响。
|
7天前
|
NoSQL Java MongoDB
实战SpringCloud响应式微服务系列教程(第十章)响应式RESTful服务完整代码示例
实战SpringCloud响应式微服务系列教程(第十章)响应式RESTful服务完整代码示例
|
1月前
|
缓存 微服务
01.【微服务架构】服务注册与发现:AP和CP,你选哪个?-- 服务注册与发现模型
【5月更文挑战第1天】本文探讨了服务注册与发现的关键作用,在微服务架构中,这一概念常出现在面试中。文章深入讲解基础模型,包括服务端注册、心跳维持、客户端缓存及服务端下线流程,并强调了高可用性的重要性,涉及服务端崩溃检测、客户端容错和注册中心选型。通过分析客户端、注册中心和服务端之间的交互,提出如何应对潜在故障的策略,以构建稳定的微服务架构。
43 3
01.【微服务架构】服务注册与发现:AP和CP,你选哪个?-- 服务注册与发现模型
|
18天前
|
消息中间件 存储 监控
通过将大型应用拆分成一系列小型、独立的服务,微服务架构为后端开发带来了更高的灵活性、可扩展性和可维护性
【6月更文挑战第10天】本文探讨了构建高效微服务架构的后端开发最佳实践。微服务的核心原则是服务独立、去中心化、自治和轻量级通信,优势在于可扩展性、独立性、技术灵活性和团队协作。实践中,应注意服务的拆分粒度,选择合适的通信协议(如RESTful、RPC、消息队列),处理数据一致性与分布式事务,实施服务治理和监控,以及确保安全性与权限控制。未来,微服务将结合服务网格、容器化和云原生技术,持续发展和优化。
27 0

热门文章

最新文章