什么是强一致性和最终一致性

强一致性是指数据在多个副本中总数实时同步的,如果能容忍数据在多个副本中在一定的延迟时间内同步,则是弱一致性

最终一致性则不要求数据什么时候同步,但是最终会同步即可。通常情况下我们在分布式领域选择会牺牲了强一致性,会采用最终一致性

什么是Base理论

Base指的是基本可用,软状态,最终一致性。它是对CAP中的AP的扩展,意思是说当出现故障部分服务不可用时,要保证核心功能可用,允许在一段时间内数据不一致,但最终要保证一致性。满足Base理论的事务也叫柔性事务

SpringCloud

讲一下你们公司微服务解决方案

我司正在使用的是第一代微服务方案,Springcloud Netflix全家桶。

它是使用Eureka做服务注册与发现,也就是解决服务之间通信问题,

Ribbon/OpenFeign做客户端的负载均衡,也就是解决将请求路由到微服务集群的问题,

Hystrix断路器的熔断、降级来解决单节点故障,

Zuul做服务网关,将它作为整个微服务的大门,来实现登录、权限检查等业务,

Config分布式配置中心,来统一管理配置所有微服务的配置文件,

Bus消息总线给各个微服务广播消息,可以实现各个微服务配置的自动刷新,

Sleuth链路追踪,来实时监控各个微服务建的调用关系,快速定位故障节点

说一说Spring Cloud有哪些常用组件

Eureka:做服务注册与发现,用来解决服务之间通信问题,

Ribbon/OpenFeign:用做客户端的负载均衡,也就是解决将请求路由到微服务集群的问题,

Hystrix:断路器,它的熔断、降级策略用来解决单节点故障,

Zuul:做服务网关,它是整个微服务的大门,可以用来实现登录、权限检查等业务,

Config:分布式配置中心,用来统一管理配置所有微服务的配置文件,

Bus:消息总线,用来给各个微服务广播消息,可以实现各个微服务配置的自动刷新,

Sleuth:链路追踪,用来实时监控各个微服务建的调用关系,快速定位故障节点

Spring Cloud的优缺点?

微服务相对单体应用来说

优点

  • 服务之间无耦合,代码简单方便开发维护,服务之间升级维护互不影响
  • 轻量级HTTP通信机制,不同的服务可以采用不同的编程语言
  • 有极强的扩展能力,业务量大的服务可以再次拆分服务,或者也可以集群部署
  • 支持时下流行的敏捷开发并做了优化

缺点

  • 分布式事务繁琐
  • 部署麻烦,开发人员的学习成本高
  • 技术成本高,开发人员需要花更多的时间学习相关技术
  • 微服务间的通信存在对性能的损耗问题