最近一直在学习微服务,毕竟现在大家都在说分布式,集群等,分布式和集群的基本前提是微服务,所以有比较掌握微服务的基本原理。
先看一下微服务架构图,如下图:
微服务主要由以下几个基本组件:
服务描述、注册中心、服务框架、服务监控、服务追踪、服务治理。
1、服务描述
服务调用首先要解决的问题是服务如何对外描述。常用的服务描述包括RESTful API、XML配置已及IDL文件。
通常情况下,如果企业内部之间的服务,都是Java语言,选择XML配置最简单。如果内部存在多个服务,并且服务采用的是不同语言平台,建议使用IDL文件方式进行描述服务。如果还存在对外开放服务调用的话,使用RESTful API方式更加通用。
服务描述方式 | 使用场景 | 缺点 |
RTSTful API | 跨语言平台,组织内外皆可使用 | 使用了HTTP作为通讯协议,相比于TCP协议,性能较差 |
XML配置 | Java 平台,一般用于组织内部 | 不支持跨语言平台 |
IDL | 跨语言平台,组织内外皆可使用 | 修改或者删除PB字段不能向前兼容 |
2、注册中心
注册中心解决服务的发布和订阅。服务提供者将自己提供的服务以及地址登记到注册中心,服务消费者则从注册中心查询所需调用的服务地址,发起请求。
3、服务框架
发起调用之前,需要解决问题:通讯协议?数据传输方式?数据压缩格式?
4、服务监控
监控服务调用情况。需要指标收集、数据处理、数据展示。
5、服务追踪
记录服务调用经过的每一层链路,进行问题追踪和故障定位。
服务追踪原理:服务消费者发起调用,本地按照一定的规则生成一个requestid,发起调用时,将requestid当作请求参数的一部分,传递给服务提供者;服务提供者接收请求,记录这次请求的requestid,然后处理请求。如果服务提供者还要继续请求其他服务,还会再本地生成一个自己的requestid,然后把两个requestid当作请求参数继续传递下去。
6、服务治理
服务监控发现问题,服务追踪定位问题,服务治理解决问题。
生成环境常见故障:单机故障、单IDC故障、依赖服务不可用。