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