作者:书友74562696 | 来源:互联网 | 2023-10-09 19:02
1、基本概念1.1、相关概念1.1.1、组件组件是可独立更换和升级的软件单元。组件又可以分为库(library)和服务(service)两个概念。1.1.2、库(library)指
1、基本概念
1.1、相关概念 1.1.1、组件 组件是可独立更换和升级 的软件单元。 组件又可以分为库(library)和服务 (service) 两个概念。
1.1.2、库(library) 指的是链接到程序的组件,通过本地函数调用来使用库提供的功能;例如JDK中的相关类库。
1.1.3、服务 (service) 服务 (service) 是进程外的组件,通过网络服务请求 (web service request) 或者远程函数调用之类的机制来使用里面的功能。例如微信接口、支付接口等第三方接口或者自己开发提供的服务。
1.1.4、分布式 一个业务拆分为多个子业务,部署在多个服务器上 。
1.1.5、集群 同一个业务,部署在多个服务器上 。
1.1.6、分布式和集群的区别 大白话解说,半分钟就懂 — 分布式与集群是什么 ? 区别是什么?
1.2、微服务 微服务是什么?十分钟了解微服务架构 微服务是指分解成围绕业务能力所组织的服务。这些服务需要对该业务领域的软件进行广泛的实施,包括用户界面、持久性存储和任何外部协作。因此,微服务团队是跨职能的,包括开发所需的全部技能:用户体验、数据库和项目管理。
1.2.1、微服务设计的原则 我们决定切割应用程序的原则是什么?组件的关键属性是独立替换和可升级性的概念,这意味着我们可以寻找重写组件而不影响其协作者的点 。事实上许多微服务群都明确预计许多服务将被废弃,而不是长远发展。 强调可替换性是模块化设计中的一般原则的特别情况,其原则是为了在整个模式变化中驱动模块化。你可以在相同模块并且相同时间内做修改。系统修改的那部分应很少出现在不同且相互依赖的服务中。如总是两个服务一并修改,那说明你需要要合并服务了。 我们听到的一个合理的论点是你不应该从微服务架构开始,而应从单一(庞大)的项目开始,一旦这一项目遇到问题,就拆分模块,划分不同的微服务。
1.2.2、微服务优点 将组件并于服务使得发布计划具有更大的颗粒度。单一服务下,任何修改都需重新发布整个应用,而微服务架构的情况下,只需要重新发布修改的服务,所以微服务能简化并加快发布流程。但缺点是需要担心修改某个服务使得其消费者中断。
1.2.3、微服务与传统单体应用相比的缺点 或者说是使用微服务所付出的代价。 使用服务作为组件的结果是,应用程序需要被设计,以便它们能够容忍服务的失败。任何服务调用都可能由于供应商的无法使用而失败,必须尽可能为客户优雅地响应。与单块设计相比,这是一个缺点,因为它引入了额外的复杂性来处理它。其结果是,微服务团队不断地反思服务失败如何影响用户体验。Netflix的Simian Army在工作日中引入了服务的失败,甚至是数据中心,以测试应用程序的弹性和监控。
对于微服务的缺点所作出的优化 : 由于服务可能随时发生故障,因此能够快速检测故障并在可能的情况下自动恢复服务很重要。 微服务应用程序非常重视应用程序的实时监控,检查架构元素(数据库每秒获得多少请求)和业务相关指标(例如每分钟收到多少订单)。 语义监控可以提供一个预警系统,从而引导开发团队进行跟踪和调查。 监控对迅速发现不良紧急行为至关重要,只有发现才可能进行修复。