一. SpringCloud简介与微服务架构 (3)

这种架构使每个服务都能够由专注于该服务的团队独立开发。开发人员可以自由选择任何有用的技术,只要该服务符合API合同。当然大多数组织都希望避免完全无政府状态并限制技术选择。然而这种自由意味着开发人员不再有义务使用在新项目开始时存在的可能过时的技术。在编写新服务时,他们可以选择使用当前的技术。此外由于服务相对较小,使用当前技术重写旧服务变得可行。

Microservice架构模式使每个微服务都能独立部署。开发人员不需要协调部署本地服务的变更。这些变化可以在测试后尽快部署。例如UI团队可以执行A | B测试,并快速迭代UI更改。Microservice架构模式使连续部署成为可能。

Microservice架构模式使每个服务都可以独立调整。您可以仅部署满足其容量和可用性限制的每个服务的实例数。此外您可以使用最符合服务资源要求的硬件。

微服务的缺点

关键点(挑战):多服务运维难度,系统部署依赖,服务间通信成本,数据一致性,系统集成测试,重复工作,性能监控等

一个缺点是名称本身。术语microservice过度强调服务规模。但重要的是要记住,这是一种手段而不是主要目标。微服务的目标是充分分解应用程序以便于敏捷应用程序开发和部署。

微服务器的另一个主要缺点是分布式系统而产生的复杂性。开发人员需要选择和实现基于消息传递或RPC的进程间通信机制。此外他们还必须编写代码来处理部分故障,因为请求的目的地可能很慢或不可用。

微服务器的另一个挑战是分区数据库架构。更新多个业务实体的业务交易是相当普遍的。但是在基于微服务器的应用程序中,您需要更新不同服务所拥有的多个数据库。使用分布式事务通常不是一个选择,而不仅仅是因为CAP定理。许多今天高度可扩展的NoSQL数据库都不支持它们。你最终不得不使用最终的一致性方法,这对开发人员来说更具挑战性。

测试微服务应用程序也更复杂。服务类似的测试类将需要启动该服务及其所依赖的任何服务(或至少为这些服务配置存根)。再次,重要的是不要低估这样做的复杂性。

Microservice架构模式的另一个主要挑战是实现跨越多个服务的更改。例如我们假设您正在实施一个需要更改服务A,B和C的故事,其中A取决于B和B取决于C,在单片应用程序中您可以简单地更改相应的模块,整合更改并一次性部署。相比之下,在Microservice架构模式中,您需要仔细规划和协调对每个服务的更改。例如,您需要更新服务C,然后更新服务B,然后再维修A,幸运的是大多数更改通常仅影响一个服务,而需要协调的多服务变更相对较少。

部署基于微服务的应用程序也更复杂。单一应用程序简单地部署在传统负载平衡器后面的一组相同的服务器上。每个应用程序实例都配置有基础架构服务(如数据库和消息代理)的位置(主机和端口)。相比之下,微服务应用通常由大量服务组成。例如每个服务将有多个运行时实例。更多的移动部件需要进行配置,部署,扩展和监控。此外您还需要实现服务发现机制,使服务能够发现需要与之通信的任何其他服务的位置(主机和端口)。传统的基于故障单和手动操作的方法无法扩展到这种复杂程度。因此,成功部署微服务应用程序需要开发人员更好地控制部署方法,并实现高水平的自动化。

2. SpringCloud引入

SpringCloud并不是一个框架而是一个微服务整体架构,或者说SpringCloud是一个生态圈,里面包含了很多的服务,每一个服务独立存在,相互之间互不干扰,可以直接运行。

其实SpringCloud就是一个完整的微服务架构,提供了所有功能,整个开发项目中所需要的架构功能微服务都有,也就是说整个springcloud就是一个完整的项目,这个架构已经搭建完毕了,用到了直接获取即可,只需要往架构中注入自己的业务代码就可以。

它具有微服务的以下几大优势:

复杂度可控

在将应用分解的同时,规避了原本复杂度无止境的积累。每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。由于体积小、复杂度低,每个微服务可由一个小规模开发团队完全掌控,易于保持高可维护性和开发效率

独立部署

具备独立的运行进程,所以每个微服务也可以独立部署。

当某个服务发生变更时无需编译、部署整个应用。

由微服务组成的应用相当于具备一系列可并行的发布流程,使得发布更加高效,同时降低对生产环境所造成的风险,最终缩短应用交付周期

技术选型灵活

微服务架构下,技术选型是去中心化的。每个团队可以根据自身服务的需求和行业发展的现状,自由选择最适合的技术栈。

由于每个微服务相对简单,故需要对技术栈进行升级时所面临的风险就较低,甚至完全重构一个微服务也是可行的

容错能力

在微服务架构下,故障会被隔离在单个服务中。若设计良好,其他服务可通过 重试、平稳退化等机制实现应用层面的容错

扩展性

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssydw.html