微服务(一)

向大佬们学习的第一天 2020.4.15

微服务(一)

微服务架构

微服务架构
微服务架构其实是一种架构风格、将一个单一应用程序分解成一组小型服务的方法,每个小的服务运行在自己的进程中,服务间通信采用轻量级通信机制(http、tcp),这些服务围绕业务能力构建并通过自动部署机制独立部署,这些服务共用一个最小型的集中式管理。服务之间可以用不同语言开发,使用不同数据存储技术。
特征:
每个微服务独立运行在自己的进程里
一系列微服务共同构建起一个完整系统
每个微服务为独立的业务开发,并且只关注某个特定功能
微服务之间通过轻量级通信机制如restful api进行调用
可以使用不同语言进行开发
全自动部署机制

那么:为什么要把系统拆成各个小块呢。
面对一个很复杂的单体应用、修改起来会特别复杂
技术债务,随着时间推移、人员更替、都忘记了
部署频率低
可靠性差

springCould介绍

springCould介绍
springCould是一个基于Springboot实现的微服务架构开发工具,为微服务架构中涉及的配置管理,服务治理,断路器,智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供一种简单的开发方式
特征:
开箱即用
约定优于配置
适用各种环境
隐藏组件复杂性,提供声明式、无xml配置方式
轻量级组件

注册中心:Eureka介绍

注册中心:Eureka介绍
微服务(一)
这图很好的解释了注册中心是干嘛用的:
1、服务提供者将服务注册到注册中心
2、服务消费者通过注册中心查找服务
3、查找到服务后进行调用(这里就是无需硬编码url的解决方案)
4、服务的消费者与服务注册中心保持心跳连接,一旦服务提供者的地址发生变更时,注册中心会通知服务消费者

Eureka(注册中心)
是NetFlix开源服务发现组件,本身是一个基于REST的服务,包含Server和Client两部分,SpringCould将它集成在子项目SpringCouldNetFlix中,从而实现微服务的注册与发现
Eureka包括 Eureka Server和Eureka Client
Eureka Server 提供服务注册,将各个节点的信息存储到服务注册表中
Eureka Client 是一个java客户端,用于简化与Eureka Server的交互
Eureka Server的默认心跳周期为30s,在3个心跳周期内如果没有接受到节点的心跳,就会移除该心跳
Eureka Server之间通过复制的方式完成数据同步,Eureka还提供客户端缓存,确保系统的高可用性和灵活性。
Eureka Server还可以有多个注册中心,以集群的方式提高系统可用性

负载均衡:Ribbon

负载均衡:Ribbon
负载均衡的作用就是当 提供者在Eureka注册中心注册了多个服务来保证系统的高可用性,那么这么多个同一功能的服务怎么被调用呢,就用到Ribbon、
Ribbon是NetFlix发布的负载均衡器,用于控制http和tpc客户端行为,Ribbon可基于各种负载均衡算法自动帮助消费者进行请求(轮询、随机、自定义)
微服务(一)

容错保护:Hystrix

容错保护:Hystrix
场景:一个服务单元宕机、导致一系列服务单元都故障、最终导致整个系统瘫痪。也就是俗称的“雪崩效应”
SpringCould Hystrix 实现断路器、线程隔离等一系列服务保护功能,也是基于NetFlix开源框架实现, 该框架通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力,
Hystrix 具备服务降级、服务熔断、线程和信号隔离、请求缓存、服务监控等功能
特征:
包裹请求:控制远程访问的节点
线程隔离:Hystrix 为每个依赖都维护一个小型线程池、
监控:
跳闸机制:当某个服务错误率超过一定阈值、Hystrix可以自动跳闸、停止该节点请求
雪崩效应
微服务(一)