微服务是一种架构风格,也是一种服务
微服务的颗粒比较大,一个大型复杂软件应由多个 微服务组成
它采用UNIX的设计哲学,每种服务只做一件事,是一种松耦合的能够被独立开发和部署的无状态服务(独立扩展、升级和可替换)
一、微服务的概念
微服务架构图:
微服务的好处:
1、技术异构性:如果一个系统由多种服务组成,每个服务可以使用自己最适合的技术,不一样也没关系。
2、弹性:如果系统其中一个组件坏了,其他的组件不会因此受影响。
3、扩展:可以针对系统的服务层级进行扩展。
4、简化部署:各个服务的部署是独立的。
微服务的缺点:
1、运维成本升高。本来只需要关注一个应用,现在需要关注更多的应用。
2、DevOps。需要保证一个数据库可用和一整个集群可用,DevOps要求全栈式人才。
3、隐式接口。改动某个程序的时候,调用它的某个其他程序也要改,这就比较麻烦。
4、重复劳动。不同程序可能有大量重复性的功能。
5、分布式系统 复杂性。微服务通过RESTful API将不同服务联系起来。
二、SpringCloud介绍
1、集成了很多组件。可以关注常用的几个
服务发现:Netflix EureKa
负载均衡:Netflix Ribbon
断路器:Netflix Hystrix
服务网关:Netflix Zuul
分布式配置:Spring Cloud Config
2、相关组件架构
3、Eureka用来做服务的注册和调用
对于微服务之间错综复杂的调用关系,通过Eureka来管理,可以让每个服务之间不用关心如何调用的问题,专注于自己的业务功能的实现。Eureka统一管理服务,因此他会有一些特点:
1、服务需要有统一的名称并且是唯一标识。
2、服务下有多个实例,每个实例也有一个自己的唯一的实例id。
3、Eureka Client 通过向 Eureka Serve发送心跳 (默认30秒)来续约服务的,如果无服务,会在大概90秒内从注册表将该服务删除(可以参考电脑运行服务的情况来理解啊)。
4、Eureka Server
提供服务注册、服务信息、服务管理、信息同步
5、Eureka Client
Eureka Client 是一个Java客户端,用于简化交互,Client会拉取、更新和缓存Server的所有信息,在微服务启动之后,会周期性地发送心跳续约信息。
6、服务续约、下线、剔除
(先自己理解一下这几个词是什么意思,然后解释一些专业名词)
服务续约---->每隔一段时间发送一次renew请求(心跳)告诉服务还活着
服务下线---->Application停止之后,从注册表删除
服务剔除---->使用Evict将没有续约的删除。
服务通信方式---->使用标准的REST通信方式,因此它并不只是Java平台,其他服务也能融合进来(★★★★★)
自我保护----->当心跳15分钟内低于85%,就会触发保护