发布网友
共1个回答
热心网友
根据 Gartner 的说法,微服务是云开发的新应用平台。微服务架构的优势包括:开发、部署、故障隔离、混合技术栈和粒度缩放。每个服务组件可以轻松地根据各自的功能进行开发和部署,即使应用中的一个服务失效,系统仍能继续运行。使用不同的语言和技术构建同一应用程序的不同服务,组件可以根据需要进行扩展,无需将所有组件融合到一起。
理解微服务的核心在于将其比作蜜蜂的工作,每个敏捷团队使用可用的框架和所选的技术栈构建单独的服务组件,这些组件共同形成强大的微服务架构,提供更好的可扩展性。团队可以单独处理每个服务组件的问题,而不会对整个应用程序产生影响或使影响最小。
微服务的特点包括自由使用不同的技术、每个微服务专注于单一功能、支持单个可部署单元、允许软件的持续发布、确保每项服务的安全性、并行开发和部署多个服务。然而,微服务也存在一些缺点,如增加故障排除的难度、远程调用导致延迟增加、增加配置和其他操作的工作量、难以维持处理的安全性以及跟踪各种边界的数据变得困难。
与单体应用、SOA 和微服务架构的区别在于,微服务遵循“尽可能少的共享”的架构方法,侧重点在于“bounded context”的概念,使用轻量级协议,如 HTTP/REST 等,进行通信,支持多消息协议,以及使用事件循环进行非锁定 I/O 处理。微服务架构在开发时会遇到挑战,如开发较小的微服务并经常遇到一些挑战。
领域驱动设计(DDD)是一种帮助开发人员和用户使用通用语言来轻松解释领域的方法。通用语言必须非常清晰,以便将所有团队成员置于同一水平线上,并以机器可以理解的方式进行翻译。内聚是一个模块内部各元素之间相关联程度的度量,而耦合是组件之间依赖关系强度的度量。REST/RESTful 是一种帮助计算机系统通过 Internet 进行通信的架构风格,使微服务更容易理解和实现。
Spring Boot 是一种解决启动新 spring 项目复杂性的问题的方法,它可以避免所有样板代码和配置。Spring Boot 执行器提供 restful 服务,以访问在生产环境中运行程序的当前状态。Spring Cloud 为开发人员提供了一些快速构建分布式系统常见模式的工具,例如配置管理、服务发现、断路器、智能路由、领导选举、分布式会话和集群状态等。
微服务测试分为不同级别,包括不同类型的微服务测试。分布式事务在微服务世界中变得更加复杂,因为它涉及多个不能以原子方式提交的单独数据源的突变。幂等性是能够以同样的方式做两次,而最终结果将保持不变的特性,通常用于远程服务或数据源中,以确保当它多次接收指令时,只处理一次。有界上下文是领域驱动设计的核心模式,用于处理大型模型和团队的策略设计。
双因素身份验证是帐户登录过程中启用第二级身份验证的方法。客户端证书是客户端系统向远程服务器发出经过身份验证的请求所用的数字证书。PACT 是一个开源工具,允许测试服务提供者和消费者之间的交互,提高微服务集成的可靠性。OAuth 是开放授权协议,允许通过在 HTTP 服务上启用客户端应用来访问资源所有者的资源。
康威定律表明,任何设计系统的组织(广泛定义)都将产生一种设计,其结构是组织通信结构的副本。契约测试是在外部服务边界进行的测试,验证服务是否符合消费者服务预期的契约。端到端测试验证了工作流中的每个流程都正常运行,确保系统作为一个整体协同工作。
容器是管理基于微服务的程序的好方法,可以单独开发和部署它们,通过将微服务封装在容器镜像及其依赖项中,可以实现滚动开发按需实例的微服务而无需任何额外的工作。DRY 代表不要重复自己,提倡重用代码的概念。消费者驱动的契约(CDC)是一种开发微服务的模式,以便它们可以被外部系统使用。
Web、RESTful API 是构建微服务架构各个组件之间接口的合理模型。语义监控,也称为综合监控,将自动化测试与监控程序相结合,以检测业务失败的因素。跨功能测试是对非功能性需求的验证,如那些不能像普通功能那样实现的要求。
在测试中消除不确定性的一些方法包括通过预定义测试条件和执行重复测试来减少不可靠性。Mock 和 Stub 是两种不同的测试技术,用于模拟对象的行为。Mike Cohn 的测试金字塔提供了一个模型,描述了软件开发所需的自动化测试类型,从第一层的最高测试量到服务层的测试次数,应小于单元测试级别但大于端到端级别。
Docker 提供了可用于托管任何应用程序的容器环境,将软件应用程序和支持它的依赖项紧密打包在一起,形成被称为容器的产品。金丝雀发布是一种降低在生产中引入新版本软件风险的技术,通过将更改缓慢地推广到一小部分用户来完成。持续集成(CI)是每次团队成员提交版本控制更改时自动构建和测试代码的过程,鼓励开发人员通过在每个小任务完成后将更改合并到共享版本控制存储库来共享代码和单元测试。
持续监控深入监控覆盖范围,从浏览器中的前端性能指标,到应用程序性能,再到主机虚拟化基础架构指标。在微服务架构中,架构师的角色包括设计、规划、协调和维护微服务架构,以确保系统的稳定性和性能。可以使用微服务创建状态机,每个微服务都有自己的数据库,可以指定不同的状态和事件,例如定义一个 Order 微服务,订单可以具有不同的状态,状态的转换可以是事件。
Reactive Extensions(Rx)是一种设计方法,用于收集和组合来自多个服务的结果,这些调用可以是同步或异步的,阻塞或非阻塞。Rx 是分布式系统中非常流行的工具,与传统流程相反。
欢迎关注前端公众号:前端先锋,领取前端工程化实用工具包。