zoukankan      html  css  js  c++  java
  • 1.微服务原理认知

    微服务原理认知

    单体应用存在的问题

    单体应用有很大的局限性,随着时间推移而变得越来越臃肿。

    不利于敏捷开发和持续交付,持续部署。

    应用程序非常复杂,对于任何一个开发人员来说显得过于庞大。

    单体应用内不同模块之前高耦合变的不可靠,例如内存溢出。

    微服务解决单体应用问题

    微服务架构是一种思想,而真正采用的是分布式系统开发

    它的思路是将应用程序分解成一套较小的互连服务。一个服务通常实现了一组不同的特性或功能,例如订单管理、客户管理等。

    微服务的优点

    解耦

    第一,它解决了复杂问题。它把可能会变得庞大的单体应用程序分解成一套服务。因此, 使用微服务架构模式, 个体服务能被更快地开发,并更容易理解与维护。

    第二,这种架构使得每个服务都可以由一个团队独立专注开发。开发者可以自由选择任何符合服务 API 契约的技术。此外,由于服务较小,使用当前技术重写旧服务将变得更加可行。

    第三,微服务架构模式可以实现每一个微服务独立部署。开发人员根本不需要去协调部署本地变更到服务。这些变更一经测试即可立即部署。

    最后,微服务架构模式使得每个服务能够独立扩展。您可以仅部署满足每个服务的容量和可用性约束的实例数目。

    (每个模块的压力是不一样的,资源分配不同)

    微服务的缺点

    方法即服务!?

    1、微服务是一个分布式系统,其使得整体变得复杂

    2、分区数据库架构

    3、实现了跨越多服务变更

    4、部署基于微服务的应用程序也是非常复杂的

    5、每个服务都有多个运行时实例。还有更多的移动部件需要配置、部署、扩展和监控。此外,您还需要实现 服务发现机制,使得服务能够发现需要与之通信的任何其他服务的位置(主机和端口)

    要成功部署微服务应用程序, 需要求开发人员能高度控制部署方式和高度自动化。

    一种自动化方式是使用现成的平台即服务(PaaS),如 Cloud Foundry。 PaaS 为开发人员提供了一种简单的方式来部署和管理他们的微服务。它让开发人员避开了诸如采购和配置 IT 资源等烦恼。同时,配置 PaaS 的系统人员与网络专业人员可以确保达到最佳实践以落实公司策略。

    自动化微服务部署的另一个方式是开发自己的 PaaS。一个普遍的起点是使用集群方案,如 Kubernetes,与 Docker 等容器技术相结合。

    CAP定理与BASE理论

    CAP理论指的是一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。

    1588750668350

    一致性(Consistency)

    一致性指 “all nodes see the same data at the same time”,即更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致。

    可用性(Availability)

    可用性指“Reads and writes always succeed”,即服务一直可用,而且是正常响应时间。

    分区容错性(Partition tolerance)

    分区容错性指“the system continues to operate despite arbitrary message loss or failure of part of the system”,即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。

    BASE 理论

    eBay 的架构师 Dan Pritchett 源于对大规模分布式系统的实践总结,在 ACM 上发表文章提出 BASE 理论,BASE 理论是对 CAP 理论的延伸,核心思想是即使无法做到强一致性(Strong Consistency,CAP 的一致性就是强一致性),但应用可以采用适合的方式达到最终一致性(Eventual Consitency)。

    基本可用(Basically Available)

    基本可用是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用

    电商大促时,为了应对访问量激增,部分用户可能会被引导到降级页面,服务层也可能只提供降级服务。这就是损失部分可用性的体现。

    软状态(Soft State)

    软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延时就是软状态的体现。mysql replication 的异步复制也是一种体现。

    最终一致性(Eventual Consistency)

    最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。

    ACID 和 BASE 的区别与联系

    ACID 是传统数据库常用的设计理念,追求强一致性模型。BASE 支持的是大型分布式系统,提出通过牺牲强一致性获得高可用性。

    ACID 和 BASE 代表了两种截然相反的设计哲学,在分布式系统设计的场景中,系统组件对一致性要求是不同的,因此 ACID 和 BASE 又会结合使用。

  • 相关阅读:
    css常用格式
    css选择器
    D1-mini esp8266的资料备份
    总结esp8266刷Python的完整的步骤(终极总结)
    用Python利用pyFirmata控制Arduino实现Blink
    microPython 的逗比报错的问题
    python+opencv+Face++实现人脸识别比对
    TypeError: slice indices must be integers or None or have an __index__ method
    opencv识别验证码的教程和资料
    校园网一键登录后台
  • 原文地址:https://www.cnblogs.com/orange-lsc/p/12849814.html
Copyright © 2011-2022 走看看