2 分钟
微服务常见依赖的基础服务
监控metric
目标
实现服务监控,监控访问时间、QPS、PCT99、错误率等服务指标。
原理
上报 <metric名, type, metic值>
(当然也可以有附加信息例如tag以方便进行多维分析) 到时序数据库,结合可视化话工具进行可视化,或者进行实时分析监控报警
常见开源方案
Metrics + Influxdb + Grafana
- metrics 一个 Java metric 上报前端,提供多种度量类型
- Influxdb 一个常用的时序数据库,和传统数据库不同,其层级结构如下
- database: 数据库名
- measurement: metic名
- points: 度量值
- time: 时间戳(主索引)
- field: 值
- tags: 附加索引
- Grafana metric可视化工具,支持多种数据源
报警平台
目标
针对开发人员配置的报警规则进行实时监控,并触发报警将报警消息和内容通过IM工具、电话、短信等方式通知业务方。
原理
- 一个规则引擎及例行检测
- 一个消息通知服务
常见开源方案
无
日志服务
目标
提供统一的日志收集存储查询,支持
- 支持调用链视图
- 支持日志搜索
- 支持日志上下文查询
原理
日志统一收集,存储 (log agent、消息总线、存储后端)
常见开源方案
EKL (Elasticsearch、Logstash、Kibana)
Service Mesh
目标
将微服务的服务发现、断路器、RPC协议从微服务中抽离出来。微服务开发更加专注于业务开发,解耦业务与远程调用重试/超时/监控/追踪/服务发现/鉴权。并提供全局视图的可视化管理和治理
原理
- 制定一个统一的标准和规范
- 提供一个agent/框架/工具集提供上述功能
- 对一系列(开源)方案的整合
常见开源方案
Envoy、Istio、Conduit等
负载均衡
目标
面对超大流量,一个实例无法cover,一定是多实例部署。此时需要负载均衡来将流量均匀的分发到每个实例中。
原理
软硬两类: 软件负载均衡(链家)、硬件负载均衡
共有3中方式:
- DNS负载均衡
- 4层负载均衡(TCP/UDP层) LVS
- 7层负载均衡(HTTP层) Nginx
常见开源方案
智能DNS -> LVS -> Nginx
二进制产物版本管理
目标
对源代码的二进制产物进行管理
原理
中心仓库
常见开源方案
- Java Maven 的 nexus
- Python pip
- NodeJS 的 npm
混沌工程
效能平台
部署平台
目标
便捷的上线
原理
一般有两种方式:
- 裸机部署:部署到虚拟机/物理机上的进程
- 容器化部署:部署到容器中
常见的开源方案
- 容器化部署: k8s
- 裸机部署: 使用守护进程的方式管理