微服务总结

 单块架构的优缺点

  

优点:

1、功能划分清楚

2、层次关系良好

3、每一层独立

4、部署简单

5、技术单一

6、用人成本低

缺点:

  1. 功能仍然太大
  2. 升级风险高
  3. 维护成本增加
  4. 交付周期变长
  5. 可伸缩性变差
  6. 监控困难

 

什么是微服务

      

  微服务架构的设计原则

  1. 拆分足够微
  2. 轻量级通信
  3. 领域驱动原则
  4. 单一职责原则
  5. DevOps(开发运维)及两个披萨
  6. 不限于技术栈

 

 

如何设计微服务系统

  1. 服务拆分  服务颗粒度,领域驱动设计
  2. 服务注册  :每个微服务之间进行通信,服务注册机制,服务中心进行注册。获知各个服务的状态,如果有服务down掉,立即广播给其他的服务
  3. 服务发现:调用另一个服务的功能的时候,就可以去服务注册中心

 

  1. 服务消费:调用服务,调用者为消费者,被调用者为供应商。

 

  1. 统一的入口:

 

  1. 配置管理

 

  1. 熔断机制:服务响应不过来,把请求挡住,把一个服务中断。

 

  1. 自动扩展

 

 

微服务的拆分的意义

  1. 易于实现:拆分的越小,易于实现
  2. 易于维护
  3. 易于部署
  4. 易于更新

 

拆分方法的方法:

  1. 横向拆分

就是按照不同的业务功能拆分不同的微服务

  1. 纵向拆分

把一个业务功能的模块或者组件进行拆

  1. 使用DDD:领域驱动设计原则开发

SpringCloud

  1. 配置管理
  2. 服务注册
  3. 服务发现
  4. 断路器
  5. 智能路由
  6. 负载均衡
  7. 微代理

 

Springboot 与SpringCloud 的关系

  1. Springboot 是构建spring cloud的基石
  2. 版本命名规则:伦敦地铁站的名字
  3. Finchly版本是基于Spring Boot 2.0.x

 

Spring Cloud Config

  1. 配置中心,利用git来集中管理程序的配置

 

Spring Cloud Netflix

集成众多Netflix的开源软件,包括Eureka、Hydstrix、Zuul、Archaius等。

Spring Cloud bus

消息总线,利用分布式消息将服务和服务实例联系在一起,用于在一个集群中传播状态的变化,比如配置更改的变化,可与Spring Cloud Config联合实现热部署

Spring Cloud Cluster

基于ZooKeeper、redis 、Hazelcast、Consul实现的领导选举和平民状态模式抽象和实现    

 

 

 

访问服务:

通过URI来访问服务

通过IP访问服务的弊端

  • 绑定主机
  • 难记
  • 很难做到负载均衡(负载均衡IP不一致)

使用Eureka

  • 服务注册和发现机制
  • 和Spring Cloud无缝集成
  • 高可用性
  • 开源(18年前)

微服务的消费模式:

  • 服务直连模式

特点:1、简洁明了 2、平台无关性 3、无法保证服务的可用性 4、生产环境中很少用

  • 客户端发现模式

1 服务启动后,将自己的位置信息提交到服务注册表

2 客户端,从服务注册表进行查询,来获取可用的实例

3 客户端自己使用负载均衡算法从多个服务实例中选择出一个使用

 

 

  • 服务端发现模式

负载均衡是由服务端来实现的

 

 

 

 

微服务消费者

  • Apache HttpClient

 

 

  • Ribbon(Spring Cloud de 组件)

基于客户端实现的负载均衡

  • Feign(基于springCloud)

 

 

 

 

 

 

 

 

 

 

 

API 网管的意义

 集合多个API

 统一的API入口

带宽的限制导致Web应用API网管和移动应用API网关不同,移动端对网关有限制

 

 

 

 

 

 

 

 

 

 

 

API网关带来的好处

  • 避免将内部信息泄露给外部
  • 为微服务添加额外的安全层
  • 支持混合通信协议
  • 降低构建微服务的复杂性
  • 微服务模拟虚拟化

API网关的弊端

  • 在架构上需要额外考虑更多编排与管理
  • 路由逻辑配置进行统一的管理。
  • 可能引发单点故障

常见API网关的实现方式

  • nginx

  • Spring Cloud Zuul

 

 

 

 

微服务为什么需要集中化配置

微服务数量多,配置多

手工管理配置繁琐

 

 

 

 

 

 

 

 

 

 

 

 

什么是服务熔断

1、对该服务的调用执行熔断,对于后续请求,不在继续调用该目标服务,而是直接返回,从而可以快速释放资源。

2、保护系统

 

 

 

熔断器的意义

好处:

   系统稳定

减少性能损耗

即时响应

阈值可确定

 

熔断器的功能:

异常处理

日志记录

测试失败的操作

手动复位

并发

加速断路

重试失败请求

 

 

熔断和降级的区别

相似性:

 目的一致 :通过技术手段来保护系统

 表现类似:让用户体会到服务暂时不可达

 粒度一致的 :都是服务级别的

 

主要区别:

触发条件不同  :降级是从整体的负荷来考虑的,降级比如说有100个负载请求,但最后有50个请求,如果实例有10台主机,这个时候实例的主机数也要减少

管理的目标层次不同:降级是从最外围开始的

 

 

 

 

 

自动扩展

 垂直扩展:对应用的升级,更多的是硬件的升级

 

 

水平扩展

 

通过放置更多相同配置的主机来实现水平扩展

 

 

 

自我注册和自我发现

    开启实例之后,如果有一个服务down掉了,然后就会通知在开启一个服务

服务注册器

客户端

微服务实例

 

 

 

 

自动扩展的意义

好处:

   提高了高可用性和容错能力。

增加了可伸缩性

具有最佳的使用率,并节约成本

优先考虑某些服务或者服务组

猜你喜欢

转载自blog.csdn.net/ddhsea/article/details/84340268