什么是微服务?
微服务的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底解耦,每个微服务提供单个业务功能的服务;从技术角度看是小而独立的处理过程,类似进程,能自行单独启动或销毁,可拥有独立数据库。
缺点:开发人员要处理分布式系统的复杂性;服务增加,运维的压力增大;系统部署依赖,服务间通信成本;数据一致性;系统集成测试;性能监控
微服务技术栈:
SpringCloud是什么?
springcloud=分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术的集合体,俗称微服务全家桶。
官方说明:
springcloud基于springboot提供了一套微服务解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于NetFlix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件。
springcloud利用springboot的开发便利性简化了分布式系统基础设施的开发,springcloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理,服务发现,断路器,路由,微代理,事件总线,全局锁,决策竞选,分布式会话等,他们都能用springboot的开发风格做到一键启动和部署。
springboot没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过springboot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和维护的分布式系统开发工具包。
springboot和springcloud什么关系?
总结:springboot专注于快速,方便地开发单个微服务个体,springcloud专注全局的服务治理框架。
springcloud和dubbo对比:
Eureka(服务注册与发现):
Eureka和Dubbo架构对比:
SpringCloud中可以使用eureka.server.enable-self-preservation=false禁用自我保护模式。
对于注册进eureka里的微服务,可以通过服务发现来获得该服务的信息。
Zookeeper和Eureka的对比:
Zookeeper保证CP,Eureka保证AP
Ribbon(负载均衡):
集中式LB:
进程内LB:将LB逻辑集成到消费方,消费方从服务注册中心获知哪些地址可用,然后自己再从这些地址中选择出一个合适的服务器。
Ribbon属于进程内LB,它是一个类库,集成于消费方进程,消费方通过它来得到服务提供方的地址。
Ribbon核心组件IRule:
Feign(负载均衡):
Feign是一个声明式的Web服务客户端,使得编写Web服务客户端变得非常容易,只需要创建 一个接口,然后再上面加上注解即可。
Hystrix断路器:
服务熔断:
一般是由某个服务故障或者异常引起,类似保险丝,当某个异常条件被触发,直接熔断整个服务。
服务降级:
Hystrix Dashboard(服务监控):
Zuul网关:
Config(分布式配置中心):
SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。
作用: