如何走向单体地狱以及微服务解决问题&Eureka,Zookeeper,Consul异同点&CAP

一、走向单体地狱

1.怎么如何走向单体地狱

我们通常一个项目的几个模块,最终打包成一个war包就叫做单体应用,随着业务程序的不断扩展,已经发展成为一个只有少数来发人员能够理解的巨大单体,它使用了过时、非生产性技术编写,这使得招聘雨哦修开发人员变得非常困难。应用程序变得难以扩展,不可靠。因此敏捷开发和应用的交付是不可能的。

2.微服务-解决复杂问题

  • 他的思路是将应用程序分解成一套较小的互联服务。一个服务通常实现了一组不同的特性或功能,例如订单管理,客户管理等。每一个微服务都是一个迷你应用,它自己的六边形架构包括了业务逻辑以及多个适配器。
  • 一些微服务会暴露一个供其他微服务或应用客户端消费的API。其他微服务可能实现了一个web UI。在运行时,每个实例通常是一个云虚拟机或者是一个Docker容器
  • 在运行时,TripManagement服务由多个服务实例组成,每个服务实例是一个Docker容器,为了实现高可用,容器时在多个允许你及上运行的。服务实例的之前时一个类似于NGINX的负载均衡器,用于跨实例分发请求。负载均衡器也可以处理其他问题,如缓存,访问控制,API度量和监控。
  • 微服务架构模式明显影响了应用程序与数据库之间的关系,其每一个服务都有自己的数据库模式。一方面,这种做法与企业级数据库模型的想法相悖,此外,它经常出现数据冗余。然而,如果想要从微服务中收益,每一个服务都应该有自己的数据库模式。他能实现松耦合。
  • 高可用:一直可以用,不会宕机
  • 根据不同的应用,采用不同的数据库技术,有的适合mysql 有的适合 redies
  • SOA:面向服务架构 ,类似于微服务
  • 从表面上看,微服务架构类似于SOA.微服务是由一组服务组成,换另一种方式去思考微服务架构模式,她是没有商业化的SOA,没有集成web服务规范(WS-)和企业服务总线。基于微服务的应用支持更简单,轻量级的协议,例如,REST,而不是WS-.我们也尽量避免使用ESB,而是实现微服务本身具有类似ESB功能。微服务构架也拒绝了SOA其他部分,例如,数据访问规范模式概念。

微服务架构模式有许多非常好的地方

二、注册中心Eureka,Zookeeper,Consul的异同点

组件名 语言 CAP 服务监控检查 语对外暴露接口 Springcloud集成
Eureka Java AP 可配支持 HTTP 已集成
Consul Go AP 支持 HTTP/DNS 已集成
Zookeeper Java AP 支持 客户端 已集成

三、CAP

1.CAP定理:

一个分布式系统最多只能同时满足一致性、可用性、和分区容错性这三项中的两项

  • 一致性(Consistency):即更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致
  • 可用性(Availability):即服务器一直可用,而且是正常的相应时间
  • 分区容错性(Partition tolerance):即分布式系统在遇到某节点或网路分区故障的时候,仍然能够对外提供一致性和可用性服务。

2.CAP权衡

  • 对于多是大型互联网应用场景,主机众多,部署分散,而且现在的集群规模越来越大,所以节点故障,网络故障是常态,而且要保证服务的可用性达到N个9,即保证P和A,舍弃C.虽然某些地方会影响到客户体验,但是没有达到用户流程的严重程度(比如顾客下单,网络崩了,数据库没有收到订单信息这就是流程故障)
  • 对于钱财这样不能由一丝让步的场景,C必须保证。网络发生故障宁可停止服务,也要保证CA。
发布了37 篇原创文章 · 获赞 14 · 访问量 9778

猜你喜欢

转载自blog.csdn.net/qmqm33/article/details/105066672
今日推荐