分布式系统的那些事儿(七) - 微服务架构体系

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 微服务的出现,标志了又一个新的里程碑,似乎你不知道微服务就代表你好像out了一样。微服务是业务服务化,将SOA更好的延续了下去。配合restful也能够更好的提供api接口。简单来说就是微服务把各种各样的小的服务区分开来当做一个当度的应用跑在服务器上,并且他的通信机制也是十分简单的,使用rest或者rpc都行。

微服务的出现,标志了又一个新的里程碑,似乎你不知道微服务就代表你好像out了一样。微服务是业务服务化,将SOA更好的延续了下去。配合restful也能够更好的提供api接口。

简单来说就是微服务把各种各样的小的服务区分开来当做一个当度的应用跑在服务器上,并且他的通信机制也是十分简单的,使用rest或者rpc都行。他们可以各自对自己的业务进行处理。各个服务直接可以用不同的语言开发,这样提高了不同技术团队之间的职能。

微服务的特点:

1、微服务的组件是以服务的形式存在的。

2、由各个不同的业务来切分整个大服务。

3、微服务是产品,不是项目。微服务在整个开发生命周期十分长久,并且需要后期团队的维护,就是因为微服务的特性,才使得维护更加的方便。

4、简单的通信机制,不论是rpc还是restful,都简化了系统服务之间的访问,并不像曾经的wsdl那么复杂。

5、分散治理,这个就是跟传统巨石应用区别开来了。不同的服务都是一个很小的组件,那么在组装的时候不同的服务可以组装成不同的微服务,十分灵活。

6、数据库分散管理,在做巨石应用的时候,一个项目就是访问一个数据库。那么微服务不是,每个不同的业务访问并且管理的都是自己的数据库,与各个不同的服务之间的数据库是不同的,这样也做到了数据的隔离。

7、容错性,每个服务宕掉不可访问的时候,微服务可以为每个服务进行监控与恢复。

 

其实我们平时接触的最多的还是SOA,SOA是偏向系统的解决方案,而微服务面向服务,微服务的颗粒度要小很多,SOA比较大,哪怕是一个小更新其实也是要重启对应的系统,而微服务却不是。考虑一下玩王者荣耀的时候,可以不停机更新,是不是一个道理?

 

​SOA的缺点:

随着时间的推移,代码库会越来越大,如果团队来了一个新人是十分恐惧的。

开发工具也会随着代码量的增多变得缓慢,这样导致的就算是开发效率的降低。

服务器启动变慢,代码变多,容器在加载的时候读取的代码文件也越多,这样导致容器每次启动都会比较慢。

持续部署相对复杂,不利于运维更新。每次更新整个系统必须关闭,用户无法访问。

可扩展性降低。

 

微服务的特点:

各服务之间通过json或者xml的数据形式通信。把一组类似的功能或者业务作为一个单独的微服务来做。比如订单服务让订单核心团队来维护。cms由cms团队来维护。

服务之间通过rest或者rpc来通信,甚至使用消息队列。

服务独立开发和部署,相互不影响,技术只能部门也相互不影响。

服务之间相互解耦,每个服务都有自己对应的数据库。注意,这需要做好数据一致性,比如tcc。

每个服务独立部署,对于频繁更新版本的项目由很好的效率。

便于扩展团队和组织架构。

整个微服务相对技术难度比SOA加大,需要开发人员对技术有一定的持续投入。

分布式事务比单体应用难处理。

生产环境部署复杂度提升,需要运维人员有一定的功底。

 

微服务的难点:

很多初创型公司对于开发进度是十分有要求的,起初并不会使用微服务架构,而是单体应用或者SOA,为的是更好更快速的发展自身的业务。然而发展到一定规模后,整个技术架构发生变化,要重构为微服务,这个时候的技术选型以及如何重构,和整个团队技术人员的参与就相对来说是个难点了。

相关文章
|
10天前
|
敏捷开发 监控 数据管理
构建高效微服务架构的五大关键策略
【4月更文挑战第20天】在当今软件开发领域,微服务架构已经成为一种流行的设计模式,它允许开发团队以灵活、可扩展的方式构建应用程序。本文将探讨构建高效微服务架构的五大关键策略,包括服务划分、通信机制、数据管理、安全性考虑以及监控与日志。这些策略对于确保系统的可靠性、可维护性和性能至关重要。
|
10天前
|
消息中间件 监控 持续交付
构建高效微服务架构:后端开发的进阶之路
【4月更文挑战第20天】 随着现代软件开发的复杂性日益增加,传统的单体应用已难以满足快速迭代和灵活部署的需求。微服务架构作为一种新兴的分布式系统设计方式,以其独立部署、易于扩展和维护的特点,成为解决这一问题的关键。本文将深入探讨微服务的核心概念、设计原则以及在后端开发实践中如何构建一个高效的微服务架构。我们将从服务划分、通信机制、数据一致性、服务发现与注册等方面入手,提供一系列实用的策略和建议,帮助开发者优化后端系统的性能和可维护性。
|
9天前
|
存储 关系型数据库 分布式数据库
电子好书发您分享《PolarDB分布式版架构介绍PolarDB分布式版架构介绍》
**《PolarDB分布式版架构介绍》电子书分享:** 探索阿里云PolarDB分布式设计,采用计算存储分离,借助GMS、CN组件实现大规模扩展。[阅读更多](https://developer.aliyun.com/ebook/8332/116553?spm=a2c6h.26392459.ebook-detail.5.3b3b2ccbVVjjt0)
15 3
|
5天前
|
消息中间件 负载均衡 持续交付
构建高效微服务架构:后端开发者的终极指南
【4月更文挑战第25天】在当今软件工程领域,微服务架构已经成为实现可扩展、灵活且容错的系统的首选模式。本文将探讨如何从零开始构建一个高效的微服务系统,涵盖关键组件的选择、通信机制、数据管理以及持续集成和部署策略。通过深入分析与案例研究,我们旨在为后端开发者提供一个全面的微服务实践指南,帮助他们在构建现代化应用时做出明智的架构决策。
|
5天前
|
消息中间件 持续交付 数据库
构建高效可靠的微服务架构:策略与实践
【4月更文挑战第25天】 随着现代软件开发的复杂性日益增加,传统的单体应用已难以满足快速迭代和灵活部署的需求。本文深入探讨了如何构建一个高效且可靠的微服务架构,包括关键的设计原则、技术选型以及实践中的挑战和应对策略。通过分析多个成功案例,我们总结了一系列最佳实践,并提出了一套可量化的性能优化方法。文章不仅为开发者提供了具体的技术指导,同时也强调了团队协作和持续学习在微服务转型过程中的重要性。
|
3天前
|
Kubernetes 负载均衡 Docker
【专栏】构建高效微服务架构:Docker与Kubernetes的完美搭档
【4月更文挑战第27天】本文介绍了Docker和Kubernetes在构建微服务架构中的应用。Docker是开源容器引擎,用于打包和分发应用,实现隔离和封装,提升可扩展性和可维护性。Kubernetes是容器编排平台,自动化部署、扩展和管理容器,提供负载均衡和故障转移。二者结合,能高效支持微服务架构。文中通过实例展示了如何将用户、商品和订单服务用Docker打包,再用Kubernetes部署和管理,确保微服务稳定运行。
|
5天前
|
监控 测试技术 持续交付
探索现代微服务架构的最佳实践
【4月更文挑战第25天】 随着软件开发领域不断演进,微服务架构已成为设计灵活、可扩展且高度可维护系统的首选方案。本文将深入探讨构建和部署微服务时的关键最佳实践,涵盖从服务划分原则到持续集成/持续部署(CI/CD)的流程,再到监控与日志记录的策略。我们的目标是为开发者提供一套实用的指南,帮助他们在构建未来的应用程序时做出明智的架构选择,并确保这些系统能够快速响应市场和技术的变化。
|
6天前
|
持续交付 API 开发者
构建高效微服务架构:后端开发的新范式
【4月更文挑战第24天】 随着现代软件系统的复杂性日益增加,传统的单体应用已难以满足快速迭代与灵活扩展的需求。微服务架构作为一种新兴的软件开发模式,以其服务的细粒度、独立部署和弹性伸缩等优势,正在逐渐成为后端开发的重要趋势。本文将深入探讨微服务架构的设计原则、关键技术以及在实际业务中的应用实践,旨在为后端开发者提供构建和维护高效微服务架构的参考指南。
|
7天前
|
关系型数据库 分布式数据库 数据库
电子好书发您分享《PolarDB分布式版架构介绍》
阅读阿里云电子书《PolarDB分布式版架构介绍》,深入理解这款高性能数据库的分布式架构设计。书中通过图文并茂的方式揭示了PolarDB在分布式场景下的核心特性和技术优势,适合数据库爱好者和云计算从业者学习。[阅读链接](https://developer.aliyun.com/ebook/8332/116553?spm=a2c6h.26392459.ebook-detail.5.4ab72ccbIzDq2Q)
|
7天前
|
监控 API 持续交付
构建高效微服务架构:后端开发的新趋势
【4月更文挑战第23天】 随着现代软件开发实践的不断演进,微服务架构已经成为企业追求敏捷、可扩展和弹性解决方案的首选。本文深入探讨了如何构建一个高效的微服务架构,涵盖了关键的设计原则、技术选型以及实践建议。通过分析微服务的独立性、分布式特性和容错机制,我们将揭示如何利用容器化、服务网格和API网关等技术手段,来优化后端系统的可维护性和性能。文章旨在为后端开发人员提供一套全面的指南,以应对不断变化的业务需求和技术挑战。