微服务的特点与功能
特点
- 按照业务划分服务,单个服务代码量少,业务单一,方便维护
- 每个服务都有自己的独立组件
- 服务之间通过HTTP协议或消息组件MQ通信,都具有容错能力,HTTP的熔断,MQ的死信
- 有服务治理方案,服务之间不耦合,可以方便地加入和剔除服务
- 单个服务可以集群化,并且具有负载均衡的能力
- 整个微服务系统具有完整的安全机制,包括用户验证,权限验证,资源保护
- 具有服务调用链路追踪能力
- 具有实时的日志系统
功能
- 服务的注册与发现
- 服务的负载均衡
- 服务的容错
- 服务的网关
- 服务配置的统一管理
- 链路追踪
- 实时日志
服务注册与发现
服务注册:服务向注册中心注册服务实例,将服务信息(服务名、ip、端口)告知注册中心
服务发现:一个服务通过注册中心获取另一个服务的调用信息
服务既是服务提供者,也是服务消费者;注册中心提供服务健康检查方案,服务定期向注册中心发送请求(心跳),注册中心根据心跳确定服务是否可用,当服务不再发送心跳的时候,注册中心就会将服务下线
服务负载均衡
在服务消费者中集成负载均衡组件,组件从服务消费者获取服务注册列表信息,并且每隔一段时间重新刷新获取该列表。当服务消费者消费服务的时候,通过可配置的策略进行调用。
服务容错
微服务设计中服务调用通常会涉及多服务依赖,如果一个服务的的线程资源被占用,其他依赖于该服务的服务很可能就会收到影响。
熔断机制就是为解决微服务中的雪崩问题而出现的。
一段时间内,服务中某接口响应请求失败的次数达到阈值,熔断器打开,后续对该接口的请求都执行快速失败;
熔断器打开一段时间后,进入半打开状态,将部分对该接口的请求放行,其余请求继续执行快速失败;如果那部分请求成功,则熔断器关闭,否则熔断器打开;
熔断机制:
1.将资源隔离
2.服务降级功能
3.自我修复功能
服务网关
微服务中服务的资源不能通过API接口的方式提供给外界,需要使用网关来聚合服务;网关还能进行用户身份认证,权限认证以防止非法请求;网关可以提供实时监控功能,实时日志输出,对请求进行记录;网关还能进行流量监控,在高流量的情况下,对服务进行降级;
一般网关都会配置负载均衡层,以达到高可用的目的
服务统一配置管理
微服务中服务单元过多,如果按照传统的做法,每个服务的配置都是与服务绑定,那么维护的成本非常高。通常会将所有的服务的配置文件统一管理,即服务统一配置管理;
服务统一配置管理的流程(spring cloud config)
- config server配置服务从配置文件仓库读取配置文件信息,将配置文件信息存放在配置服务内存
- 服务单元启动的时候,指定读取配置服务器获取配置信息
- 当配置服务器上的配置信息修改后,通过API接口的方式通知服务重新获取配置信息
服务链路追踪
微服务中服务接口数量多,当单个接口访问数量非常大,出现异常时,日志是排错的重要手段,但是由于并发访问量非常大,所以很难去查找单次访问的日志顺序(一般使用日志添加唯一键处理),服务众多的情况下,链路追踪就成为非常有效的排错手段