微服务

63 阅读1分钟

一、微服务拆分原则

1.按照业务划分,DDD的业务分析,识别核心领域以及api和工具。

2.职责单一原则。每个服务尽量只做一件事情。

3.性能压力比较大功能的服务独立拆分。

4.频繁改动的业务功能独立拆分,尽量减少影响范围。

5.高内聚,低耦合,尽量不要访问其它服务的数据库表。通过API调用。

二、微服务监控

采集->存储->可视化->告警

  1. 采集: 通过Prometheus采集服务指标,如果服务器的指标,则在该机器部署Prometheus的服务,则能被采集数 据。如果是业务数据,比如想采集某个队列的积压的任务,则需要开发一个exporter 这样的数据,提供一个接口,让 Prometheus定时能拉取队列积压的数量。然后再有Prometheus配置告警,或者让k8s自动扩容。

  2. 数据存储 Prometheus 通过tsdb存储数据,SkyWalking存链路数据。

  3. 可视化 grafana对接Prometheus,展示监控面板。 SkyWalking 的ui查看链路数据,查看调用耗时。

  4. 告警 prometheus配置告警规则,比如错误率高于5%,或者调用耗时超过1s

三、微服务日志收集

日志收集的解决方案是ELK,日志输出->采集->存储->查询。

1.日志输出: 统一格式输入,比如json, 包含服务名,时间,traceid,等等关键信息。

2.采用Filebeat采集日志,发送到Elasticsearch。

3.采用Elasticsearch存储日志,支持全文检索,或者用traceid作为字段过滤。

4.用kibana对接Elasticsearch,可视化查询日志。比如订单id=123