spring cloud

spring-cloud 讲解

微服务优缺点

  1. 分工协作
    1. 单体:影响开发效率、发布及迭代性差,项目启动慢,每一个开发者都要对整个项目有个总体的把握
    2. 拆分:开发效率高,每个开发者专注自己负责的模块,提升了敏捷性,
  2. 并发能力
    1. 单体:整体集群,易造成系统资源浪费;无法准确的预测最大并发量,无法准确的预知服务器扩容数量
    2. 拆分:服务集群,充分利用服务器资源,可以只针对多个或单个服务扩容,容易定位问题或服务并发数量,从而实现更加准确的扩容
  3. 业务
    1. 单体:随着业务的增加,应用慢慢膨胀,难以维护
    2. 差分:根据功能垂直差分,责任更加分明,维护更加精确
  4. 容错
    1. 单体:应用某个地方出现问题,可能会导致整个应用出现问题,从而导致无法对外提供服务
    2. 拆分:单个服务出现问题,可以进行熔断(隔离)不会导致整个应用出现问题
  5. 维护
  6. 扩展
    1. 单体:难以进行升级技术更新
    2. 拆分:新的服务可以采用任意新技术
  7. 缺点
    1. 分布式编程比较困难,并且总是面临失败的可能
    2. 最终一致性,保持最终一致性非常困难
    3. 运维较为复杂

SOA、分布式、微服务有什么关系

  1. 分布式架构是指将单体架构的各个部分拆分,然后部署不同的机器或进程中去,soa和微服务基本上都是微服务架构
  2. SOA是一个面向服务的架构,系统所有服务都注册在总线上,当调用服务时,从总线上查找信息,然后调用
  3. 微服务时一种更彻底的面向服务的架构,将系统中各个功能抽象成一个个小的应用程序,基本保持一个应用对应一个服务架构

怎么进行服务拆分

  1. 高内聚】低耦合,职责单一,服务粒度适中
  2. 以业务模型切入:比如 商品、用户、订单等等
  3. 演进式拆分:刚开始不要拆分的太细、可以逐步迭代拆分
  4. 微服务1.0 仅使用服务注册发现
  5. 微服务2.0 服务注册发现,熔断、降级
  6. 微服务3.0 将服务治理作为通用组件

常用的微服务组件

注册中心(nacos 核心原理)

服务注册: 服务启动时,通过rest请求的方式向Nacos Server注册自己的服务
服务心跳:Nacos Client 会维护一个定时心跳通知Nacos Server 默认5s一次,如果超过15s没有收到心跳,会将服务设置为false(拉取服务列表时会把此服务忽略),如果nacos 服务端超过30s 没有收到心跳,则剔除服务。
服务发现:Nacos Client 会有一个定时任务,实时去Nacos Server 拉取健康服务
服务停止:Nacos Client 通过 rest 发送一个注销请求

谈谈配置中心

配置中心原理