**微服务是什么? **
微服务化的核心就是将传统的一站式应用,根据业务拆分一个一个的服务,彻底的去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事,从技术角度看就是一种小而独立的处理过程,类似进程概念,能够自行单独启动或销毁,拥有自己独立的数据库
微服务技术栈有哪些?
- 服务开发 Springboot,Spring,SpringMVC
- 服务配置与管理 NetfLix公司的Archaius,阿里的Diamond等
- 服务发现与注册 Eureka,Consul,Zookeeper等
- 服务调用 Rest,RPC,gRPC
- 服务熔断器 Hystrix,Envoy等
- 负载均衡 Ribbon ,Nginx等
- 服务接口调用 Feign等
- 消息队列 Kafka,RabbitMQ,ActiveMQ等
- 服务配置中心管理 SpringCloudConfig,Chef等
- 服务路由 Zuul等
- 服务监控 Zabbix,Nagios,Metrics,Spectator等
- 全链路追踪 Zipkin,Brave,Dapper等
- 服务部署 Docker,OpenStack,Kubernetes等
- 数据流操作开发包 SpringCloud Stream
springcloud是什么?
springcloud=分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术的集合体,俗称微服务全家桶
Springboot和springcloud是什么关系?
springBoot专注于快速方便的开发单个个体微服务,SpringCloud是关注全局的微服务协调整理治理框架,它将Springboot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供配置管理,服务发现,断路器,路由,微代理,事件总线,全局锁,决策竞选,分布式会话等等集成服务
Springboot可以离开springcloud独立使用开发项目,但是springcloud离不开springboot,属于依赖关系
SpringCloud VS DUBBO
Dubbo SpringCloud
服务注册中心 Zookeeper Springcloud Netflix Eureka
服务调用方式 RPC REST API
服务监控 Dubbo -monitor SpringBoot Admin
断路器 不完善 SpringCloud Neflix Hystrix
服务网关 无 SpringCloud Netflix Zuul
分布式配置 无 SpringCloud Config
服务跟踪 无 SpringCloud Sleuth
消息总线 无 SpringCloud Bus
数据流 无 SpringCloud Stream
批量任务 无 SpringCloud Task
Eureka包含两个组件:Eureka Server和Eureka Client
Eureka Server提供服务注册服务, 各个节点启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到
Eureka Client是一个Java的客户端,用于简化Eureka Server的交互,客户端同时也具备一个内置的使用轮询负载算法的负载均衡器.在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒).如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移出(默认90秒)
在分布式架构中往往伴随CAP的理论.因为分布式的架构,不再使用传统的单机架构,多机为了提供可靠服务所以需要沉余数据因而会存在分区容忍性P
沉余数据的同时会在复制数据的同时伴随着可用性A和强一致性C的问题.是选择停止可用性达到强一致性还是保留可用性选择最终一致性.通常会选择后者
其中zookeeper和eureka分别是注册中心的CP Ap的两种的实践.他们都提供服务注册中心的功能.建议使用Ap,不强求数据的强一致性,达成数据的最终一致性
Eureka AP
Eureka保证了可用性,实现了最终一致性
Eureka各个节点都是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节点依然可以提供注册和查询服务,而Eureka的客户端在向某个Eureka注册或如果发现连接失败,则会自动切换至其他节点,只要还有一台Eureka还在,就能保证注册服务可用(保证可用性),只不过查到的信息可能不是最新的(不保证强一致性),其中说明了,Eureka是不满足强一致性的,但是还是会保证最终一致性
zookeeper CP
zookeeper在选举leader时,会停止服务,直到选举成功之后,才会再次对外提供服务,这个时候说明了服务不可用,但是在选举成功之后,因为一主多从的结构,zookeeper在这时还是一个高可用的注册中心,只是在优先保证一致性的前提下,zookeeper才会顾及到可用性