谈谈微服务架构是一个怎样的存在?
微服务架构是当前最流行的技术架构,主要组件有注册中心、网关、配置中心和各种微服务模块。架构灵活、易扩展、可动态扩容。
一个“微服务”是在一个语境下、一个背景下才有意义的词,尝试独立去定义或解释它是说不清楚的。微服务架构是一种架构风格(或叫架构模式)、以及一组成功架构实践的总称。有时也代表一种架构思想。
面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。
微服务的主要优势有哪些?
1、将复杂的业务拆分成多个小的业务,每个业务拆分成一个服务,将复杂的问题简单化。利于分工,降低新人的学习成本。微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源。
2、微服务架构有以下优势: - 易于开发和维护:一个微服务只关注一个特定的业务功能,所以它的业务清晰、代码量较少。开发和维护单个微服务相对是比较简单的。
3、每个微服务组件都有自己分配的存储 内存和CPU资源,这就使得硬件利用更加易于优化和跟踪,特别是在基于云的Pass环境,开发团队可以使用他们喜欢的技术,任何语言都可以,只要确保微服务之间是可交互的,能够最终组合起最后的应用。
4、微服务设计选择DDD的优势有很多。首先,DDD让你首先考虑的是业务语言,而不是数据。这样可以避免将需求切割成数据和行为,然后数据用数据库实现,行为使用服务实现,最后造成需求的首肢分离。
5、然而,在微服务架构带来可独立部署、高扩展与伸缩、自由选择开发语言、高效利用资源、故障隔离等优点,同时也因为服务多带来分布式事务、服务之间通信、监控、部署等新的问题。
6、微服务架构的主要优势之一是与单独部署和扩展组件相关的利用率和成本优势。 虽然这些优势在一定程度上仍然存在于本地基础设施中,但小型、独立可扩展的组件与按需、按使用付费的基础设施相结合是可以找到真正成本优化的地方。
微服务架构的优缺点
缺点整体复杂度更高,微服务根本上说是一个分布式系统。开发者需要选择和实现基于消息或者 RPC 的进程间通信机制。虽然这个有很多框架可供选择,并不需要从头实现。但是整体上的代码复杂度是提高了。
微服务只是业务逻辑的代码,不会和HTML,CSS 或其他界面组件混合。微服务架构的缺点:微服务架构可能带来过多的操作。需要DevOps技巧 (*://en.wikipedia.org/wiki/DevOps)。可能双倍的努力。分布式系统可能复杂难以管理。
介绍微服务架构好处的文章比较多,最近交付的一个项目发现的缺点也比较明显,给方案设计,性能,测试,运维,问题排查,数据管理,配置管理,事务管理,研发管理都带来了不少挑战。
然而,在微服务架构带来可独立部署、高扩展与伸缩、自由选择开发语言、高效利用资源、故障隔离等优点,同时也因为服务多带来分布式事务、服务之间通信、监控、部署等新的问题。
大量的业务必然会有大量的代码,代码得可读性和可维护性依然很差。如果面对海量的用户,它的并发能力依然不够。基于以上单体架构系统的不足,提出了微服务架构。
微服务优点
微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源。这是因为它们通过扩展组件来处理功能瓶颈问题。这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个完整的应用程序的全新迭代。
微服务架构有以下优势: - 易于开发和维护:一个微服务只关注一个特定的业务功能,所以它的业务清晰、代码量较少。开发和维护单个微服务相对是比较简单的。
每个微服务组件都有自己分配的存储 内存和CPU资源,这就使得硬件利用更加易于优化和跟踪,特别是在基于云的Pass环境,开发团队可以使用他们喜欢的技术,任何语言都可以,只要确保微服务之间是可交互的,能够最终组合起最后的应用。
微服务架构的优点:每个微服务都很小,这样能聚焦一个指定的业务功能或业务需求。微服务能够被小团队单独开发,这个小团队是2到5人的开发人员组成。
其次,DDD可以更加领域模型界限上下文边界快速拆分微服务,实现系统架构适应业务的快速变化。